2017-10-04 177 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。

索引禁用将在路上提供。