MariaDBはMySQLフォークであり、最初はMySQLの5.1リリースから派生しました。 MySQLとは異なり、MariaDBは、データが標準のMariaDBテーブルに格納されているかのように、非MariaDBデータベースに格納されている外部データを使用できます。データはMariaDBにロードされません。外部データを操作するために、MariaDBはCONNECTストレージエンジンを使用します。このストレージエンジンはMariaDB10.0で導入されました。
CONNECTストレージエンジンは、WindowsバージョンとLinuxバージョンの両方のデータベースに含まれていますが、デフォルトではロードされていません。 CONNECTストレージエンジンは、ODBCを使用して外部データを処理できます。 ODBCは、データベースに依存しないインターフェイスであり、CONNECTストレージエンジンなどのODBC準拠のアプリケーションが、ODBCドライバーが使用可能な任意のデータベースと連携できるようにします。 ODBCは、アプリケーションのデータクエリをターゲットデータベースが理解できるものに変換します。
ODBCには、ODBCドライバーとODBCドライバーマネージャーの2つのコンポーネントがあります。 ODBCドライバーはデータベース固有です。つまり、MicrosoftAccessODBCドライバーはMicrosoftAccessデータベースとのみ通信します。 ODBCドライバーマネージャーは、CONNECTストレージエンジンとODBCドライバーの間のインターフェイスです。 Driver Managerは、ODBCドライバーのロードを担当し、データベースと対話するコンポーネントからアプリケーション(つまり、ストレージエンジン)を分離します。このアーキテクチャにより、MariaDBに変更を加えることなく、MariaDBをさまざまなデータベースに接続できます。
Windowsでは、MicrosoftはオペレーティングシステムにODBCドライバーマネージャーを提供します。これは、CONNECTストレージエンジンがこのプラットフォームで使用するものです。
Linuxでは、CONNECTストレージエンジンはunixODBCドライバーマネージャーを使用します。このドライバマネージャは通常、オペレーティングシステムで使用できますが、デフォルトではインストールされない場合があります。 Windows以外のプラットフォーム用のすべてのEasysoftODBCドライバーには、unixODBCドライバーマネージャーが含まれています。
要約すると、ODBCを使用してMariaDBを外部データに接続するために必要なコンポーネントは次のとおりです。
CONNECTストレージエンジンを試すために、LinuxのMariaDBでSQLServerおよびAccessODBCドライバーを使用し、WindowsのMariaDBでSalesforceODBCドライバーを使用しました。
注 64ビットバージョンのMariaDBを使用している場合は、64ビットのODBCドライバーを使用する必要があります。 32ビットバージョンのMariaDBを使用している場合は、32ビットのODBCドライバーを使用する必要があります。
Connectストレージエンジンのロード
LinuxまたはWindowsでMariaDBを実行しているかどうかに関係なく、CONNECTストレージエンジンをロードするには同じコマンドが必要です。 MySQLクライアントシェルで、次のように入力します。
INSTALL SONAME 'ha_connect';
ターゲットデータベースに適切なODBCドライバーがインストールされ、ODBCデータソースが構成されていると仮定すると、外部データをMariaDBと統合できるようになります。
Linuxでは、ドライバーに含まれているunixODBCドライバーマネージャーのコピーを使用していたため、これらのドライバーマネージャーライブラリが読み込まれるように環境を設定する必要がありました。
# /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
例:Linux上のMariaDBをMicrosoftAccessに接続する
CONNECTストレージエンジンを使用すると、MariaDBにCONNECTテーブルを作成できます。 CONNECTテーブルタイプは、外部データへのアクセス方法を指定します。 Accessに接続するためにODBCドライバーを使用しているため、使用する正しいテーブルタイプは「ODBC」です。 Northwindデータベースに接続するODBCデータソースを作成しました。これは、MariaDBからアクセスするデータです。データソースは「Northwind」と呼ばれ、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)
ストレージエンジンはターゲットテーブル構造を自動検出できるため、CREATE TABLE
で列名/データ型を指定できます ステートメントは必須ではありません。
例:Linux上のMariaDBをMicrosoftSQLServerに接続する
この例では、tabname
を使用しています MariaDBとSQLServerの違いを回避するオプション。 Person.Address
に保存されているAdventureWorksデータを取得したいと思います。 テーブル。ただし、MariaDBにはテーブルスキーマの概念がないため、MariaDBでテーブルの名前を「PersonAddress」に変更します。 tabname
で実際のテーブル名を指定します 、したがって、SQLServerODBCドライバーはSQLServerが認識するテーブル名を渡すことができます。
$ /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 | +-----------+
SQLServerのデータ型uniqueidentifier
に直接相当するものがないため 。 rowguid列のこのタイプをMariaDBVARCHAR
にマップする必要があります タイプ。これが唯一の問題のある列ですが、他の列をCREATE TABLE
に含める必要があります 声明。それ以外の場合、テーブルにはrowguid列のみが含まれます。
例:Windows上のMariaDBをSalesforceに接続する
64ビットバージョンのMariaDBを使用しているため、ターゲットのSalesforceインスタンス用に64ビットのODBCデータソースを構成する必要がありました。 (そうでない場合、CONNECTテーブルタイプを作成しようとすると、「アーキテクチャの不一致」エラーで失敗します。)これを行うには、コントロールパネルにある64ビットバージョンのMicrosoftODBCデータソースアドミニストレータを使用しました。 (Windowsの一部のバージョンでは、コントロールパネルに32ビットバージョンと64ビットバージョンの両方のODBCデータソースアドミニストレーターがありますが、その場合は、それらのアーキテクチャに明確なラベルが付けられています。)
ターゲットのSalesforce「テーブル」にはNVARCHAR
が含まれています CONNECTストレージエンジンがVARCHAR
として処理する列。 s。 CREATE TABLE
ステートメントは、この効果に対する警告を生成します。 (「列IDはワイド文字です」など)
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
その他のMySQL/MariaDB接続オプション
名前 | 説明 |
---|---|
MariaDBコネクタ/ODBC | これはMariaDB用のODBCドライバーであり、WindowsプラットフォームとLinuxプラットフォームの両方で使用できます。これにより、MicrosoftExcelなどのODBC準拠のアプリケーションがMariaDBに保存されているデータにアクセスできるようになります。 |
MySQLコネクタ/ODBC | これはMySQL用のODBCドライバーであり、Windows、Linux、UNIX、およびOSXプラットフォームで使用できます。これにより、MicrosoftExcelなどのODBC準拠のアプリケーションがMySQLに保存されているデータにアクセスできるようになります。 |
MySQLフェデレーションエンジン | これはCONNECTストレージエンジンに似ていますが、外部のMySQLデータベースに保存されているデータのみをサポートします。 |