Koherent_DB
http://www.koherent.org/db/にてモジュールを公開しています。インストール方法などはリンク先から。Perlの練習用に作った上にまだα版でテストも全然できていないのでバグだらけだと思いますが・・・。
PerlShellですが、もろもろの事情でKoherent::DBに名前を変更します。あとはデッドロックの対処とPODを書けば公開できそうです。
PerlShellKoherent::DBのインデックスがとりあえず機能するようになりました。最初実装していた手法が正しく動作しないことに、かなり実装が進んでから気付いたのでずいぶん時間がかかってしまいました。単純なB-treeなら実装が簡単ですが、どうやって追記型…
このところ実装に注力してブログの更新が滞ってしまっていましたが、PerlShellKoherent::DBがとりあえず動くようにはなりました。当初の予定に加えて次の機能を実装することにしました。 StandaloneモードとClient/Serverモードの両立 追記型MVCCによるトラ…
limitメソッドは、SQLのLIMITやOFFSET*1相当の機能を実現するためのメソッドです。今回は、limitメソッドとそれを実現するLimitedViewクラスの実装について書きます。 例で使用するテーブル これまで同様、次のようなテーブルがあるものとして話を進めます。…
これまで書いてきた記事は実装のほぼ固まったものについて解説する形のものが多かったですが、それらとは区別し、現在検討中のことについて検討事項のカテゴリーで書きたいと思います。今回は、ROLLBACK TO(およびSAVEPOINT)の実装について書きます。なお…
PerlShellKoherent::DBの作成についての方針を一部変更します。Pure PerlのRDBMSを作るで、次のように書きました。 10月上〜中旬くらいまでにある程度形にする。 まずはMyISAMのような、トランザクションなし、テーブルロックで動作するものを作る。 これら…
実装の楽なlimitメソッドから書こうかと思いましたが、order_byメソッドなくしてlimitメソッドは使い物にならないので、先にorder_byメソッドの実装について書きます。order_byメソッドではSQLのORDER BYのように検索結果をソートして取得するためのメソッド…
友人の結婚式に出るために関西に帰ったり、Module::Starterを触ったり、PostgreSQLのトランザクションの実装を調べたりしている間にずいぶん間が空いてしまいました。さて、前回までにSELECT/INSERT/UPDATE/DELETE、つまりCRUDのためのAPIを一通り考えた*1の…
これまでは参照(SELECT)のためのAPIを考えてきましたが、次に更新(UPDATE)、削除(DELETE)、挿入(INSERT)のAPIを考えたいと思います。なお、GROUP BYに当たる検索方法を検討していませんが、これらはプログラム上で実現できるうえに実装が大変そうな…
SELECTのAPI(2) 様々なSELECT文への対応で述べた検索ではインデックスを活用した検索を実現できません。ここではインデックスを用いた検索のAPIを考えます。 例で使用するテーブル これまで同様、次のようなテーブルがあるものとして話を進めます。 members:…
これまで、テーブルからのデータの読み出しそのものに関しては触れませんでした。ここでは、どのようにテーブルからデータを読み出すかについて考えます。テーブルから数百万件というような大量のデータを読み出す場合、すべてのデータをメモリ上に読み込ん…
パッケージ越しにソートサブルーチンを渡してもうまく動作しないようなので、ORDER BYでは通常のサブルーチンを渡すように変更しました。 (参考)パッケージ越しのソートサブルーチンがうまく働かない - $koherent->diary (2009.09.21) APIを考えるにあたっ…
SQLと言えばまずはSELECT文です。ということで、最初にSELECT文相当の検索用APIを考えたいと思います。 例で使うテーブル 以下、次のようなテーブルがあるものとして話を進めます。 members: メンバーを格納したテーブル。 member_id family_name first_name…
併せて、方針変更についてもご覧下さい。 (2009-10-16) RDBMSの実装においては、次のような要素がキーになると思います。 インデックス キャッシュ トランザクションと同時実行制御 テーブルやビューの結合 SQLやAPI 実行計画とオプティマイザ これらについ…
もろもろの事情でKoherent::DBに改名することにしました。 (2009-11-24) という名前にすることにしました。これから実装するRDBMSを。やはり名前がないと不便ですし、名前は必要です。 名前の由来 名前の由来は「pearl shell(真珠貝)」です。 Perlは元々pe…
今日からブログを書くことにしましたkoherです。突然ですが、Pure PerlのRDBMSを作りたいと思います。 自己紹介 某ITコンサルに勤めていましたが、より技術的なことに取り組みたいと思い、退職して大学院に戻ろうと考えています。8月でプロジェクトがひと段…