ACIDデータとACIDフリーデータ
データベースのデータベースたる所以は、データが壊れないことだと言ってもいいでしょう。ACIDで保護されたデータですね。ところが最近考えているのは、ACIDで保護されない、ACIDフリーデータ。例えばあるメソッド内でしか使用されないローカルオブジェクトで、もしメモリに十分な余裕がある場合には、メモリ上で操作されるようなデータが、メモリ制限によってディスクを利用しなければならないようなデータに使いたいわけです。
トランザクションで保護されるということのメモリ・I/Oアクセスのオーバーヘッドはかなりのものです。つまりこれらのオーバーヘッドを取り除くことで、非常に高速で省メモリなアクセスが可能になります。db4oはオブジェクトデータベースですから、ACIDで保護されたオブジェクトとACIDフリーなオブジェクトは互いに参照を持っていても何ら問題ないようにします。例えばこんな風に:
objectContainer.activate(ACIDObject);
ACIDObject.setACID-FreeObject(new ACID-FreeObject());
objectContainer.ext().setTemporary(ACIDObject.getACID-FreeObject());
objectContainer.set(ACIDObject);
高度なアルゴリズムを持っているものは度々莫大な作業データを必要としますね。そんな時にこういった機能があれば、飛躍的な性能の向上、最適化ができると考えています。