TOP
>
サーバ構築・運用
> テーブルデータがテキストファイルであるメリット
徹底比較!! MySQLエンジン
第4回:CSVとBlackhole
著者:
NTTデータ 藤塚 勤也
2006/9/12
前のページ
1
2
3
次のページ
テーブルデータがテキストファイルであるメリット
通常テーブルデータは、各ストレージエンジンでのみ解釈できる形式にてファイルに格納されています。ところが、CSVエンジンが使用するCSVファイルはテキストファイルであるため、MySQLを使用することなくテーブルデータを容易に扱うことができます。
例えばMyISAMエンジンは、テーブルデータ格納用に「
テーブル名
.MYD」ファイルを用います。この「
テーブル名
.MYD」ファイルの内部構造を理解して処理を行うことができるのはMyISAMエンジンです。テキストエディタなどを用いて、「
テーブル名
.MYD」ファイルの中身を確認したり、編集したりすることは事実上できません。
よって、テーブルデータの中身を読んだり書いたりするためには、必ずMySQLが起動している必要があります。
しかし、CSVテーブルのようにテーブルデータが外部からでも解釈可能なテキストファイルで格納されていると、例え何らかの事情でMySQLが起動できない状況であってもテーブルデータを扱うことができます。
ここで簡単な例を紹介します。次に示すのはmysqlユーティティーとテキストエディタにてCSVテーブルを操作している例です。
(画像をクリックすると別ウィンドウに拡大図を表示します)
mysqlユーティリティのコマンドラインから簡単な構成のCSVテーブル「test_csv」を作成します
作成した「test_csv」テーブルに3件のデータを挿入します
データを確認します
できあがった「test_csv.CSV」ファイルをシェルのコマンドラインからテキストエディタにて開きます
テキストエディタにて1行追加します
再びmysqlユーティリティのコマンドラインに戻り、テーブルをフラッシュし、「test_csv」テーブルのデータを確認します
表1:CSVテーブルの操作例
このように、CSVテーブルのデータはMySQLを使用しなくても扱えるという大きなメリットがあります。ただし、あまり件数の多いデータだとテキストエディタなどでの扱いが難しくなるため、このメリットを生かせるのはあくまでも比較的件数の少ないデータに限ると思います。
また上記のような操作を行う場合には、データファイルの不整合が発生しないような注意が必要です。テキストエディタにてテーブルファイルを操作している最中に、MySQL経由による対象テーブルへのINSERT文実行などによってデータファイルの不整合が発生します。
Blackholeエンジン
Blackholeエンジンとは、テーブルへ挿入したデータをディスク上だけでなくメモリ上にも格納しないストレージエンジンです。このような説明では、イメージがわかないかも知れませんので、具体的な動作で説明します。
次に示すのはmysqlユーティリティにて、Blackholeテーブルに対していくつかのSQL文を実行している例です。
(画像をクリックすると別ウィンドウに拡大図を表示します)
Blackholeテーブルを作成
INSERT文にて3件のレコードを挿入し、正常終了
SELECT文にて全件を抽出するが、結果は0件。ただし、実行結果は正常終了
UPDATE文にて、1件更新し、正常終了
SELECT文にて全件を抽出するが、結果は0件。ただし、実行結果は正常終了
表2:Blachholeテーブルの操作
このように、SQL文自体の実行は正常終了するものの、テーブルデータは存在していないため、SELECT文の実行結果は常に0件となります。
では、このようなストレージエンジンはどのような用途があるのでしょうか。それについては後述します。
前のページ
1
2
3
次のページ
著者プロフィール
株式会社NTTデータ 藤塚 勤也
基盤システム事業本部 オープンソース開発センタ シニアスペシャリスト。
日本タンデムコンピューターズ(現日本HP)を経て、2003年よりNTTデータにてOSS分野に参画。日頃はオリジナルOSSの開発や、OSSを用いたシステム構築への技術支援に従事。「RDBMS解剖学」(翔泳社)を共著。
INDEX
第4回:CSVとBlackhole
はじめに
テーブルデータがテキストファイルであるメリット
Blackholeテーブルのファイル構成