MariaDB è un fork di MySQL, inizialmente derivato dalla versione 5.1 di MySQL. A differenza di MySQL, MariaDB può utilizzare dati esterni archiviati in database non MariaDB come se i dati fossero archiviati in una tabella MariaDB standard. I dati non vengono caricati in MariaDB. Per lavorare con dati esterni, MariaDB utilizza il motore di archiviazione CONNECT. Questo motore di archiviazione è stato introdotto in MariaDB 10.0.
Il motore di archiviazione CONNECT è incluso con la versione Windows e Linux del database, sebbene non sia caricato per impostazione predefinita. Il motore di archiviazione CONNECT può utilizzare ODBC per lavorare con dati esterni. ODBC è un'interfaccia indipendente dal database che consente alle applicazioni compatibili con ODBC come il motore di archiviazione CONNECT di funzionare con qualsiasi database per il quale è disponibile un driver ODBC. ODBC traduce le query di dati dell'applicazione in qualcosa che il database di destinazione comprende.
ODBC ha due componenti:il driver ODBC e ODBC Driver Manager. Il driver ODBC è specifico del database, ovvero un driver ODBC di Microsoft Access parlerà solo con un database di Microsoft Access. ODBC Driver Manager è l'interfaccia tra il motore di archiviazione CONNECT e il driver ODBC. Il Driver Manager è responsabile del caricamento del driver ODBC, isolando l'applicazione (ovvero lo storage engine) dal componente che interagisce con il database. Questa architettura consente a MariaDB di connettersi a database diversi senza che vengano apportate modifiche a MariaDB.
Su Windows, Microsoft fornisce un ODBC Driver Manager con il sistema operativo, e questo è quello utilizzato dal motore di archiviazione CONNECT su questa piattaforma.
Su Linux, il motore di archiviazione CONNECT utilizza Gestione driver unixODBC. Questo Driver Manager è solitamente disponibile con il sistema operativo, anche se potrebbe non essere installato per impostazione predefinita. Tutti i driver Easysoft ODBC per piattaforme non Windows includono unixODBC Driver Manager.
Per riassumere, i componenti necessari per connettere MariaDB a dati esterni tramite ODBC sono:
Per provare il motore di archiviazione CONNECT, abbiamo utilizzato i nostri driver ODBC di SQL Server e Access con MariaDB su Linux e il nostro driver ODBC Salesforce con MariaDB su Windows.
Nota Se stai usando una versione a 64 bit MariaDB devi usare un driver ODBC a 64 bit. Se stai usando una versione a 32 bit MariaDB devi usare un driver ODBC a 32 bit.
Caricamento del Connect Storage Engine
Indipendentemente dal fatto che tu stia eseguendo MariaDB su Linux o Windows, lo stesso comando è necessario per caricare il motore di archiviazione CONNECT. In una shell client MySQL, digita:
INSTALL SONAME 'ha_connect';
Supponendo che tu abbia installato il driver ODBC appropriato per il tuo database di destinazione e che tu abbia configurato un'origine dati ODBC, ora puoi integrare i dati esterni con MariaDB.
Su Linux, stavamo utilizzando una copia di unixODBC Driver Manager incluso con i nostri driver, quindi abbiamo dovuto impostare l'ambiente in modo che le librerie di Driver Manager venissero caricate.
# /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
Esempio:connetti MariaDB su Linux a Microsoft Access
Il motore di archiviazione CONNECT consente di creare una tabella CONNECT in MariaDB. Il tipo di tabella CONNECT specifica la modalità di accesso ai dati esterni. Stiamo utilizzando un driver ODBC per connetterci ad Access e quindi il tipo di tabella corretto da utilizzare è "ODBC". Abbiamo creato un'origine dati ODBC che si connette al database Northwind e questi sono i dati a cui accederemo da MariaDB. L'origine dati si chiama "Northwind" e dobbiamo includerla nella definizione della nostra tabella 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)
Il motore di archiviazione può rilevare automaticamente la struttura della tabella di destinazione e quindi specificare i nomi delle colonne/i tipi di dati in CREATE TABLE
la dichiarazione non è obbligatoria.
Esempio:connetti MariaDB su Linux a Microsoft SQL Server
Questo esempio usa il tabname
opzione per aggirare una differenza tra MariaDB e SQL Server. Vogliamo recuperare alcuni dati AdventureWorks memorizzati nel Person.Address
tavolo. Tuttavia, MariaDB non ha l'idea di uno schema di tabella, quindi cambieremo il nome della tabella in "PersonAddress" in MariaDB. Specifichiamo il nome effettivo della tabella con il tabname
, in modo che il driver ODBC di SQL Server possa trasmettere il nome della tabella riconosciuto da 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 | +-----------+
Perché non esiste un equivalente diretto per il tipo di dati di SQL Server uniqueidentifier
. Dobbiamo mappare questo tipo nella colonna rowguid su un MariaDB VARCHAR
genere. Anche se questa è l'unica colonna problematica, dobbiamo includere le altre in CREATE TABLE
dichiarazione. In caso contrario, la tabella conterrebbe solo la colonna rowguid.
Esempio:connetti MariaDB su Windows a Salesforce
Utilizziamo una versione a 64 bit di MariaDB e quindi dovevamo configurare un'origine dati ODBC a 64 bit per la nostra istanza Salesforce di destinazione. (Altrimenti il nostro tentativo di creare un tipo di tabella CONNECT fallirà con un errore di "mancata corrispondenza dell'architettura".) A tale scopo, abbiamo utilizzato la versione a 64 bit di Microsoft ODBC Data Source Administrator, che si trova nel Pannello di controllo. (Su alcune versioni di Windows, esiste sia una versione a 32 bit che una a 64 bit di ODBC Data Source Administrator che si trova nel Pannello di controllo, tuttavia la loro architettura è chiaramente etichettata se questo è il caso.)
La nostra "tabella" Salesforce di destinazione contiene NVARCHAR
colonne, che il motore di archiviazione CONNECT gestisce come VARCHAR
S. Il CREATE TABLE
istruzione genera avvisi in tal senso. ("L'ID colonna è composto da caratteri larghi" e così via.)
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
Altre opzioni di connettività MySQL/MariaDB
Nome | Descrizione |
---|---|
Connettore MariaDB/ODBC | Questo è un driver ODBC per MariaDB ed è disponibile per piattaforme Windows e Linux. Consente alle applicazioni compatibili con ODBC come Microsoft Excel di accedere ai dati archiviati in MariaDB. |
Connettore MySQL/ODBC | Questo è un driver ODBC per MySQL ed è disponibile per piattaforme Windows, Linux, UNIX e OS X. Consente alle applicazioni compatibili con ODBC come Microsoft Excel di accedere ai dati archiviati in MySQL. |
Motore federato MySQL | È simile al motore di archiviazione CONNECT, tuttavia supporta solo i dati archiviati in database MySQL esterni. |