OODB

私は『Final Fantasy: The Spirits Within』の全体の進行を manage するデータベースの管理を任されてまして、それを Lisp で書いていたんです。Lisp ベースの OODB を使って。ベースとなっているのは ObjectStore で、Franz がその上に Lisp の皮を被せた AllegroStore を出していまして、それを使いました。基本は Lisp のオブジェクトを作ると、それが persistent になるんです。普通にオブジェクトとしてアクセスできるんです。で、何が強かったかというと、まず普通のオブジェクトなんで many to many の関係が全部リンクで持っている、と。それから、相互のポインタが全部、内部で manage されていたんで、integrity に気を遣わなくていいこと。もうひとつ、CLOS の機能なんですけど、インスタンスのクラスを実行中に変えられるんですね。クラスの再定義が出来まして、古いクラスから新しいクラスへの変換メソッドを書いといてやると、そのインスタンスがアクセスされた時に、その変換メソッドが走って、インスタンスが update されるんです。スロット*4が追加されるだけじゃなくて、このスロットとこのスロットの情報をマージして新しいスロットにしたい、とか、インスタンスを分割したい、とか、そういうことが実行中に出来てしまう。特に、persistent の storage にオブジェクトをとってありますと、それを新しいクラス定義で読み込んで update かければいいんですから。

OOエンジニアの輪! 〜 第 21 回 川合史朗 さんの巻 〜 | オブジェクトの広場 via http://d.hatena.ne.jp/scinfaxi/

すごいなこれ。CLOS勉強したい。

OODB

知らない単語なので調べてみた。Object-Oriented Data Base の略らしい。ObjectStoreやCacheという実装があるらしい。

RDBは、オブジェクトを2次元の表にあわせて正規化してデータとして格納していくのにたいして、OODBはオブジェクトをそのままデータとして保存するというものらしい。具体的にどうなってんのかはまだよくわからない。

@IT:オブジェクト指向データベースの復権(前編) Page 1 あとで読む