MariaDB adalah garpu MySQL, yang awalnya berasal dari rilis 5.1 MySQL. Tidak seperti MySQL, MariaDB dapat menggunakan data eksternal yang disimpan dalam database non-MariaDB seolah-olah data tersebut disimpan dalam tabel MariaDB standar. Data tidak dimuat ke MariaDB. Untuk bekerja dengan data eksternal, MariaDB menggunakan mesin penyimpanan CONNECT. Mesin penyimpanan ini diperkenalkan di MariaDB 10.0.
Mesin penyimpanan CONNECT disertakan dengan database versi Windows dan Linux, meskipun tidak dimuat secara default. Mesin penyimpanan CONNECT dapat menggunakan ODBC untuk bekerja dengan data eksternal. ODBC adalah antarmuka database-netral yang memungkinkan aplikasi yang sesuai dengan ODBC seperti mesin penyimpanan CONNECT untuk bekerja dengan database apa pun yang tersedia driver ODBC. ODBC menerjemahkan kueri data aplikasi menjadi sesuatu yang dipahami oleh basis data target.
ODBC memiliki dua komponen:driver ODBC dan ODBC Driver Manager. Driver ODBC adalah khusus database, yaitu driver ODBC Microsoft Access hanya akan berbicara dengan database Microsoft Access. ODBC Driver Manager adalah antarmuka antara mesin penyimpanan CONNECT dan driver ODBC. Driver Manager bertanggung jawab untuk memuat driver ODBC, mengisolasi aplikasi (yaitu mesin penyimpanan) dari komponen yang berinteraksi dengan database. Arsitektur ini memungkinkan MariaDB terhubung ke database yang berbeda tanpa perubahan apa pun pada MariaDB.
Di Windows, Microsoft menyediakan ODBC Driver Manager dengan sistem operasi, dan ini adalah salah satu yang digunakan mesin penyimpanan CONNECT pada platform ini.
Di Linux, mesin penyimpanan CONNECT menggunakan Pengelola Driver unixODBC. Driver Manager ini biasanya tersedia dengan sistem operasi, meskipun mungkin tidak diinstal secara default. Semua driver ODBC Easysoft untuk platform non-Windows menyertakan Pengelola Driver unixODBC.
Singkatnya, komponen yang diperlukan untuk menghubungkan MariaDB ke data eksternal dengan menggunakan ODBC adalah:
Untuk mencoba mesin penyimpanan CONNECT, kami menggunakan driver SQL Server dan Access ODBC kami dengan MariaDB di Linux dan driver ODBC Salesforce kami dengan MariaDB di Windows.
Catatan Jika Anda menggunakan MariaDB versi 64-bit, Anda harus menggunakan driver ODBC 64-bit. Jika Anda menggunakan MariaDB versi 32-bit, Anda harus menggunakan driver ODBC 32-bit.
Memuat Connect Storage Engine
Terlepas dari apakah Anda menjalankan MariaDB di Linux atau Windows, perintah yang sama diperlukan untuk memuat mesin penyimpanan CONNECT. Di shell klien MySQL, ketik:
INSTALL SONAME 'ha_connect';
Dengan asumsi Anda telah menginstal driver ODBC yang sesuai untuk database target Anda dan telah mengonfigurasi sumber data ODBC, Anda sekarang dapat mengintegrasikan data eksternal dengan MariaDB.
Di Linux, kami menggunakan salinan Pengelola Pengandar unixODBC yang disertakan dengan pengandar kami, jadi kami harus mengatur lingkungan sehingga pustaka Pengelola Pengandar tersebut akan dimuat.
# /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
Contoh:Hubungkan MariaDB di Linux ke Microsoft Access
Mesin penyimpanan CONNECT memungkinkan Anda membuat tabel CONNECT di MariaDB. Jenis tabel CONNECT menentukan bagaimana data eksternal akan diakses. Kami menggunakan driver ODBC untuk terhubung ke Access dan jenis tabel yang benar untuk digunakan adalah "ODBC". Kami telah membuat sumber data ODBC yang terhubung ke database Northwind, dan itulah data yang akan kami akses dari MariaDB. Sumber data disebut "Northwind" dan kita perlu memasukkannya ke dalam definisi tabel 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)
Mesin penyimpanan dapat secara otomatis mendeteksi struktur tabel target dan dengan demikian menentukan nama kolom/tipe data di CREATE TABLE
pernyataan tidak wajib.
Contoh:Hubungkan MariaDB di Linux ke Microsoft SQL Server
Contoh ini menggunakan tabname
opsi untuk mengatasi perbedaan antara MariaDB dan SQL Server. Kami ingin mengambil beberapa data AdventureWorks yang disimpan di Person.Address
meja. Namun, MariaDB tidak memiliki gagasan tentang skema tabel, jadi kami akan mengubah nama tabel menjadi "PersonAddress" di MariaDB. Kami menentukan nama tabel yang sebenarnya dengan tabname
, sehingga driver SQL Server ODBC dapat meneruskan nama tabel yang dikenali 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 | +-----------+
Karena tidak ada padanan langsung untuk tipe data SQL Server uniqueidentifier
. Kita harus memetakan tipe ini di kolom rowguid ke VARCHAR
MariaDB Tipe. Meskipun ini adalah satu-satunya kolom yang bermasalah, kita perlu menyertakan kolom lainnya di CREATE TABLE
penyataan. Jika tidak, tabel hanya akan berisi kolom baris baris.
Contoh:Hubungkan MariaDB di Windows ke Salesforce
Kami menggunakan MariaDB versi 64-bit dan oleh karena itu kami perlu mengonfigurasi sumber data ODBC 64-bit untuk instans Salesforce target kami. (Jika tidak, upaya kami untuk membuat tipe tabel CONNECT akan gagal dengan kesalahan "Arsitektur ketidakcocokan".) Untuk melakukannya, kami menggunakan versi 64-bit dari Administrator Sumber Data Microsoft ODBC, yang terletak di Panel Kontrol. (Pada beberapa versi Windows, terdapat Administrator Sumber Data ODBC versi 32-bit dan 64-bit yang terletak di Panel Kontrol, namun arsitekturnya diberi label dengan jelas jika demikian.)
"Tabel" Salesforce target kami berisi NVARCHAR
kolom, yang ditangani oleh mesin penyimpanan CONNECT sebagai VARCHAR
s. CREATE TABLE
pernyataan menghasilkan peringatan untuk efek ini. ("ID Kolom adalah karakter lebar", dan seterusnya.)
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