2017-10-07 34 views
1

看着如何設置DocumentDb與分區鍵,如果我有一個多租戶應用,大多數的文件有tenantId,似乎是合理的與/ tenantId/documentDb中沒有分區鍵屬性的文檔會發生什麼?

分區鍵會發生什麼創建集合對於沒有tenantId屬性的文檔,是否應該只添加一個,還是應該使用某種System(硬編碼)tenantId創建這些對象/文檔,以便它們一起存儲?

回答

4

這些文檔會自動分配分區鍵的「未定義」值(類似於JavaScript的未定義)。這與任何其他值一樣,所有缺少密鑰的文檔都存儲在同一個分區中。如果您擁有大量這些內存,那麼您將遇到擴展問題,因爲所有在丟失密鑰中的寫入都將被分配到相同的分區。

避免這種情況通常是一個好主意,或者稍後通過刪除/重新插入(如果缺少分區密鑰是由於在創建時不知道分區密鑰的某種異步性質)而修復此問題。

+0

我正要去見證上面的內容,我們假設分區鍵只是未定義的,但是當試圖刪除沒有與分區鍵相關的屬性的文檔時,我得到錯誤「必須爲此操作提供PartitionKey值。「?我如何刪除這些? –

+0

它看起來需要添加和刪除傳入未定義分區鍵中的文檔: requestOptions = new RequestOptions { PartitionKey = new PartitionKey(Undefined.Value) }; –

+0

是的,確切地說。您應該使用Undefined.Value分區鍵 –

相關問題