MariaDB
 sql >> Datenbank >  >> RDS >> MariaDB

MariaDB &externe Daten

MariaDB ist ein MySQL-Fork, der ursprünglich von der Version 5.1 von MySQL abgeleitet wurde. Im Gegensatz zu MySQL kann MariaDB externe Daten verwenden, die in Nicht-MariaDB-Datenbanken gespeichert sind, als ob die Daten in einer Standard-MariaDB-Tabelle gespeichert wären. Die Daten werden nicht in MariaDB geladen. Um mit externen Daten zu arbeiten, verwendet MariaDB die CONNECT-Speicher-Engine. Diese Speicher-Engine wurde in MariaDB 10.0 eingeführt.

Die CONNECT-Speicher-Engine ist sowohl in der Windows- als auch in der Linux-Version der Datenbank enthalten, obwohl sie standardmäßig nicht geladen wird. Die CONNECT-Speicher-Engine kann ODBC verwenden, um mit externen Daten zu arbeiten. ODBC ist eine datenbankneutrale Schnittstelle, die es ODBC-konformen Anwendungen wie der CONNECT-Speicher-Engine ermöglicht, mit jeder Datenbank zu arbeiten, für die ein ODBC-Treiber verfügbar ist. ODBC übersetzt die Datenabfragen der Anwendung in etwas, das die Zieldatenbank versteht.

ODBC besteht aus zwei Komponenten:dem ODBC-Treiber und dem ODBC-Treiber-Manager. Der ODBC-Treiber ist datenbankspezifisch, d. h. ein Microsoft Access ODBC-Treiber kommuniziert nur mit einer Microsoft Access-Datenbank. Der ODBC-Treiber-Manager ist die Schnittstelle zwischen der CONNECT-Speicher-Engine und dem ODBC-Treiber. Der Treiber-Manager ist für das Laden des ODBC-Treibers verantwortlich und isoliert die Anwendung (d. h. die Speicher-Engine) von der Komponente, die mit der Datenbank interagiert. Diese Architektur ermöglicht es MariaDB, sich mit verschiedenen Datenbanken zu verbinden, ohne dass Änderungen an MariaDB vorgenommen werden.

Unter Windows stellt Microsoft einen ODBC-Treibermanager mit dem Betriebssystem bereit, und dieser wird von der CONNECT-Speicher-Engine auf dieser Plattform verwendet.

Unter Linux verwendet die CONNECT-Speicher-Engine den unixODBC-Treiber-Manager. Dieser Treibermanager ist normalerweise mit dem Betriebssystem verfügbar, wird jedoch möglicherweise nicht standardmäßig installiert. Alle Easysoft ODBC-Treiber für Nicht-Windows-Plattformen enthalten den unixODBC-Treiber-Manager.

Zusammenfassend sind die Komponenten, die erforderlich sind, um MariaDB über ODBC mit externen Daten zu verbinden:

Um die CONNECT-Speicher-Engine auszuprobieren, haben wir unsere SQL Server- und Access-ODBC-Treiber mit MariaDB unter Linux und unseren Salesforce-ODBC-Treiber mit MariaDB unter Windows verwendet.

Hinweis Wenn Sie eine 64-Bit-Version von MariaDB verwenden, müssen Sie einen 64-Bit-ODBC-Treiber verwenden. Wenn Sie eine 32-Bit-Version von MariaDB verwenden, müssen Sie einen 32-Bit-ODBC-Treiber verwenden.

Laden der Connect Storage Engine

Unabhängig davon, ob Sie MariaDB unter Linux oder Windows ausführen, ist derselbe Befehl erforderlich, um die CONNECT-Speicher-Engine zu laden. Geben Sie in einer MySQL-Client-Shell Folgendes ein:

INSTALL SONAME 'ha_connect';

Vorausgesetzt, Sie haben den passenden ODBC-Treiber für Ihre Zieldatenbank installiert und eine ODBC-Datenquelle konfiguriert, können Sie jetzt externe Daten mit MariaDB integrieren.

Unter Linux verwendeten wir eine Kopie des unixODBC-Treibermanagers, der in unseren Treibern enthalten war, und mussten daher die Umgebung so einstellen, dass diese Treibermanager-Bibliotheken geladen wurden.

