2

db4oデータベースを縮小/圧縮する方法を知っている人はいますか?

4

1 に答える 1

3

コンパクト/シュリンクとはどういう意味ですか? 既存のデータベースを小さくしますか? それとも、データベースを圧縮しますか?

その役割の一つがデフラグです。これにより、データベース内の未使用領域が解放されます。オブジェクトを削除しても、データベースは縮小されません。代わりに、スペースは新しいオブジェクト用に空きとしてマークされます。ただし、データベースの操作に時間がかかると、ファイルが断片化されます。そのため、最適化により、データベース内の未使用スペースが復活します。

大量の文字列を保存する場合は、デフォルトの完全な Unicode ではなくUTF8 エンコーディングの使用を検討する必要があります。これにより、文字が 1 バイトしか使用しないため、多くのスペースが節約されます。

EmbeddedConfiguration config = Db4oEmbedded.newConfiguration();
config.common().stringEncoding(StringEncodings.utf8());
ObjectContainer database = Db4oEmbedded.openFile(config,"database.db4o");

この設定は、既存のデータベースでは変更できないことに注意してください。文字列エンコーディングを変更するには、データベースを最適化する必要があります。

データベースを圧縮するには、圧縮するstorage-implementationを使用できます。ただし、これを行う利用可能な実装はわかりません。

于 2010-07-13T09:47:53.970 に答える