2017-01-14 7 views
5

パーティションキーを指定せずにIDで文書を取り出すことは可能ですか?文書IDで検索するときにパーティションキーが必要です

documentationを読んでから、私の理解では、パーティション・キーが指定されていないすべてのパーティション間でのクエリの意志ファンアウトということです:

は、次のクエリは、パーティションキー (DEVICEID)にフィルタを持っていません。パーティションのインデックスに対して が実行されるすべてのパーティションにファンアウトされます。 でクエリを実行するには、 EnableCrossPartitionQuery(x-ms-documentdb-query-enablecrosspartition をREST APIで指定)する必要があります。

これはキー以外のプロパティでは意味がありますが、IDが特別に扱われているため、クロスパーティションクエリを有効にする必要はありません。

クロスパーティションクエリを有効にする必要がある場合、これは高価な操作ですか?

答えて

7

IDによるクエリは、クロスパーティション操作になります。これらのクエリには、パーティションキーをFeedOptions.PartitionKeyに含めるか、フィルタの一部として含める必要があります。 DocumentDBでは、IDはではなく、コレクション内のすべての文書に固有のです。代わりに、 "パーティションキー"と "id"の組み合わせがプライマリキーであり、コレクション内のドキュメントを一意に識別します。

一部のアプリケーションでは、IDの一部としてパーティションキーがエンコードされます。パーティションキーは顧客ID、ID = "customer_id.order_id"となるため、ID値からパーティションキーを抽出することができます。

+0

ありがとうAravind。 ID戦略を再考する必要があるかもしれません。好奇心の外に、高価な(RUの観点で)操作と見なされる文書IDに基づくクロスパーティションクエリですか? – Sam

+1

詳細についてお知りになりたい方は、[email protected]まで電子メールでお問い合わせください。はい、IDによるクロスパーティションクエリは比較的高価です。 –

関連する問題