投稿時間:2004/09/11(Sat) 20:07 投稿者名:Say
Eメール:
URL :
タイトル:Re: ログファイル作成
CSVのフォーマットに発言権があるなら、 例えば、 CSV風固定長テキストファイルにして、双方向リスト用の次行/前行ポインタ列を付加しておけば、 バイナリで読み書きすることにより好きな行を追加、修正、削除可能になります。
問題として、 ●Logを順番にわかりやすく表示するには、専用のビューワーを作る必要がある。 ●削除行は、新規行で上書きされるか、最適化処理をするまでファイル内に残骸が残る。 ●先頭からのオフセットアドレスで読み書きするので、ファイルに人手が加わると破綻する可能性がある。
フォーマットは、例えば、
削除フラグ(1byte),絶対行(8byte),次行(8byte),前行(8byte),Log本文(512byte)改行
データ例 0,00000001,00000003,00000000,本文1(512byte)・・・ 1,00000002,00000006,00000000,削除行1(512byte)・・・ 0,00000003,00000005,00000001,本文2(512byte)・・・ 0,00000004,99999999,00000005,本文4(最終行)(512byte)・・・ 0,00000005,00000004,00000003,本文3(512byte)・・・ 1,00000006,99999999,00000002,削除行2(最終行)(512byte)・・・
みたいなかんじ。
先頭行を管理行にして、本文第1行、本文最終行、削除第1行、本文最終行、全行数、全本文行数などを 保持しておけば、少しアクセス速度を上げられます。
別途インデックスファイルを用意すれば、二分検索できるようになりますから、 参照は高速になりますが、書き込みは低速になります。 また、インデックスファイルとCSVファイルの同期の問題も残ります。
参考までに技術資料です。 hhttp://www.int21.co.jp/pcdn/vb/noriolib/vbmag/9712/rdbms/
|