2016-09-20 42 views
1

在documentDB分區集合中,您需要知道partitionKey值才能夠對其執行存儲過程。但是,爲了能夠執行諸如計數存儲過程之類的操作,它必須在所有分區上工作或爲每個分區執行。DocumentDB:列出使用的分區鍵

這意味着存儲過程不能執行以產生分區鍵(AFAIK)的列表。運行一個查詢以返回所有文檔中的每個partitionkey值,然後對其進行重複數據刪除,這是一種非常不雅,強力,昂貴的操作。你不能SELECT DISTINCT

如何才能產生分區鍵列表,而不訴諸SELECT partitionkey FROM docs方法?

回答

1

我知道的工作再上一個分區的集合精確計數的最有效的方法是使用這樣的查詢:

SELECT VALUE 1 FROM docs 

再算上/總和退還或過更好的結果,請閱讀x-ms-item-count標題。

我還沒有嘗試過,但如果你想要的文件的大致數量,我想你可以使用來自任何請求回x-ms-resource-usagedocumentsSize值除以平均文檔大小(您必須以某種方式計算,可能是採樣?)會給您一個大致的計數。我假設這些標題對於分區集合是可用且準確的,因此您可能必須嘗試確定。

我不知道其中的一個,但是如果有一些方法可以檢索當前的分區配置(表中顯示了什麼範圍的散列鍵值到什麼分區),那麼可能會做一個手動風扇 - 脫出sproc調用。但是,如果它們的實現類似於我的實現,則在重新平衡期間(添加或刪除分區時)的操作是棘手的,您必須防止配置在檢索時與檢出sproc時相比發生變化調用。我寧願我的設計不依賴於瞭解當前的分區配置。

相關問題