2016-09-20 14 views
1

documentDBパーティションコレクションでは、ストアドプロシージャを実行できるようにするにはpartitionKey値を知る必要があります。しかし、カウントストアドプロシージャのようなことをするためには、すべてのパーティションにわたって機能するか、各パーティションに対して実行する必要があります。DocumentDB:使用済みパーティションキーのリスト

これは、ストアドプロシージャを実行してパーティションキー(AFAIK)のリストを生成できないことを意味します。クエリを実行してすべてのドキュメントのパーティションキーのすべての値を返し、それをクライアント側で重複排除することは、非常に控えめで、強烈で高価な操作です。あなたはSELECT DISTINCTできません。

SELECT partitionkey FROM docsアプローチに頼ることなく、どのようにパーティションキーのリストを作成できますか?

答えて

1

パーティションコレクション上の正確なカウントを取得するために私の知っている最も効率的な方法は、このようなクエリを使用することです:

SELECT VALUE 1 FROM docs 

その後カウント/合計をまだ良く返品された結果、読みx-ms-item-countヘッダー。

私はそれを試していませんが、おおよその文書数が必要な場合は、どんな要求からも返されたx-ms-resource-usageを使用することができます。 documentsSizeの値を平均文書サイズ(何らかの形で計算しなければならないかもしれない、おそらくサンプリング?)で割ったものは、おおよそのカウントを与えるでしょう。私はこれらのヘッダーがパーティション化されたコレクションで利用可能で正確であると仮定しているので、これを確かめるために試してみる必要があります。

私にはわかりませんが、現在のパーティション設定(どの範囲のハッシュキー値がどのパーティションに入るかを示す表)を取得する方法がある場合は、 sprocの呼び出しから。しかし、その実装が私のようなものであれば、再分散時(パーティションの追加または削除時)の操作は難しく、sprocをファンアウトしたときと比較して取得された設定の変更を慎重にしなければなりませんコール。むしろ私のデザインは、現在のパーティション設定を知っていることに依存していません。

関連する問題