KoyaなTropy
OODBってほんとに要るの?とKoya検証するためのネタ
Tropy
hyukiさんのTropyをネタにしてます。
koya/sample/tropy
- tropy.rb - 共通のライブラリ。frontとなるTropyDaemonクラス、データベースのひな形であるAbstractTropyクラスを定義。
- tropy_cgi.rb - デーモンを使用するときにインターフェイスとなるCGI。デーモンに仕事を依頼する、いつもの咳な構成。期間限定で稼働中 <URL:http://www.druby.org/cgi-bin/tropy_cgi.rb>
- tropy_d.rb - tropy_cgi.rbと組み合わせて使用するデーモン。データベース、Web UIなどを配置するプロセスである。データベースはtropy_db.rbでもtropy_koya_db.rbでもOK。(編集してね)
- tropy_db.rb - Koyaを使用しない、オンメモリ + ロギングによるシンプルなデータベース。快速。
- tropy_koya_cgi.rb - CGIインターフェイスに全ての部品(データベース、Web UI)を配置する場合のCGI。多分遅い。
- tropy_koya_db.rb - Koyaを使用するデータベース。あまりランダムではない。
- Koya::Streamがあったのを思い出してこれを使うように変更しました。0.2の次からそうなります。
- tropy_ui.rb - Web UI。
オブジェクトの寿命と配置について
UIとデータベースを長生きさせる作戦
Web UIのイベント処理、レンラリング処理と、データベースをサーバプロセスに配置して長生きさせる作戦。 RWikiやDivなど咳っぽいのでよくやるいつものやつ。
CGIスクリプトはCGIのインスタンスをサーバに送り処理してもらうだけの小さなスクリプトになる。
データベースは長生きするので、初期化に時間がかかっても問題ない。 ERBのコンパイルなども事前に行われる。実行時の処理はたぶん最小に。 オンメモリのオブジェクトを普通にDRbするだけでOODBっぽいものができちゃうので Koyaを使うメリットがちょっと薄い。
CGIに全部置く
CGIスクリプトに全ての処理を置く作戦。サーバプロセスが不要である。 データベースの初期化が毎回必要になる。
Koyaだと必要な部分しかアクセスしないので、オンメモリ作戦よりも有利(かもしれない)。
データベースに関する考察
あとで書く