
フラットファイル データベースは、フラット ファイルと呼ばれるファイルに保存されるデータベースです。レコードは統一された形式に従い、インデックスを作成したりレコード間の関係を認識したりするための構造はありません。ファイルは単純です。フラット ファイルは、プレーン テキストファイル (例: csv、txt、tsv ) またはバイナリ ファイルです。関係はデータベース内のデータから推測できますが、データベース形式自体はそれらの関係を明示的に示しません。
この用語は一般的に小規模なデータベースを意味しますが、非常に大規模なデータベースもフラットになることがあります。
概要
プレーンテキストファイルは通常、1行に1つのレコードを含みます。[2]
フラット ファイルの例としては、 Unix 系オペレーティング システムの/etc/passwdや などがあります。フラット ファイルのもう 1 つの例としては、 Name、Address、およびPhone Numberというフィールドを持つ名前と住所のリストがあります。
/etc/group
紙に手書きされた名前、住所、電話番号のリストはフラット ファイル データベースです。これは、任意のタイプライターやワード プロセッサでも作成できます。スプレッドシートまたはテキスト エディタプログラムを使用してフラット ファイル データベースを実装し、印刷したり、オンラインで使用して検索機能を向上させることができます。
フラット ファイルは通常、区切り文字で区切られた形式 (カンマ区切り値 (CSV)など) か、固定幅形式 (各列の幅が固定) のいずれかです。
区切り文字で区切られた値
区切り文字で区切られた値ファイルでは、フィールドは区切り文字と呼ばれる文字または文字列で区切られます。一般的なバリエーションとしては、CSV (区切り文字は,)、タブ区切り値 (TSV) (区切り文字はタブ文字)、スペース区切り値、および縦棒区切り値 (区切り文字は|) があります。
フィールド内で区切り文字が許可されている場合、文字どおりに意味される区切り文字または文字列を区別する方法が必要です。たとえば、「If I have to, I'll do it yourself.」という文を考えてみましょう。これを CSV でエンコードするには、コンマによってフィールドが分割されないようにする方法が必要です。区切り文字の衝突を防ぐための戦略はいくつかあります。
固定幅形式
固定幅形式では、各列の長さは固定されており、フィールドは必要に応じてスペースで埋められます。固定長は事前に定義されてわかっている場合(つまり、形式の仕様で指定されている場合)、またはヘッダーから解析される場合があります。
長さが事前に定義されている場合、フィールドは最大長に制限されます。フォーマットが定義された後、より長いフィールドが必要になる場合があります。回避策としては、フレーズを省略する、値をリンクに置き換える (値を指す URI など)、ファイルを複数のファイルに分割するなどが考えられます。
区切り文字で区切られた形式では、フィールドの境界を決定するために区切り文字を見つける必要があり、計算のオーバーヘッドが発生します。これは、固定幅形式では必要ありません。ただし、フィールドがそれらのために予約された長さよりも短い傾向がある場合、固定幅形式ではファイル サイズが不必要に大きくなる可能性があります。
宣言的記法
区切り文字は、各フィールドの長さを示す表記法と一緒に使用できます。たとえば、5apple|9pineapple各フィールドの長さ (5 と 9) を指定します。これは宣言的表記法と呼ばれます。オーバーヘッドが低く、区切り文字の衝突を簡単に回避できますが、手動で編集すると不安定になるため、ほとんど使用されません。
歴史
ハーマン・ホレリスが米国国勢調査局のために1890年に初めて実施した調査では、紙のカードに穴を開けて集計したデータが含まれていたが、[3]これは、他のカードを索引付けするカードや、グループのメンバーシップを除いて個々のカード同士を関連付けるカードが含まれていなかったため、最初のコンピュータ化されたフラットファイルデータベースと見なされることもある。[要出典]
1980 年代には、設定可能なフラット ファイル データベースコンピュータ アプリケーションがIBM PCとMacintoshで人気を博しました。これらのプログラムは、個人が独自のデータベースを簡単に設計して使用できるように設計されており、人気はワード プロセッサやスプレッドシートとほぼ同等でした。[引用が必要]フラット ファイル データベース ソフトウェアの例には、 FileMakerの初期バージョン、シェアウェアの PC-File、人気のdBaseなどがあります。
フラット ファイル データベースは、作成や編集が簡単で、複雑なことなくさまざまな目的に使用できるため、一般的で広く普及しています。
最新の実装
NoSQLデータ、JSONデータ、基本的なスプレッドシート (カンマ区切りまたはタブ区切り)、テキスト ファイルの線形ストアはすべて、統合インデックス、データ要素間の組み込み参照、複雑なデータ型がないため、フラット ファイル データベースと見なすことができます。書籍や予定、アドレス帳のコレクションを管理するプログラムでは、単一目的のフラット ファイル データベースを使用して、インデックスやポインティング システムのないフラット ファイルから情報を保存および取得する場合があります。
ユーザーはテキスト ファイルに目次を書き込むことができますが、テキスト ファイル形式自体には目次の概念は含まれていません。ユーザーは John の連絡先情報の「メモ」セクションに「Kathy と友達」と書き込むことができますが、これはデータベースの組み込み機能ではなく、ユーザーによって解釈されます。データベース システムがレコード間の関係を認識してコード化し始めると、「フラット」な状態から外れ始めます。また、タイプと階層関係を記述するための詳細なシステムを持つと、構造化されすぎて「フラット」とは見なされなくなります。
サンプルデータベース
次の例は、フラット ファイル データベースの一般的な要素を示しています。データ配置は、表形式に整理された一連の列と行で構成されます。この特定の例では、1 つのテーブルのみを使用します。
列には、名前(人の名前、2 番目の列)、チーム(人が応援しているスポーツ チームの名前、3 番目の列)、および数値の一意の ID (レコードを一意に識別するために使用される、1 番目の列) が含まれます。
記述されたデータのテキスト表現の例を次に示します。
ID 名前 チーム 1 エイミー・ブルース 2 ボブ・レッズ 3 チャック・ブルース 4 リチャード・ブルース 5 エセル・レッズ 6 フレッド・ブルース 7 ギリー・ブルース 8 ハンク・レッド 9 ハンク・ブルース
このタイプのデータ表現はフラット ファイル データベースでは標準的ですが、テキストからはすぐにはわからない追加の考慮事項がいくつかあります。
- データ型:上記のようなデータベース テーブルの各列は、通常、特定のデータ型に制限されます。このような制限は通常、慣例によって確立されますが、データがリレーショナル データベースシステムに転送されない限り、正式には示されません。
- 区切られた列:上記の例では、個々の列は空白文字を使用して区切られています。 これは、インデントまたは「固定幅」データ形式とも呼ばれます。 もう 1 つの一般的な規則は、タブやカンマなどの1 つ以上の区切り文字を使用して列を区切ることです。
- リレーショナル代数:上記の表の各行またはレコードは、リレーショナル代数におけるタプルの標準定義を満たしています (上記の例では、一連の 3 タプルが示されています)。さらに、最初の行では、各行の値に関連付けられているフィールド名が指定されています。
- データベース管理システム:テキスト ファイルで実行できる正式な操作は通常、必要な範囲よりも制限されているため、上記の例のテキストは通常、データベース管理システムに転送される前のデータの中間状態を表します。
参照
- /etc/passwd は、Unixでユーザーの詳細を記録するためによく使用されるフラットファイルです。
- CSV (標準のカンマ区切り値)
- Berkeley DB (典型的なフラットファイルデータベース)
- Awk (古典的なフラットファイルプロセッサ)
- Recfiles (プレーンテキスト データベース ファイル形式)
参考文献
- ^ データ統合用語集、Wayback Machineで 2009 年 3 月 20 日にアーカイブ、米国運輸省、2001 年 8 月。
- ^ Fowler, Glenn (1994)、「cql: フラットファイル データベース クエリ言語」、WTEC'94: USENIX Winter 1994 Technical Conference の議事録、USENIX Winter 1994 Technical Conference
- ^ ブロジェット、ジョン H.; シュルツ、クレア K. (1969)。「ハーマン・ホレリス: データ処理の先駆者」。アメリカドキュメンテーション。20 (3): 221–226。doi : 10.1002 /asi.4630200307。ISSN 1936-6108 。
