1

40 ~ 50 の範囲で番号付けされたプロパティを持つエンティティがいくつかあります。これらのプロパティはすべてインデックス付けされていません。これらのエンティティは、より大きなエンティティ グループ ツリー構造の一部であり、常にキーを使用して取得されます。どのプロパティ (キー プロパティを除く) もインデックス化されません。Objectify を使用して、BigTable のエンティティを操作しています。

BigTable との間で多数のプロパティを持つエンティティを読み書きする際に、パフォーマンスに影響があるかどうかを知りたいです。

これらの大きなエンティティはキーによってのみフェッチされ、クエリに参加することはないため、エンティティ pojo をシリアル化して blob として保存する必要があるかどうか疑問に思っていました。@Serialized アノテーションを使用して Objectify でこれを行うのは非常に簡単です。エンティティをシリアル化して BLOB として保存することで、BLOB を他のプログラムや Java 以外のコードに対して完全に不透明にすることを理解していますが、これは問題ではありません。

私はまだパフォーマンスの違いをベンチマークしていませんが、そうする前に、誰かが以前にこれを行ったことがあるかどうか、または共有するアドバイス/意見があるかどうかを知りたい.

4

2 に答える 2

3

プロパティの数には常にオーバーヘッドがあります。シリアル化は、処理をあるポイントから別のポイントに移動するだけなので、あまり役に立ちません。

プロパティの数が最大 25 のエンティティがあり、ほぼすべてのリクエストでキーによってフェッチします。パフォーマンスの違いは私にとってはごくわずかです。わずか±1ms。通常、パフォーマンスの問題はクエリ パーツで発生します。インデックス化されていないプロパティの数は、パフォーマンスに大きく影響しません。一方、インデックス付きプロパティは、インデックスの変更により put が大幅に遅れる可能性があります。

必要に応じて、プロパティを一度に必要としない場合は、プロパティを複数のテーブルに分割できます。

于 2010-07-09T07:54:18.457 に答える
2

それがどのように機能するかについて私が知っていることを純粋に言うと、インデックス化されていないプロパティがたくさんあることは、すべてがシリアル化されていることと何ら変わりはありません。

于 2010-08-04T19:11:07.433 に答える