Firebase 新Firestore的限制说明

Firebase 新Firestore的限制说明,firebase,limits,google-cloud-firestore,Firebase,Limits,Google Cloud Firestore,因此,在Firebase新Firestore产品的限制部分()中,它说: 对文档包含的集合的最大写入速率 索引字段中的顺序值:每秒500 我们很困惑这到底意味着什么 比如说,如果我们有一个名为users的根级集合,其中包含1000万个条目,那么这个速率是否会以这种方式影响这个集合,从而只有500个用户可以在任何给定的秒内更新他们的数据 有人能澄清一下吗?很抱歉造成混淆;举个例子可能会有所帮助 如果您的用户文档包含上次更新的时间戳,并且您在该时间戳上建立了索引,那么每次新的写入都会围绕相同的值(现

因此,在Firebase新Firestore产品的限制部分()中,它说:

对文档包含的集合的最大写入速率 索引字段中的顺序值:每秒500

我们很困惑这到底意味着什么

比如说,如果我们有一个名为
users
的根级集合,其中包含1000万个条目,那么这个速率是否会以这种方式影响这个集合,从而只有500个用户可以在任何给定的秒内更新他们的数据


有人能澄清一下吗?

很抱歉造成混淆;举个例子可能会有所帮助

如果您的用户文档包含上次更新的时间戳,并且您在该时间戳上建立了索引,那么每次新的写入都会围绕相同的值(现在)聚集在一起,从而在索引中创建一个热点

类似地,如果您以某种方式为用户分配了一个顺序值,如行中的位置或类似的内容,这也会创建一个热点

顺便说一句,这就是为什么生成的文档ID是随机字符串。这将在主键索引上均匀分布写入操作


如果您避免这些类型的模式,天空的限制,但在测试期间,您会达到数据库范围的限制。

一个快速的补充说明:目前所有属性都是默认索引的,因此如果您有一个最后更新的时间戳,它必然会被索引-因此您将无法避免热点


尽管如此,索引禁用将在将来提供

我建议您在和/或而不是在StackOverflow上问这个问题,您将在那里获得更好的洞察力。StackOverflow最适合查询特定代码。此外,谷歌还计划在获得更多Firestore测试版性能数据后,取消他们发布的限制。这有点模糊,因为不知道索引是如何建立的,热点是如何创建的。此外,对象中的任何数字字段都可以被视为“连续的”,因为您可以按该字段排序。我相信您所说的顺序是指某段时间内更新/写入对象的字段。假设我有10000个对象,它们都有一个数字字段,用于“枚举”所有对象-从0到9999。假设我以随机顺序创建了这些对象,因此不应该有热点,但是如果我在不到1秒的时间内随机创建了所有10K对象,这会创建热点吗?如果这些10K对象随机编号在0-1000'000'000之间,情况会如何?在不到一秒钟的时间内更新所有索引是否意味着触及所有索引位置,即热点?这是否意味着如果集合中的对象超过500个,就不应该在不到一秒钟内更新集合中的所有对象,或者我是否误解了索引和热点背后的想法?我相信这一点也值得在文档中详细解释。如果您达到该利率限制,会发生什么情况?对于用户来说,是速度变慢了,还是请求被拒绝了?如果刚刚超过了限制,写操作只需要稍微长一点时间。如果超过限制,您最终将看到写入失败并出现争用错误。如果您正在使用我们的SDK,它们会为您处理这个问题:它们会以指数退避的方式重试此类错误。我猜这同样适用于集合组范围索引?