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 бази данни. |