MariaDB
 sql >> Database >  >> RDS >> MariaDB

MariaDB e dati esterni

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.