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だと必要な部分しかアクセスしないので、オンメモリ作戦よりも有利(かもしれない)。

データベースに関する考察

あとで書く