学習/実験的な目的のために、私はデータベースを勉強して学んだいくつかの技術を模倣しようとしています。そして、私はMySQL(と多分他のデータベース)がこの特定の問題をどのように解決するかについて興味があります。可変長ファイルのデータベースへの書き込み
他のデータベースと同様に、レコードを1つのファイルに並べて保存するアプリケーションを作成しています。私は、レコードの位置を索引付けするために別のファイルを使用して、それらをすばやく検索します。現在のバージョンよりも長い行を更新する必要があるまでは、すべて正常に動作します。私はいくつかのアイデアを持っていますが、パフォーマンスにはやらないものはありません。
たとえば、1,000レコードのうち200レコードを更新したいとします。私のロジックでは、行の先頭にファイルカーソルを置き、データを書き込みます。行の現在のバージョンが100バイト長であるとします(そして101バイト目から次のレコードが始まるとします)。新しいデータの長さは150バイトなので、ファイルカーソルを使用して書き込むだけで、次のレコードのバイトが上書きされます。
私の知る限り、カーソルからファイル内のデータを「プッシュ」することはできません。もし可能であれば、最もパフォーマンスに優しい操作のようには見えません。
新しいデータを追加し、現在の行をNULLバイトで置き換えるオプションがあります。しかし、それは であるように思わa)はNULLバイトせずにファイルを再構築するために、マシンの多くの作業を必要とし、再びスペース B)の廃棄物、
そしてそこデフラグのオプションがありますが、私は準備ができていませんよまだその方向に行く。
他のデータベースがこれをどのように処理しているか誰かが知っていますか?
この詳細な回答ありがとうございます:) –