db4oの長所でもあり難しいところ

Versant7がリリースされたのを機に、大規模サーバーと組込みデータベースという大きな違いがあるものの、同じオブジェクトデータベースなので、Versantとdb4oを比較して、今後どのようにチュートリアルを整備したらよいかの参考に検討してみました。

1 アクティベーション
Versantの素晴らしいのは、中でもそのパフォーマンスであると言われます。しかも参照されているオブジェクトが異なるホストにあっても意識することなくオブジェクトにアクセスすることができます。しかしこれらを自動で行っている代償は、メモリやCPUの消費です。db4oは省リソースで動けるようにするため、どのオブジェクトを取得するか、それは事前にある一定の深さまで取得するか、その都度取得することが可能ですが、について実装の段階で注意深く検討しなければなりません。もちろんVersantもパフォーマンスチューニングについては注意深く警告し、いくら自動で行うといっても、モデルをうまくチューニングしなければパフォーマンスは良くならないといっています。

2 状態変更から更新メカニズム
.NETであればGUIとデータソースは密接に連携しています。同じようにオブジェクトをデータソースにしてアプリケーションを構築したいと思うはずです。RDBMSを使うと当然のように使えたもので、いちいちユーザーの入力を監視せずに楽にプログラミングができたものです。ところが実際にオブジェクトをデータバインディングするとなると、更新されたことを通知するメカニズムを自分で実装しなくてはなりません。IEditableObjectとIBindingListがそれらに必要なインターフェースの一部ですが、これらの実装には、かなりの労力を要します。つまり自動化された効率化プログラミングに比べると、多大な労力を必要としてしまうわけです。Versantは、setメソッド内で、「更新するよ」と連絡するメソッドを実行することで、どのオブジェクトが更新された(dirty)か見分けます。


db4ov5.0では透過的アクティベーションと自動でdirtyオブジェクトを更新するメカニズムが導入されます。これによって2大問題が解決されると考えています。しかし省リソースの中でどのように使えばよいかは、依然として難しい問題であるため、分かりやすいチュートリアルやサンプルを提供していこうと思います。


javaと.NETにネイティブなオープンソースのオブジェクトデータベース
db4o日本コミュニティポータル
http://www.db4o.com/japan/
japan@db4o.com