MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

MariaDB et données externes

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.