0

アプリケーションを db4o に移植することを検討しています。データ モデルは、相互に多くの参照を持つ多数の小さなオブジェクトで構成されています。たとえば、著者と章を示す本があります。章にはセクションがあり、セクションにはテキストや画像の大きな塊があり、言及された文字を参照しています。

メタ構造 (テキスト BLOB を除くすべて) をメモリに保持することは可能だと思いますが、WeakReference を含む巧妙なトリックを使用して、db4o が本当に必要なモデルの一部をメモリに保持できるかどうか疑問に思っていました (つまり、最近使用しています)。

同じことがテキスト BLOB にも当てはまります (約 1 ~ 10 KB である必要があります)。DB レイヤーを気にせずに、ゲッター内の人工 ID を使用してテキスト blob を照会したり、テキスト全体を常にメモリに保持するハード参照を使用したりせずに、文字列を取得することは可能ですか?

4

2 に答える 2

1

WeakReferences をオフにすることは、主にパフォーマンスチューニングに使用されます。このアプローチの欠点は無視できないため、注意が必要です。私はそれをお勧めしません。

メモリ使用量の制御は、アクティベーション機能を使用して行う必要があります。アクティブ化は、モデルの一部のみをメモリに保持するのに役立ち、weakreferences は使用されなくなった GC オブジェクトを支援します。それが進むべき道だと思います。

また、質問を db4o フォーラムに投稿して、db4o コミュニティーから支援を受けることもできます。

ゴラン

于 2009-12-16T09:00:57.680 に答える
0

私は最近、db40 や ORM/OODB 製品を使用していませんが、この種のメモリ管理とグラフ管理機能は、フレームワークの上に構築するものではなく、フレームワーク自体の一部であるべきだと思います。Versant の db40 でこれが提供されない場合は、提供されている別の製品を検討する価値があるかもしれません。したがって、あなたが探している答えではないことは理解していますが、フレームワークを活用することが私の最初の寄港地になるでしょう。

于 2009-12-16T08:34:06.570 に答える