objectify を使用して保存する大きなオブジェクトがあります。プロパティのサブセットのみが入力されたオブジェクトのリストが必要です。これはどのように行うことができますか?
2 に答える
App Engineは、エンコードされたプロトコルバッファとしてエンティティを保存および取得します。基盤となるインフラストラクチャがエンティティの一部のみを格納、更新、または取得する方法はないため、これを実行するライブラリを使用する意味はありません。したがって、Objectifyは、他のライブラリと同様に使用しません。エンティティの一部のみに定期的にアクセスする必要がある場合は、それらのフィールドを別のエンティティに分割してください。
noSql データベースでエンティティを 2 つに分割することはお勧めできません。エントリのリストを読み取る必要がある場合、リストの 2 番目の部分を取得するために n リクエストを実行する必要があります (データが分割されている場合は nxmより多くのエンティティ)。これは当然のことながら、noSql データベースでは結合できないという事実によるものです。
できることは「キャッシュ」です。必要なサブセットを別のエンティティに複製して、パフォーマンスを最大限に引き出します。メイン エンティティの永続化に 2 回書き込む必要があるという欠点があります (サブセットのフィールドが変更された場合)。
私が通常行うことは/** OPTIMIZE xxxx */、サブセットを読み取る必要があるクラスにコメントを書き、さらにパフォーマンスが必要なときにそれに戻ることです。