MariaDB е разклонение на MySQL, което първоначално е получено от версията 5.1 на MySQL. За разлика от MySQL, MariaDB може да използва външни данни, съхранявани в бази данни, различни от MariaDB, сякаш данните се съхраняват в стандартна таблица на MariaDB. Данните не се зареждат в MariaDB. За да работи с външни данни, MariaDB използва механизма за съхранение CONNECT. Тази машина за съхранение беше въведена в MariaDB 10.0.
Двигателят за съхранение CONNECT е включен както с Windows, така и с Linux версията на базата данни, въпреки че не се зарежда по подразбиране. Двигателят за съхранение CONNECT може да използва ODBC за работа с външни данни. ODBC е неутрален към базата данни интерфейс, който позволява на ODBC съвместими приложения, като например механизма за съхранение CONNECT, да работят с всяка база данни, за която е наличен ODBC драйвер. ODBC превежда заявките за данни на приложението в нещо, което целевата база данни разбира.
ODBC има два компонента:ODBC драйвер и ODBC Driver Manager. ODBC драйверът е специфичен за база данни, т.е. ODBC драйвер на Microsoft Access ще разговаря само с база данни на Microsoft Access. ODBC Driver Manager е интерфейсът между устройството за съхранение CONNECT и ODBC драйвера. Мениджърът на драйвери е отговорен за зареждането на ODBC драйвера, като изолира приложението (т.е. механизма за съхранение) от компонента, който взаимодейства с базата данни. Тази архитектура позволява на MariaDB да се свързва с различни бази данни, без да се правят промени в MariaDB.
В Windows Microsoft предоставя ODBC Driver Manager с операционната система и това е тази, която CONNECT системата за съхранение използва на тази платформа.
В Linux механизмът за съхранение CONNECT използва мениджъра на драйвери unixODBC. Този мениджър на драйвери обикновено е наличен с операционната система, въпреки че може да не е инсталиран по подразбиране. Всички драйвери на Easysoft ODBC за не-Windows платформи включват unixODBC Driver Manager.
За да обобщим, компонентите, необходими за свързване на MariaDB с външни данни чрез ODBC, са:
За да изпробваме механизма за съхранение CONNECT, използвахме нашия SQL Server и Access ODBC драйвери с MariaDB на Linux и нашия Salesforce ODBC драйвер с MariaDB на Windows.
Забележка Ако използвате 64-битова версия MariaDB, трябва да използвате 64-битов ODBC драйвер. Ако използвате 32-битова версия MariaDB, трябва да използвате 32-битов ODBC драйвер.
Зареждане на Connect Storage Engine
Независимо дали използвате MariaDB на Linux или Windows, същата команда е необходима за зареждане на двигателя за съхранение CONNECT. В клиентска обвивка на MySQL въведете:
INSTALL SONAME 'ha_connect';
Ако приемем, че имате инсталиран подходящия ODBC драйвер за вашата целева база данни и сте конфигурирали източник на ODBC данни, вече можете да интегрирате външни данни с MariaDB.
В Linux използвахме копие на unixODBC Driver Manager, който беше включен в нашите драйвери, и затова трябваше да настроим средата, така че тези библиотеки на Driver Manager да бъдат заредени.
# /etc/init.d/mariadb stop # export LD_LIBRARY_PATH=/usr/local/easysoft/unixODBC/lib:$LD_LIBRARY_PATH # ldd /opt/mariadb/lib/plugin/ha_connect.so | grep odbc libodbc.so.1 => /usr/local/easysoft/unixODBC/lib/libodbc.so.1 (0x00007f2a06ce8000) # /etc/init.d/mariadb start
Пример:Свържете MariaDB на Linux към Microsoft Access
Двигателят за съхранение CONNECT ви позволява да създадете таблица CONNECT в MariaDB. Типът таблица CONNECT указва как ще се осъществява достъп до външните данни. Използваме ODBC драйвер, за да се свържем с Access и затова правилният тип таблица за използване е „ODBC“. Създадохме ODBC източник на данни, който се свързва с базата данни на Northwind и това са данните, до които ще имаме достъп от MariaDB. Източникът на данни се нарича "Northwind" и трябва да го включим в нашата дефиниция на таблица CONNECT:
$ /opt/mariadb/bin/mysql --socket=/opt/mariadb-data/mariadb.sock MariaDB [(none)]> CREATE DATABASE MDB; MariaDB [MDB]> USE MDB; MariaDB [MDB]> INSTALL SONAME 'ha_connect'; MariaDB [MDB]> CREATE TABLE Customers engine=connect table_type=ODBC Connection='DSN=ACCESS_NORTHWIND;'; MariaDB [MDB]> SELECT CompanyName FROM Customers WHERE CustomerID = 'VICTE'; +----------------------+ | CompanyName | +----------------------+ | Victuailles en stock | +----------------------+ 1 row in set (0.02 sec)
Машината за съхранение може автоматично да открие структурата на целевата таблица и така да посочи имената на колоните/типовете данни в CREATE TABLE
изявлението не е задължително.
Пример:Свържете MariaDB на Linux към Microsoft SQL Server
Този пример използва tabname
опция за заобикаляне на разликата между MariaDB и SQL Server. Искаме да извлечем някои данни на AdventureWorks, съхранявани в Person.Address
маса. Въпреки това, MariaDB няма идея за схема на таблица и затова ще променим името на таблицата на "PersonAddress" в MariaDB. Посочваме действителното име на таблицата с tabname
, така че ODBC драйверът на SQL Server може да предаде името на таблицата, което SQL Server разпознава.
$ /opt/mariadb/bin/mysql --socket=/opt/mariadb-data/mariadb.sock MariaDB [(none)]> CREATE DATABASE MSSQL; MariaDB [(none)]> USE MSSQL; MariaDB [MSSQL]> INSTALL SONAME 'ha_connect'; MariaDB [MSSQL]> CREATE TABLE PersonAddress engine=connect table_type=ODBC tabname='Person.Address' Connection='DSN=SQLSERVER_ADVENTUREWORKS;'; ERROR 1105 (HY000): Unsupported SQL type -11 MariaDB [MSSQL]> \! grep -- -11 /usr/local/easysoft/unixODBC/include/sqlext.h #define SQL_GUID (-11) MariaDB [MSSQL]> CREATE TABLE PersonAddress ( AddressID int, AddressLine1 varchar(60), AddressLine2 varchar(60), City varchar(30), StateProvinceID int, PostalCode varchar(15), rowguid varchar(64), ModifiedDate datetime ) engine=connect table_type=ODBC tabname='Person.Address' Connection='DSN=SQLSERVER_SAMPLE;'; MariaDB [MSSQL]> SELECT City FROM PersonAddress WHERE AddressID = 32521; +-----------+ | City | +-----------+ | Sammamish | +-----------+
Тъй като няма директен еквивалент за типа данни на SQL Server uniqueidentifier
. Трябва да съпоставим този тип в колоната rowguid към MariaDB VARCHAR
Тип. Въпреки че това е единствената проблемна колона, трябва да включим останалите в CREATE TABLE
изявление. В противен случай таблицата ще съдържа само колоната rowguid.
Пример:Свържете MariaDB на Windows към Salesforce
Ние използваме 64-битова версия на MariaDB и затова трябваше да конфигурираме 64-битов ODBC източник на данни за нашия целеви екземпляр на Salesforce. (В противен случай опитът ни да създадем тип таблица CONNECT ще се провали с грешка "Архитектурно несъответствие".) За да направим това, използвахме 64-битовата версия на Microsoft ODBC Data Source Administrator, която се намира в контролния панел. (В някои версии на Windows има както 32-битова, така и 64-битова версия на ODBC Data Source Administrator, разположена в контролния панел, но тяхната архитектура е ясно обозначена, ако това е така.)
Нашата целева "таблица" на Salesforce съдържа NVARCHAR
колони, които механизмът за съхранение CONNECT обработва като VARCHAR
с. CREATE TABLE
изявление генерира предупреждения в този смисъл. („Идентификаторът на колоната е широки знаци“ и т.н.)
CREATE DATABASE SALESFORCE; USE SALESFORCE; INSTALL SONAME 'ha_connect'; CREATE TABLE Product2 engine=connect table_type=ODBC Connection='DSN=64-bit Salesforce System ODBC DSN;'; SELECT Description FROM Product2 ODBC Driver for SQL Server, SQL Azure ODBC Driver for Salesforce.com, Force.com, Database.com
Други опции за свързване на MySQL/MariaDB
Име | Описание |
---|---|
MariaDB конектор/ODBC | Това е ODBC драйвер за MariaDB и е наличен както за Windows, така и за Linux платформи. Той позволява на ODBC съвместими приложения като Microsoft Excel да имат достъп до данни, съхранявани в MariaDB. |
MySQL конектор/ODBC | Това е ODBC драйвер за MySQL и е наличен за платформи Windows, Linux, UNIX и OS X. Той позволява на ODBC съвместими приложения като Microsoft Excel да имат достъп до данни, съхранявани в MySQL. |
Обединена машина на MySQL | Това е подобно на механизма за съхранение CONNECT, но поддържа само данни, съхранявани във външни MySQL бази данни. |