フラットファイルデータベース

フラットファイルデータベースとは



フラットファイルデータベースは、データベースのデータをプレーンテキストファイルで表現する方式です。特に、表形式のデータをシンプルな構造で保存するのに適しています。通常、1行が1つのレコードに対応し、レコード内の各項目(フィールド)は区切り文字(デリミタ)で区切られます。区切り文字には、カンマやタブなどが用いられるほか、固定の文字数で区切ることもあります。

構造


フラットファイルは、テキスト形式で記述されたデータであり、通常は1行が1つのレコードを表します。レコード内の各フィールドは、カンマやタブなどのデリミタで区切られます。固定長フィールドの場合は、各フィールドが固定の文字数で表現され、必要に応じて空白などでパディングされます。デリミタはフィールド内では使用できない文字を用いる必要があり、もしフィールド内にデリミタと同じ文字が含まれていると、データが正しく解釈されません。レコード間には構造的な関連性はありません。

Unix系のオペレーティングシステムにおける `/etc/passwd` や `/etc/group` ファイルは、フラットファイルの典型的な例です。例えば、名前、住所、電話番号を各行に記述したファイルは、住所録のフラットファイルと見なすことができます。手書きで作成したり、タイプライターやワープロソフトで作成することも可能です。

フラットファイルデータベースの歴史



計算機械の初期の用途として、単純なデータベースの実装がありました。ハーマン・ホレリスは、国勢調査のデータをパンチカードで表現し、機械で集計するというアイデアを考案しました。このアイデアはアメリカ合衆国国勢調査局に採用され、1890年の国勢調査では初めて計算機械を使ってデータ処理が行われました。この時のデータベースは、大量のパンチカードで構成されていました。

ホレリスの会社は後にIBMとなり、IBMは20世紀のデータ処理市場を支配しました。IBMの80桁のパンチカードは、1970年代までデータ入力の主要な手段として広く利用されました。

1980年代には、DOSやMacintosh上で動作する設定変更可能なフラットファイルデータベースアプリケーションが多数開発されました。これらのアプリケーションは、個人向けのデータベースを容易に作成でき、ワードプロセッサ表計算ソフトと同程度に普及しました。初期のFileMakerやPC-Fileなどがその例です。これらのアプリケーションでは、データの関係を表す機能は限定的でしたが、複数のファイル間でデータを共有することができました。

最近の実装



現在では、企業向けのデータベースとしてFairComのC-treeなどが利用されています。しかし、一般のユーザーが簡単に利用できるフラットファイルデータベースのソフトウェアは少なくなっています。Microsoft WorksAppleWorksのようなアプリケーションには、データベース機能が含まれているものもありました。また、ParadoxやMicrosoft Accessのようなデータベースソフトは、関係データベースの機能に加え、プログラミング言語も組み込まれるようになりました。MySQLやOracleのようなデータベース管理システム(DBMS)は、一般のユーザーが直接扱うには複雑であり、プログラマがアプリケーションを開発して利用します。

多くのアプリケーションでは、設定データなどを保存するために内部的にフラットファイルデータベースを使用しています。コレクション管理ソフトやスケジュール管理ソフトのようなアプリケーションでは、ユーザーが入力した情報が内部でフラットファイルに保存されていることがあります。小規模な住所録ソフトなども、内部ではフラットファイルを使用していることが多いです。

XMLは、プレーンテキストファイルにデータを格納するための形式としてよく使われますが、XMLは構造が厳格に定義されており、フラットファイルとは異なります。

用語



「フラットファイルデータベース」という用語は、データベースの文脈で狭い意味で使われる場合と、一般的に広い意味で使われる場合があります。

狭い意味では、レコード長やデリミタに関わらず、データ以外の情報を含まないファイルを指します。広い意味では、単一のファイルで構成されるデータベースで、表形式のデータが格納されているものの、フィールドやレコード間にリンクや関連性がないものを指します。

データベースや関連ツールの用語は実装によって異なりますが、概念は共通です。例えば、FileMakerの「Find」は、MySQLの「Query」と同じ概念であり、FileMakerの「ファイル」はMySQLの「テーブル」と同じです。ただし、「レコード」と「フィールド」という基本用語は、ほとんどすべてのフラットファイルデータベース実装で共通して使用されます。

データベースの例



フラットファイルデータベースの基本的な構成要素を例を挙げて解説します。

データは行と列で構成され、表形式で表現されます。以下の例では、単一のテーブルを使用します。

id name team
------
1 Amy Blues
2 Bob Reds
3 Chuck Blues
4 Dick Blues
5 Ethel Reds
6 Fred Blues
7 Gilly Blues
8 Hank Reds


この例では、`id` 列(レコードを一意に識別するための数値)、`name` 列(人物名)、`team` 列(所属チーム名)があります。

このようなデータ表現は、フラットファイルデータベースでは一般的ですが、テキスト表現だけではわからない考慮すべき点があります。

データ型


各列には、特定のデータ型が設定されている必要があります。このような制限は通常、規約によって定義されますが、データが関係データベースシステムに転送されるまで正式に示されないことがあります。

列の区切り


上記の例では、列は空白文字で区切られています。固定長フィールド形式とも言えます。他の区切り文字を使うこともできます。列やフィールドの区切り方には様々な規約があり、例えば、CSV、マークアップ言語プログラミング言語などで定義されています。固定長でない場合は、デリミタが見つかるまで1文字ずつチェックする必要があり、若干のオーバーヘッドが発生します。しかし、カンマなどのデリミタを使うことで、データ量を削減でき、データ転送においては重要です。固定長フィールドとデリミタを併用することは少ないですが、高速なフィールド抽出が可能になります。

関係代数


上記の例の行(レコード)は、関係代数におけるタプルの定義に適合しています(この例では3タプル)。最初の行は、フィールド名を定義し、他の行の各値を関連付けます。

データベース管理システム


テキストファイルでの形式操作は制限が大きいため、上記の例は、データベース管理システムに転送される前のデータの中間状態を表していると考えるのが妥当です。つまり、フラットファイルデータベースであっても、実際にはデータをフラットファイルの形式で保持し続けるわけではありません。

実用的な実装例



  • - Berkeley DB: フラットファイルデータベースでありながら、ACIDトランザクションをサポートしています。
  • - Borland Reflex: 過去に存在したデータベースソフトウェアです。
  • - TextDB: 高負荷に耐えるフラットファイルベースのデータベースです。
  • - Mimesis: 複数のファイルを扱えるフラットファイルデータベースです。
  • - MySQL CSV: MySQL 5.x用のストレージエンジンで、CSV形式のファイルをテーブルとして利用できます。


まとめ



フラットファイルデータベースは、その単純さゆえに、多くの場面で活用されています。設定ファイルの保存や、簡易的なデータベースとして、現在でも広く利用されています。複雑なデータベースシステムに比べて、手軽に扱える点が大きなメリットと言えるでしょう。

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。