MySQLでデータ保存形式がCSV形式のデータベースを使ってみる

ぽんさんの記事にもあるようにSUNは,Oracle に買収された・・・。
MySQLはSUNに買収されているので,MySQLはOracle に買収された・・・。
MySQLの運命やいかに!?

・・・・は,おいておいて。

MySQLでデータ保存形式がCSV形式のデータベースを使ってみる(というか,なんか,色々使えそうなので技術メモ。)

MySQLは,データベースのストレージエンジンを切り替えて使うことが出来る。
ストレージエンジンっとはデータを保存したり呼び出したりする,
データベースのパフォーマンスに直結する部分だ。
詳細:http://dev.mysql.com/doc/refman/5.1/ja/pluggable-storage-overview.html

MySQLの標準はMyISAM が使われている。何も考えないと,これが使われていることになる。
いつくかあり,個人的に興味深いものは MEMORYエンジンやCSVエンジンというものがある。
参考:http://dev.mysql.com/doc/refman/5.1/ja/storage-engines.html

MEMORYエンジンとは,その名前のとおり,ハードディスクなどに記憶せずにメインメモリ内だけでやってしまうエンジンだ。
参考:http://dev.mysql.com/doc/refman/5.1/ja/memory-storage-engine.html
物理メモリを大量に積んでやると,いい感じに使えそうだ。

SQL文でテーブル作成時に,ENGINE = MEMORY を後ろに付けると,そのテーブルで使えます。
たとえば

CREATE TABLE t (i INT) ENGINE = MEMORY;

とすれば,テーブルtだけをメモリ上のエンジンとして使える。

CSVエンジンも,名前のとおり,CSVファイルにデータを保存してくれるエンジンだ。
参考:http://dev.mysql.com/doc/refman/5.1/ja/csv-storage-engine.html
テーブルデータファイルの構造は,まんまCSVファイルだ。

SQL文でテーブル作成時に,ENGINE = CSV を後ろに付けると,そのテーブルで使えます。
たとえば

CREATE TABLE test(i INT, c CHAR(10)) ENGINE = CSV;

とすれば,このテーブルtestをCSVファイルで使える。すばらしい。

test.CSV というファイルで保存される。

たとえば,以下のSQL文を実行すれば,

INSERT INTO test VALUES(1,’one’);

test.CSV ファイルの中身は,テキスト形式で

"1","one"

となります。

通常,CSV形式は,データベースにインポートやエクスポートするものだが,
いきなりCSVを書き換える事ができるので,使い方次第では大変便利。もちろん,パフォーマンスは,期待できないでしょうが・・・。

LinuxやUNIX環境では,パーミッションやオーナーの都合でCSVファイルには簡単にはアクセス出来ない。そこは,一工夫必要かも。

普段は,メモリ上のテーブルで作業して,時々バックアップでCSV形式で保存すということもSQL文の組み合わせで可能かと。

そして EXAMPLEエンジンだ。「例」エンジン。
参考:http://dev.mysql.com/doc/refman/5.1/ja/example-storage-engine.html
もっとも基本的なことしかしない。というか,「機能が全くない」。
これらストレージエンジン開発者のための「例」なので,データを追加出来ない。。。
オリジナルのストレージエンジン開発なら,これをベースに作ればよいらしい。

comments

コメントを残す