2009-10-01から1ヶ月間の記事一覧

実装状況報告: Standaloneモードでの動作確認とトランザクションのサポート

このところ実装に注力してブログの更新が滞ってしまっていましたが、PerlShellKoherent::DBがとりあえず動くようにはなりました。当初の予定に加えて次の機能を実装することにしました。 StandaloneモードとClient/Serverモードの両立 追記型MVCCによるトラ…

limitメソッドとLimitedViewクラスの実装

limitメソッドは、SQLのLIMITやOFFSET*1相当の機能を実現するためのメソッドです。今回は、limitメソッドとそれを実現するLimitedViewクラスの実装について書きます。 例で使用するテーブル これまで同様、次のようなテーブルがあるものとして話を進めます。…

恒常的なディスクアクセスへの対処

最近、PCを起動しているだけでも絶え間なくディスクアクセスが行われており気になっていました(Windows XP SP3での話です)。調べてみたところ、JQS(Java Quick Starter)が原因のようだとわかりました。 JQSの停止方法(Windows XP、Windows 2000) まずはJ…

ROLLBACK TO (SAVEPOINT)をどう実装するか

これまで書いてきた記事は実装のほぼ固まったものについて解説する形のものが多かったですが、それらとは区別し、現在検討中のことについて検討事項のカテゴリーで書きたいと思います。今回は、ROLLBACK TO(およびSAVEPOINT)の実装について書きます。なお…

方針変更について

PerlShellKoherent::DBの作成についての方針を一部変更します。Pure PerlのRDBMSを作るで、次のように書きました。 10月上〜中旬くらいまでにある程度形にする。 まずはMyISAMのような、トランザクションなし、テーブルロックで動作するものを作る。 これら…

order_byメソッドとOrderedViewクラスの実装

実装の楽なlimitメソッドから書こうかと思いましたが、order_byメソッドなくしてlimitメソッドは使い物にならないので、先にorder_byメソッドの実装について書きます。order_byメソッドではSQLのORDER BYのように検索結果をソートして取得するためのメソッド…

whereメソッドとConditionedViewクラスの実装

友人の結婚式に出るために関西に帰ったり、Module::Starterを触ったり、PostgreSQLのトランザクションの実装を調べたりしている間にずいぶん間が空いてしまいました。さて、前回までにSELECT/INSERT/UPDATE/DELETE、つまりCRUDのためのAPIを一通り考えた*1の…

UPDATE、DELETE、INSERTのAPI

これまでは参照(SELECT)のためのAPIを考えてきましたが、次に更新(UPDATE)、削除(DELETE)、挿入(INSERT)のAPIを考えたいと思います。なお、GROUP BYに当たる検索方法を検討していませんが、これらはプログラム上で実現できるうえに実装が大変そうな…