2011-07-29 17 views
0

ansi C++を使用して、ファイル内の主キーに基づいてユーザーのレコードを保持およびアクセスする方法を教えてください。データベースは使用されません。ファイルに格納されたユーザーレコードにアクセスする方法(データベースなし)

+3

ファイル*はデータベースではありませんか? –

+0

ソリューションは単一のファイルを必要とするか、複数のファイルが大丈夫ですか? パフォーマンスにどれだけの懸念がありますか? レコードの数は比較的少ないですか? –

+0

すべてのレコードをメモリにロードし、それらをコレクション/オブジェクトモデルとして表現し、変更が行われたときにデータモデルをファイル全体に保存し直すことができます。 –

答えて

0

ファイル内のレコードにランダムにアクセスしている場合は、データベースと呼ばれるかどうかにかかわらず、そのデータベースを呼び出します。

とにかく、ファイルの最大レコード長を定義します。それを呼び出すMAX_RECL

読み込み/書き込み用に開く rec * MAX_RECLを読み込み、MAX_RECLを読み込みます。 書き込みするには、rec * MAX_RECLを探し、MAX_RECLを書き込んでください。 閉じるには、終了して終了してください。

キーを使用するには、毎回ファイル全体を検索しない限り、キーをレコードにマップする別のインデックスが必要です。

0

独自のデータベースをローリングする前に、SQLiteやBerkeley DBなどの組み込みデータベースをチェックしてください。

固定レコードサイズを使用することも、可変である場合はエントリの開始と長さを別々のインデックスファイルにすることもできます。

1

最も単純なシナリオは、(ab)ファイルシステムをデータベースとして使用することです。主キーはファイルの名前で、ファイルの内容はレコードそのものです。その名前/キーでファイルを開くことがルックアップです。

ただし、要件をより詳細に指定することができます。どのようなレコードとキーのように、保存するレコード数、更新とクエリの発生頻度。

関連する問題