2016-11-23 73 views
1

我有一個存儲過程,它給了我count(count.js onn github)。不,我劃分了我的收藏。由於這個原因,我現在必須通過選項中的分區鍵。Documentdb存儲過程交叉分區查詢

可以和如何在存儲過程中啓用跨分區查詢,就像直接查詢集合(EnableCrossPartitionQuery = true)一樣,以便我不必指定分區鍵?

回答

2

無法在DocumentDB中完成扇出存儲過程的執行。針對單個分區運行。嘗試切換到分區集合時必須進行一些調整,我遇到了這種困境。這裏有一些選擇:

  1. 下載一個1對每條記錄和金額/盡數客戶端

  2. 重新運行每一個獨特的分區鍵存儲過程。在我的情況下,這並沒有聽起來那麼糟糕,因爲分區密鑰是tenantID,我只有十幾個這樣的數字,只有最多幾百個。

  3. 由於我沒有用分區集合嘗試過,所以我不確定這個問題,但是現在每個查詢都返回x-ms-resource-usage頭中集合的資源使用情況。該標題具有一個documentsSize子標題。您可以使用該值除以文檔的平均大小以獲得大致的計數。到目前爲止,該頭部信息中甚至可能還有計數記錄。

  4. 另外,還有一個x-ms-item-count標題,但我不確定它是如何表現的。如果您發送整個分區集合中所有記錄的查詢並將max-item-count設置爲1,那麼您將只返回一條記錄,並且它不應該在RU中花費很多,但是我不會知道該標題的行爲。它在這種情況下返回1嗎?或者,如果您打算請求每個頁面,它會返回查詢所有頁面最終返回的文檔總數。一個快速實驗應該證實這一點。

+0

我正在處理大約19萬個分區,其中有大約7000萬條記錄。因此,將不得不影響性能:(@Larry – Leo

+0

選項2絕對不適合你我懷疑你的意思是19K獨特的分區KEYS你無法知道有多少分區實際上在使用,因爲DocumentDB管理這些分區 –

+0

1是最好的選擇。本機聚合支持在私人預覽中,並將於2017年1月1日前發佈給DocumentDB團隊:https://feedback.azure.com/forums/263030-documentdb/suggestions/6333963-add-support-for-aggregate-功能樣算蘇。 –