MariaDB est un fork MySQL, initialement dérivé de la version 5.1 de MySQL. Contrairement à MySQL, MariaDB peut utiliser des données externes stockées dans des bases de données non-MariaDB comme si les données étaient stockées dans une table MariaDB standard. Les données ne sont pas chargées dans MariaDB. Pour travailler avec des données externes, MariaDB utilise le moteur de stockage CONNECT. Ce moteur de stockage a été introduit dans MariaDB 10.0.
Le moteur de stockage CONNECT est inclus dans les versions Windows et Linux de la base de données, bien qu'il ne soit pas chargé par défaut. Le moteur de stockage CONNECT peut utiliser ODBC pour travailler avec des données externes. ODBC est une interface indépendante de la base de données qui permet aux applications compatibles ODBC telles que le moteur de stockage CONNECT de fonctionner avec n'importe quelle base de données pour laquelle un pilote ODBC est disponible. ODBC traduit les requêtes de données de l'application en quelque chose que la base de données cible comprend.
ODBC a deux composants :le pilote ODBC et le gestionnaire de pilotes ODBC. Le pilote ODBC est spécifique à la base de données, c'est-à-dire qu'un pilote ODBC Microsoft Access ne communiquera qu'avec une base de données Microsoft Access. Le gestionnaire de pilotes ODBC est l'interface entre le moteur de stockage CONNECT et le pilote ODBC. Le gestionnaire de pilotes est responsable du chargement du pilote ODBC, isolant l'application (c'est-à-dire le moteur de stockage) du composant qui interagit avec la base de données. Cette architecture permet à MariaDB de se connecter à différentes bases de données sans qu'aucune modification ne soit apportée à MariaDB.
Sous Windows, Microsoft fournit un gestionnaire de pilotes ODBC avec le système d'exploitation, et c'est celui que le moteur de stockage CONNECT utilise sur cette plate-forme.
Sous Linux, le moteur de stockage CONNECT utilise le gestionnaire de pilotes unixODBC. Ce gestionnaire de pilotes est généralement disponible avec le système d'exploitation, mais peut ne pas être installé par défaut. Tous les pilotes ODBC Easysoft pour les plates-formes non Windows incluent le gestionnaire de pilotes unixODBC.
Pour résumer, les composants requis pour connecter MariaDB à des données externes en utilisant ODBC sont :
Pour tester le moteur de stockage CONNECT, nous avons utilisé nos pilotes SQL Server et Access ODBC avec MariaDB sous Linux et notre pilote ODBC Salesforce avec MariaDB sous Windows.
Remarque Si vous utilisez une version 64 bits de MariaDB, vous devez utiliser un pilote ODBC 64 bits. Si vous utilisez une version 32 bits de MariaDB, vous devez utiliser un pilote ODBC 32 bits.
Charger le moteur de stockage Connect
Que vous exécutiez MariaDB sous Linux ou Windows, la même commande est requise pour charger le moteur de stockage CONNECT. Dans un shell client MySQL, tapez :
INSTALL SONAME 'ha_connect';
En supposant que vous ayez installé le pilote ODBC approprié pour votre base de données cible et que vous ayez configuré une source de données ODBC, vous pouvez désormais intégrer des données externes à MariaDB.
Sous Linux, nous utilisions une copie du gestionnaire de pilotes unixODBC qui était inclus avec nos pilotes, et nous avons donc dû configurer l'environnement pour que ces bibliothèques du gestionnaire de pilotes soient chargées.
# /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
Exemple :Connecter MariaDB sur Linux à Microsoft Access
Le moteur de stockage CONNECT vous permet de créer une table CONNECT dans MariaDB. Le type de table CONNECT spécifie comment les données externes seront accessibles. Nous utilisons un pilote ODBC pour nous connecter à Access et le type de table correct à utiliser est donc "ODBC". Nous avons créé une source de données ODBC qui se connecte à la base de données Northwind, et ce sont les données auxquelles nous accéderons depuis MariaDB. La source de données s'appelle "Northwind" et nous devons l'inclure dans notre définition de table 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)
Le moteur de stockage peut détecter automatiquement la structure de la table cible et ainsi spécifier les noms de colonne/types de données dans le CREATE TABLE
déclaration n'est pas obligatoire.
Exemple :Connecter MariaDB sur Linux à Microsoft SQL Server
Cet exemple utilise le tabname
option pour contourner une différence entre MariaDB et SQL Server. Nous voulons récupérer certaines données AdventureWorks stockées dans le Person.Address
table. Cependant, MariaDB n'a pas l'idée d'un schéma de table, et nous allons donc changer le nom de la table en "PersonAddress" dans MariaDB. Nous spécifions le nom réel de la table avec le tabname
, afin que le pilote ODBC de SQL Server puisse transmettre le nom de table reconnu par 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 | +-----------+
Parce qu'il n'y a pas d'équivalent direct pour le type de données SQL Server uniqueidentifier
. Nous devons mapper ce type dans la colonne rowguid à un MariaDB VARCHAR
taper. Même si c'est la seule colonne problématique, nous devons inclure les autres dans le CREATE TABLE
déclaration. Sinon, la table ne contiendrait que la colonne rowguid.
Exemple :Connecter MariaDB sous Windows à Salesforce
Nous utilisons une version 64 bits de MariaDB et nous devions donc configurer une source de données ODBC 64 bits pour notre instance Salesforce cible. (Sinon, notre tentative de création d'un type de table CONNECT échouera avec une erreur "Incompatibilité d'architecture".) Pour ce faire, nous avons utilisé la version 64 bits de Microsoft ODBC Data Source Administrator, qui se trouve dans le Panneau de configuration. (Sur certaines versions de Windows, il existe à la fois une version 32 bits et une version 64 bits de l'administrateur de source de données ODBC situé dans le Panneau de configuration, mais leur architecture est clairement indiquée si tel est le cas.)
Notre "table" Salesforce cible contient NVARCHAR
colonnes, que le moteur de stockage CONNECT gère comme VARCHAR
s. Le CREATE TABLE
L'instruction génère des avertissements à cet effet. ("L'ID de colonne est composé de caractères larges", et ainsi de suite.)
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
Autres options de connectivité MySQL/MariaDB
Nom | Description |
---|---|
Connecteur MariaDB/ODBC | Il s'agit d'un pilote ODBC pour MariaDB et est disponible pour les plates-formes Windows et Linux. Il permet aux applications compatibles ODBC telles que Microsoft Excel d'accéder aux données stockées dans MariaDB. |
Connecteur MySQL/ODBC | Il s'agit d'un pilote ODBC pour MySQL et est disponible pour les plates-formes Windows, Linux, UNIX et OS X. Il permet aux applications compatibles ODBC telles que Microsoft Excel d'accéder aux données stockées dans MySQL. |
Moteur fédéré MySQL | Ceci est similaire au moteur de stockage CONNECT, mais il ne prend en charge que les données stockées dans des bases de données MySQL externes. |