MariaDB er en MySQL-gaffel, som oprindeligt blev afledt af 5.1-udgivelsen af MySQL. I modsætning til MySQL kan MariaDB bruge eksterne data, der er gemt i ikke-MariaDB-databaser, som om dataene var gemt i en standard MariaDB-tabel. Dataene indlæses ikke i MariaDB. Til at arbejde med eksterne data bruger MariaDB CONNECT-lagringsmotoren. Denne lagermotor blev introduceret i MariaDB 10.0.
CONNECT-lagermotoren er inkluderet med både Windows- og Linux-versionen af databasen, selvom den ikke er indlæst som standard. CONNECT-lagermotoren kan bruge ODBC til at arbejde med eksterne data. ODBC er en databaseneutral grænseflade, der gør det muligt for ODBC-kompatible applikationer, såsom CONNECT-lagringsmotoren, at arbejde med enhver database, som en ODBC-driver er tilgængelig for. ODBC oversætter applikationens dataforespørgsler til noget måldatabasen forstår.
ODBC har to komponenter:ODBC-driveren og ODBC Driver Manager. ODBC-driveren er databasespecifik, dvs. en Microsoft Access ODBC-driver vil kun tale med en Microsoft Access-database. ODBC Driver Manager er grænsefladen mellem CONNECT-lagermotoren og ODBC-driveren. Driver Manager er ansvarlig for at indlæse ODBC-driveren og isolere applikationen (dvs. lagermotoren) fra den komponent, der interagerer med databasen. Denne arkitektur gør det muligt for MariaDB at oprette forbindelse til forskellige databaser uden at der foretages ændringer i MariaDB.
På Windows leverer Microsoft en ODBC Driver Manager med operativsystemet, og dette er det, som CONNECT-lagermotoren bruger på denne platform.
På Linux bruger CONNECT-lagermotoren unixODBC Driver Manager. Denne Driver Manager er normalt tilgængelig med operativsystemet, selvom den muligvis ikke er installeret som standard. Alle Easysoft ODBC-drivere til ikke-Windows-platforme inkluderer unixODBC Driver Manager.
For at opsummere er de komponenter, der kræves for at forbinde MariaDB til eksterne data ved hjælp af ODBC:
For at prøve CONNECT-lagringsmotoren brugte vi vores SQL Server og Access ODBC-drivere på med MariaDB på Linux og vores Salesforce ODBC-driver med MariaDB på Windows.
Bemærk Hvis du bruger en 64-bit version af MariaDB, skal du bruge en 64-bit ODBC-driver. Hvis du bruger en 32-bit version af MariaDB, skal du bruge en 32-bit ODBC-driver.
Indlæsning af Connect Storage Engine
Uanset om du kører MariaDB på Linux eller Windows, kræves den samme kommando for at indlæse CONNECT-lagringsmotoren. Skriv:
i en MySQL-klient-shellINSTALL SONAME 'ha_connect';
Forudsat at du har den passende ODBC-driver til din måldatabase installeret og har konfigureret en ODBC-datakilde, kan du nu integrere eksterne data med MariaDB.
På Linux brugte vi en kopi af unixODBC Driver Manager, der var inkluderet i vores drivere, og derfor var vi nødt til at indstille miljøet, så disse Driver Manager-biblioteker blev indlæst.
# /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
Eksempel:Forbind MariaDB på Linux til Microsoft Access
CONNECT-lagermotoren giver dig mulighed for at oprette en CONNECT-tabel i MariaDB. Tabeltypen CONNECT angiver, hvordan de eksterne data vil blive tilgået. Vi bruger en ODBC-driver til at oprette forbindelse til Access, så den korrekte tabeltype, der skal bruges, er "ODBC". Vi har oprettet en ODBC-datakilde, der forbinder til Northwind-databasen, og det er de data, vi får adgang til fra MariaDB. Datakilden hedder "Northwind", og det skal vi inkludere i vores CONNECT-tabeldefinition:
$ /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)
Lagermotoren kan automatisk detektere måltabelstrukturen og således specificere kolonnenavnene/datatyperne i CREATE TABLE
erklæring er ikke obligatorisk.
Eksempel:Forbind MariaDB på Linux til Microsoft SQL Server
Dette eksempel bruger tabname
mulighed for at omgå en forskel mellem MariaDB og SQL Server. Vi ønsker at hente nogle AdventureWorks-data, der er gemt i Person.Address
bord. MariaDB har dog ikke ideen om et tabelskema, og derfor vil vi ændre navnet på tabellen til "PersonAddress" i MariaDB. Vi angiver det faktiske tabelnavn med tabname
, så SQL Server ODBC-driveren kan videregive det tabelnavn, som SQL Server genkender.
$ /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 | +-----------+
Fordi der ikke er nogen direkte ækvivalent for SQL Server-datatypen uniqueidentifier
. Vi skal tilknytte denne type i kolonnen rowguid til en MariaDB VARCHAR
type. Selvom dette er den eneste problematiske kolonne, skal vi inkludere de andre i CREATE TABLE
udmelding. Ellers ville tabellen kun indeholde kolonnen rowguid.
Eksempel:Forbind MariaDB på Windows til Salesforce
Vi bruger en 64-bit version af MariaDB, og vi var derfor nødt til at konfigurere en 64-bit ODBC-datakilde til vores mål-Salesforce-forekomst. (Ellers vil vores forsøg på at oprette en CONNECT-tabeltype mislykkes med fejlen "Architecture mismatch".) For at gøre dette brugte vi 64-bit versionen af Microsoft ODBC Data Source Administrator, som er placeret i Kontrolpanel. (På nogle versioner af Windows er der både en 32-bit og en 64-bit version af ODBC Data Source Administrator placeret i Kontrolpanel, men deres arkitektur er tydeligt mærket, hvis dette er tilfældet.)
Vores mål Salesforce "tabel" indeholder NVARCHAR
kolonner, som CONNECT-lagermotoren håndterer som VARCHAR
s. CREATE TABLE
erklæring genererer advarsler herom. ("Kolonne-id er brede tegn", og så videre.)
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
Andre MySQL/MariaDB-forbindelsesmuligheder
Navn | Beskrivelse |
---|---|
MariaDB Connector/ODBC | Dette er en ODBC-driver til MariaDB og er tilgængelig til både Windows- og Linux-platforme. Det gør det muligt for ODBC-kompatible applikationer såsom Microsoft Excel at få adgang til data gemt i MariaDB. |
MySQL Connector/ODBC | Dette er en ODBC-driver til MySQL og er tilgængelig til Windows, Linux, UNIX og OS X platforme. Det gør det muligt for ODBC-kompatible applikationer såsom Microsoft Excel at få adgang til data gemt i MySQL. |
MySQL Federated Engine | Dette ligner CONNECT-lagringsmotoren, men det understøtter kun data, der er gemt i eksterne MySQL-databaser. |