2016-04-14 56 views
2

我很困惑爲P​​artitionKey選擇什麼和它有什麼作用。如果我使用分區集合,那麼我必須定義一個可由DocumentDB用於在多個服務器之間分發數據的分區鍵。但讓我們說,我選擇一個對所有文檔始終相同的partitionKey。對於單個分區集合,我還能夠達到250k RU/s嗎?分區集合paritionkey

在我的情況下,主查詢得到分頁,但在時間軸中的所有文件(最新的在前)

SELECT TOP 10 c.id, c.someValue, u.id FROM c 
JOIN u IN c.users ORDER BY c.createdDate DESC 

文檔的縮小版本看起來像這樣

{ 
    id: "1", 
    someValue: "Foo" 
    createdDate: "2016-14-4-14:38:00.00" 
    //Max 100 users 
    users: [{id: "1", id: "2"}] 
    } 

回答

0

不,你需要具有多個不同的分區鍵值才能在DocumentDB中實現高吞吐量級別。

DocumentDB中的分區支持高達10,000 RU/s,因此您至少需要25 *個不同的分區鍵值才能達到250 RU/s。 DocumentDB將分區鍵平均分配給可用分區,即分區可能包含具有多個分區鍵的文檔,但分區鍵的數據保證保留在單個分區內。您還必須通過跨這些分區鍵分配讀/寫的方式來構建工作負載。

*您在實踐中可能需要比25(50-100)略高數分區鍵,因爲一些分區鍵的可能散列爲同一個分區

0

所以,我們有一個分區(10分區)集合,吞吐量爲10000 RU/s。分區鍵是CountryCode,我們只有5個國家的數據。數據爲兩個國家被散列成相同的物理分區。根據以下鏈接中的文檔,我們希望一旦對所述分區命中10GB的限制,就會將數據重新組織爲空分區。這沒有發生,我們不能再爲這兩個國家增加數據。

顯然,正確的做法是選擇一個確保低基數的分區鍵,但文檔是有誤導性的。

https://docs.microsoft.com/en-us/azure/cosmos-db/partition-data

當物理分區P達到其存儲限制,波斯菊DB無縫分裂峯值到兩個新的分區P1和P2對應於大約一半的鍵每個分區的分配值。這種拆分操作對於您的應用程序是不可見的。