データベース管理システム(3)

データ削除をどうするか考えた。データを削除するためにデータ位置を指定する方式をとることにする。データで検索し位置を得る方式はややこしいと考えた。データの形式・内容を知っているのはユーザで、ユーザは fetch() で取り出すことができ、削除するかどうか判断し、fetch() が返す位置情報で削除を行なえる。

int insert( DB_t* dbp, char* data, int datalen, POS_t* pos );
int delete( DB_t* dbp, POS_t* pos );
int fetch( DB_t* dbp, char** data, int* datalen, POS_t* pos );
int seek( DB_t* dbp, int jump, POS_t* pos );

POS_t領域はユーザ側で確保してもらい、そのアドレスを pos引数に入力してもらう方式にする。あるいは、POS_t情報の取得が不要なら、0 を入力する。

insert(), fetch(), seek() の POS_t情報は出力情報、delete() のPOS_t情報は入力情報。fetch() は実行時に最初に位置情報を次に進め、処理を行う。seek() で jump引数を 0 で実行すると、至近の fetch() が返した POS_t情報と同じものが返ってほしい。delete() を増やしたのでファイル格納形式を工夫せねば。

まあ、ざっとこんなもんかな。