2017-07-20 8 views
0

を参照してください。docsを見ると、1対多の関係がある場合、データを構造化する方法がわかりませんでした。問題は、単一の照会にはかなりの時間がかかるため、複数の照会を行うのは良い解決策ではないということです。Google Datastoreの1対多関係がJavaの

はのは、次のような構造を仮定してみましょう:

Entity 
    Key(String hash) value(String) ...other values 

    User 
    Key(String hash) Entity Key(String hash) 

は今、私はすべてのユーザーのエンティティハッシュキーを照会し、各キーのためにできる場合は実際の値を取得するクエリを作るが、それは多くのように多くのクエリを作る以来のオプションではありませんエンティティがユーザに割り当てられると、時間がかかりすぎる。

データをどのように構造化するのですか、またはすべてのユーザーのデータを取得するために単一のクエリを作成する方法はありますか?以下のシナリオを考える

答えて

0

-

  • UserEntity
  • NotesEntity

一ユーザ

一つのアプローチとしてUserEntityを設定することである(多くの1つ)は、ゼロ又はそれ以上の注意を持っています各Notesエンティティの親。

  • UserEntity - キー、名前、電子メール
  • NotesEntity - キー、親キー(ユーザー)、ノート日付、特定のユーザーのすべてまたはノートのページを取得するために、今説明

ノート、あなたの可能性だけで次のように1つの祖先クエリを実行します。

SELECT * FROM NotesEntity WHERE __key__ HAS ANCESTOR a_user_key 
+0

しかし、どのようにデータストアを使用するようになりますか?また、私はNotesEntityが複数の親を持つことができると仮定しなければなりません。 –

+0

ドキュメント(https://cloud.google.com/datastore/docs/concepts/entities#ancestor_paths)をご覧ください。 NotesEntityが複数の親(Users)を持つことができる場合、それは一対多の関係ではなく多対多の関係になります。 –

+0

あなたは正しいです、私の悪いです。だから、私はマルチレベルの親キーを使用する必要がありますか? –