# /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

Beispiel:MariaDB unter Linux mit Microsoft Access verbinden

Mit der CONNECT-Speicher-Engine können Sie eine CONNECT-Tabelle in MariaDB erstellen. Der Tabellentyp CONNECT gibt an, wie auf die externen Daten zugegriffen wird. Wir verwenden einen ODBC-Treiber, um eine Verbindung zu Access herzustellen, daher ist der richtige zu verwendende Tabellentyp "ODBC". Wir haben eine ODBC-Datenquelle erstellt, die eine Verbindung zur Northwind-Datenbank herstellt, und auf diese Daten greifen wir von MariaDB zu. Die Datenquelle heißt "Northwind" und wir müssen das in unsere CONNECT-Tabellendefinition aufnehmen:

$ /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)

Die Speicher-Engine kann die Zieltabellenstruktur automatisch erkennen und so die Spaltennamen / Datentypen in CREATE TABLE angeben Anweisung ist nicht obligatorisch.

Beispiel:MariaDB unter Linux mit Microsoft SQL Server verbinden

Dieses Beispiel verwendet den tabname Option, um einen Unterschied zwischen MariaDB und SQL Server zu umgehen. Wir möchten einige AdventureWorks-Daten abrufen, die in Person.Address gespeichert sind Tisch. MariaDB hat jedoch nicht die Idee eines Tabellenschemas, und deshalb werden wir den Namen der Tabelle in MariaDB in „PersonAddress“ ändern. Den eigentlichen Tabellennamen geben wir mit dem tabname an , sodass der SQL Server-ODBC-Treiber den Tabellennamen weitergeben kann, den SQL Server erkennt.

$ /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 |
+-----------+

Weil es keine direkte Entsprechung für den SQL Server-Datentyp uniqueidentifier gibt . Wir müssen diesen Typ in der rowguid-Spalte einem MariaDB VARCHAR zuordnen Typ. Obwohl dies die einzige problematische Spalte ist, müssen wir die anderen in CREATE TABLE aufnehmen Erklärung. Andernfalls würde die Tabelle nur die rowguid-Spalte enthalten.

Beispiel:MariaDB unter Windows mit Salesforce verbinden

Wir verwenden eine 64-Bit-Version von MariaDB und mussten daher eine 64-Bit-ODBC-Datenquelle für unsere Salesforce-Zielinstanz konfigurieren. (Andernfalls schlägt unser Versuch, einen CONNECT-Tabellentyp zu erstellen, mit dem Fehler „Architecture mismatch“ fehl.) Dazu haben wir die 64-Bit-Version von Microsoft ODBC Data Source Administrator verwendet, die sich in der Systemsteuerung befindet. (Bei einigen Versionen von Windows gibt es sowohl eine 32-Bit- als auch eine 64-Bit-Version des ODBC-Datenquellen-Administrators in der Systemsteuerung, ihre Architektur ist jedoch in diesem Fall deutlich gekennzeichnet.)

Unsere Ziel-Salesforce-"Tabelle" enthält NVARCHAR Spalten, die von der CONNECT-Speicher-Engine als VARCHAR behandelt werden s. Die CREATE TABLE -Anweisung generiert diesbezügliche Warnungen. ("Spalten-ID besteht aus Breitzeichen", usw.)

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

Andere MySQL/MariaDB-Konnektivitätsoptionen

Name Beschreibung
MariaDB-Konnektor/ODBC Dies ist ein ODBC-Treiber für MariaDB und ist sowohl für Windows- als auch für Linux-Plattformen verfügbar. Es ermöglicht ODBC-kompatiblen Anwendungen wie Microsoft Excel den Zugriff auf Daten, die in MariaDB gespeichert sind.
MySQL-Connector/ODBC Dies ist ein ODBC-Treiber für MySQL und ist für Windows-, Linux-, UNIX- und OS X-Plattformen verfügbar. Es ermöglicht ODBC-kompatiblen Anwendungen wie Microsoft Excel den Zugriff auf Daten, die in MySQL gespeichert sind.
MySQL Federated Engine Dies ähnelt der CONNECT-Speicher-Engine, unterstützt jedoch nur Daten, die in externen MySQL-Datenbanken gespeichert sind.