2017-10-04 224 views
3

所以從火力地堡新公司的FireStore產品的限制部分(https://firebase.google.com/docs/firestore/quotas)它說:限價澄清新公司的FireStore

最大寫入速率集合,其中文檔包含在索引 連續值字段:500每秒

我們很困惑,究竟是什麼實際需要。

如果我們有一個名爲users且具有1000萬個條目的根級集合,此速率是否會以這種方式影響此集合,因此只有500個用戶可以在任何給定秒內更新其數據?

任何人都可以澄清?

+0

我建議你在https://groups.google.com/forum/#!forum/firebase-talk和/或https://www.reddit.com/r/Firebase/而不是StackOverflow上問這個問題,你會在那裏獲得更好的洞察力。 StackOverflow最適合查詢特定代碼。此外,谷歌計劃在Beta版獲得更多有關Firestore性能的數據後,提高他們發佈的限制。 – WillB

回答

5

對不起,一個例子可能有幫助。

如果你的用戶文檔包含在最後更新的時間戳和您對時間戳指數則每個新的寫入最終會圍繞相同的值(現在)創建羣集索引中的一個熱點。

同樣,如果你以某種方式分配的用戶喜歡在在線或類似的東西,這也將創造一個熱點的地方連續值。

順便說一句,這就是爲什麼生成的文檔ID是隨機字符串。這將均勻分配主鍵索引上的寫入。

如果你避免這些種形態的天空的極限,但測試過程中你會打數據庫範圍的限制。

+0

這有點模糊,因爲未知如何構建索引和創建熱點。此外,對象中的任何數字字段都可以視爲「順序」,因爲您可以按該字段排序。我相信,在一段時間內,你的意思是更新/書寫對象的字段。想象一下,我有10000個對象,它們都有一個「枚舉」所有對象的數字字段 - 從0到9999。假設我按隨機順序創建了這些對象,所以不應該有熱點,但是如果我隨機創建所有10K那會不會創造一個熱點? – frangulyan

+0

那些10K對象在0 - 1000'000'000之間隨機編號的情況如何?在不到一秒的時間內更新所有這些數據是否意味着觸及所有指向熱點的索引位置?這是否意味着如果一個集合中的對象超過500個,我們不應該在一秒內更新集合中的所有對象,或者我在索引和熱點背後的想法出錯了嗎?我相信這在文檔中也值得詳細解釋。 – frangulyan

4

快速附記:在目前所有屬性默認索引,所以如果你有一個最後更新的時間戳它必然被索引 - 所以你不能就能夠避免hotspoting。

索引禁用將在路上提供。