MariaDBのConnectストレージエンジン

MariaDBの最新バージョン10.0系では、多岐に渡るストレージエンジンをサポートしていますが、その中でもユニークなConnectストレージエンジンを紹介します。

動作概要

アプリケーションは従来のDBと同様にMariaDBにアクセスします。MariaDBはあらかじめ定義された設定に従って、外部のDBまたはファイルにアクセスしてデータ操作を行い、結果をアプリケーションに応答します。

 

 テーブル定義の例

MS-AccessにODBC接続して"Customer"テーブルを作成する場合
create table Customer (
  CustomerIDvarchar(5),
  CompanyNamevarchar(40),
  ContactNamevarchar(30),
  ContactTitlevarchar(30),
  Address varchar(60),
  City varchar(15),
  Region varchar(15),
  PostalCodevarchar(10),
  Country varchar(15),
  Phone varchar(24),
  Fax varchar(24))
engine=connect table_type=ODBC block_size=10 tabname='Customers'
Connection=‘DSN=MS Access Database;DBQ=C:/Program Files/Microsoft Office/Office/1033/FPNWIND.MDB;';

ODBCのカタログ関数を利用して、リモートDBのテーブル定義を参照する場合

create table Customer engine=connect table_type=ODBC  block_size=10 tabname='Customers'
 connection='DSN=MS Access Database;DBQ=C:/Program Files/Microsoft Office/Office/1033/FPNWIND.MDB;';
CSVファイルを参照する場合
create table people (
  name char(12) not null,
  birth date not null date_format='DD/MM/YY',
  children smallint(2) not null)
engine=CONNECT table_type=CSV file_name='people.csv'
header=1 sep_char=';' quoted=1;

例えば上記の場合では、"people.csv"は

Name;birth;children
“Mike";17/05/01;3
“John";12/08/03;2

この場合、select * from people; のように、SQL文を使ってCSVファイルを参照することが出来ます。

また、以下のようにinsert文でデータを追加することも可能です。

insert into people (name,birth,children) values('John','31/03/2013',1);

次のように通常のテーブル"address"とのJOIN処理も可能。

select * from people, address where address.name=people.name;

このようにMariaDBの内部に格納されているデータ、ならびに外部のデータも含めて、統合的に利用できるというユニークな機能です。ETLツールなどによるデータの連携処理などを待たずにリアルタイムで参照できるという点も強みと思います。

さらに詳細について知りたい型はMariaDBのKnowledge Baseに詳しいですのでご参照ください。