0

私は単純なデータベース システムを開発しています (gdbm/bdb のように単純であっても、ストック データベース システムを使用するオーバーヘッドは必要ありません)。データベース ファイル内のレコード。

1 つはメモリが高価で、もう 1 つはディスク容量が高価で、どちらも時間がかかるように見えます。1 つ目は、データベース全体をメモリに読み込み、削除する必要があるレコードを除いて古いデータベースに上書きすることです。2 つ目は、古いデータベース ファイルから新しいデータベース ファイルにレコードごとにコピーし (削除するレコードをスキップして)、新しいファイルを古いファイルの上にコピーする方法です。

より良い方法はありますか?既存のデータベース パッケージはこれをどのように処理しますか?

4

2 に答える 2

0

別のオプションは、レコードが削除されたときにファイルのセクションを未使用としてマークすることです。新しいエントリが追加されたときに、ファイルのそのセクションに他のレコードを追加できます。オプションで、指定した間隔で言及した方法のいずれかに従う、ある種の「縮小」プロセスを実行できます。

MySQL の innodb テーブル タイプは、ファイルを管理するためにこれと同様の方法を使用していると確信しています (ただし、縮小方法は提供していません)。

于 2012-10-10T01:34:54.007 に答える
0

データベースはフラット ファイルとして実装されていますか? あなたが言及したアプローチと比較して簡単になるので、B +ツリーの使用を検討できると思います。

于 2012-10-10T01:35:01.083 に答える