けいじゅ@日本ラショナルソフトウェアです. In [ruby-list :05080 ] the message: "[ruby-list:5080] Re: RubyでOODB ", on Oct/21 16:13(JST) matz / netlab.co.jp (Yukihiro Matsumoto) writes: >まつもと ゆきひろです >|ああ. なるほど, そういう楽しい話しなのですか, そういう話しだとがぜんや >|る気が出てきますね(^^;;; > >ええ,さすがに本気でPSEを作る気にはなりません. ># PSEってなんの略だっけ Persistent Storage Engine?? 忘れましたがきっとそうでしょう. >marshalはいいですよね.特定のオブジェクトを再帰的にファイル >(or 文字列)に書き出す機能です.persistent storageは > > db = PStore.new(filename) > db.transaction do > db.set_root("root", obj) > # .. objに対する操作 > end > > > -- 別のプログラム > > db = PStore.new(filename) > db.transaction do > obj = db.get_root("root") > # .. objに対する操作 > end > >とかすると同じ構造のobjを操作できる程度のものを考えています. >transactionの先頭でデータを読み込んで来て,終りで同じファイ >ルに書き出すイメージですね. なるほど. それだけでも結構使いやすそうですね. # get_root/set_rootは何か他のものを思い出すので, db[root_name]が良いの # ではないかなと思いますが. そうすると機能的には: 1. データベースのオープン/クローズ/削除 2. トランザクション(begin/commit/abort) 3. データベースのルートの設定/参照 4. パーシステントなオブジェクトの外延を永続化(セーブ)する機能 ぐらいですか... 気になるのは(4)の機能ですかねえ... 今のmarshalでセーブの機能は満足して いると思いますが, ロードした時の処理(オブジェクトの一意性)をどうするか が気になりますね. >|>marshalでは書き出せないオブジェクト(IOとか)にどう対応するかとか言うよ >|>うな問題はありますが. >| >|ソケットとか難しそうですね... 相手もあるしより無理かな... >今のmarshalはData(Cで定義されたデータ構造,IOとかDirとか >Threadとか)を書き出すことが出来ません.クラスもダメです.場 >合によってはMLFを使って自分でmarshalを定義する必要があるかも…. あれ? marshal用にメソッドが用意されていませんでした? ファイルセーブを 独自に定義したいような時用の... __ ................................石塚 圭樹@日本ラショナルソフトェア... ----------------------------------->> e-mail: keiju / rational.com <<---