DBMS

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

正直、飽きてしまった。どうしよう。ホームページは自然消滅に身を任せるか。確か、3ヶ月か、6ヶ月、更新がないと削除される仕組みだったような。隠していた計画では、C言語で、動くものを作って、それをもとに、Javaだとか、C++,C#だとかで作り直すことで…

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

insert()実装方針。というか、心構え。①create_db()で1つ目のファイル制御ブロックとエントリ制御ブロックを作ることにする。②とりあえずお試しで、最初の1コールで1データ入れる処理を実装する。③お試し実装で、最初のエントリ制御ブロックがいっぱいに…

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

かなり間があいてしまった。重要な用事があったのだ。 とりあえず、create/open/close系はできた。http://mudbdb.web.fc2.com/mudb/20100220/mudb.c http://mudbdb.web.fc2.com/mudb/20100220/mudb.h次は、insert だ。

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

あまり日を空けるのはよくないと思って、コーディングに着手。create/open/close系に手をつけてみた。まだ不完全だけれども。http://mudbdb.web.fc2.com/mudb/20100202/mudb.c http://mudbdb.web.fc2.com/mudb/20100202/mudb.hにアップ。とりあえず、名称に…

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

ファイル内部形式。ファイルの最初の512バイトは、ファイルの情報を管理する領域に使おう。この領域を、「ファイル管理ブロック」と名付けよう。ファイル管理ブロックが管理する情報は、「格納データ数」、「未使用領域の位置」、などが考えられる。「未使用…

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

API追加。int putenv( DB_t* dbp, int prop, int value ); int getenv( DB_t* dbp, int prop, int* value );システムの環境変数の変更・取得を行う。prop引数には、システムが定めた環境変数のコードを指定し、value引数で、その環境変数の値を設定、または…

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

API追加。 int update( DB_t* dbp, POS_t* pos, char* data, int datalen, int skip ); int recover( DB_t* dbp, POS_t* pos );update() は指定された位置のデータを置換えていく。置換えが途中までだとしても、元データの長さは変わらない。もし置き換える…

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

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

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

(続き)fetch( DB_t* dbp, char** data, int* datalen );のインターフェースが気になってきた。でかいデータがたまたま入力出来たとして、でかさゆえに取り出せない可能性はないだろうか。そのとき救済的な措置が必要ではないか、と思い至った。たとえば細…

データベース管理システム

最弱なデータベース管理システムを考えてみた。これは逆にいえば、もっとも簡単に実装できるシステムとも言える。考えたのは、次のAPIで提供されるシステムだ。DBサーバのような専門プロセスはなく、呼び出すユーザプロセスで動く。ユーザの資源を消費する…