0

すべてのCloud Datastoreクエリは、インデックスのプロパティで指定された順序でエンティティキーを含む1つ以上のインデックスを使用して結果を計算します。オプションでエンティティの祖先もオプションです。索引は、アプリケーションがエンティティーに対して行う変更を反映するために段階的に更新されます。これにより、すべての照会の正しい結果が利用可能になり、それ以上の計算は必要ありません。データストア効率、低レベルAPI

一般的に、私は

datastore.get(List<Key> listOfKeys); 

が速くまたはクエリより遅い(同じ結果を)用意したインデックスファイルであるかどうかを知りたいです。

Query q = new Query("Kind")(.setFilter(someFilter)); 

私の現在の問題:

私のデータは、レイヤーとのポイントで構成されています。ポイントは1つのユニークなレイヤにのみ属し、レイヤ内でユニークなIDを持ちます。いくつかの点でポイントをロードすることができます:

1)「レイヤー名」プロパティを持つポイントを持ち、フィルターを使用して照会します。 - ここでは、レイヤ名が動的に変更されるため、データストアに結果が用意されるかどうかはわかりません。

2)キーのみを使用してください。層はポイントIDを格納する必要があります。私は実際には一般的な種類の「ポイント」を必要としない、より具体的な可能性:

KeyFactory.createKey("Layer", "layer name"); 
KeyFactory.createKey("Point", "layer name"+"x"+"point id"); 

3)フィルタなしでクエリを使用してください種類は次のようになります(「レイヤー名」+「ポイントID」) - 何ですかより多くの種類を作成するためのコスト?これが最速の方法でしょうか?

実際にデータストアがどのように詳細に機能しているかを実際に調べることはできますか?

答えて

1

(同じ結果を持つ)インデックスファイルを使用したクエリよりも速くまたは遅くなります。

基本的に、クエリと取得キーは同じ結果を持つとは限りません。

クエリは最終的に一貫性がありますが、キーでデータを取得することは強く一貫しています。

あなたの最初の課題は、スピードを最適化する前に、正しいデータが表示されていることを確認することです。

ドキュメントは、最終的な強力な整合性を説明するのに適しています。祖先クエリを強く一貫性のあるものにするオプションがあるようです。ダイナミックな「名前」の使用を避けることを強くお勧めします。エンティティ名として、これはあなたに悲しみの過剰な量をもたらします。

編集:特に有用であることの利益のために 、あなたの説明に基づいて作業溶液のための一つの選択肢は次のようになります。

  1. 名を格納し、各レイヤーに固有のID(おそらくUUID)を与えます層のためのポイントを取得する際
  2. 各点エンティティの親キー(強く一致している)
を祖先クエリを使用しようプロパティ
  • 層キーを含めるように

    別のオプションは、ポイントを埋め込みエンティティとして保存し、レイヤ全体に対して1つのエンティティのみを持つことです。これは、達成しようとしているものによって異なります。

  • +0

    整合性の問題を指摘していただきありがとうございます。私は、私のレイヤーが編集されて、ほんの一握りのユーザーに表示されるべきだということを含めるべきでした...そして、なぜ私はエンティティ名として '名前'について心配すべきですか?私は人々が既に使用されている名前のレイヤーを保存することを防ぎます...私は非常に簡単にキーを再作成できます。 – thehorseisbrown

    +0

    最終的な一貫性は設計制約であり、ユーザー数の関数ではありません。その意味を理解するには、アプリエンジンにデプロイし、保存してリロードしてください。ほとんどの場合、保存したポイントはほとんど表示されません。この問題を解決する必要があります。 – Nick

    +0

    エンティティ名としてnameを使用した場合、名前変更は新しいレコードのput、古いもののdeleteで、レイヤを参照するすべてのエンティティを更新する必要があります。これは、リレーショナルデータベースのpkとして名前を使用するのと同じです。論理的に接続されたすべてのエンティティに影響を与えます。そのトランザクションを実行しようとすると、XGトランザクションあたり25エンティティの制限があります。したがって、このモデルでは、レイヤに23ポイントを超えていれば問題が発生します。私はあなたに対処したくない痛みのレベルだと約束します。 – Nick

    関連する問題