firebase 在考虑Firestore速率限制时,收集和子收集是否分开?

axzmvihb  于 2023-08-07  发布在  其他
关注(0)|答案(2)|浏览(96)

我对firestore集合的速率软速率限制500有点困惑,其中文档在索引字段中包含顺序值。这是否意味着子集合被认为是集合?例如,如果我期望每秒对1个顶级集合的10个子集合进行100次写入(索引字段是顺序的),我会达到顶级集合的速率限制吗?
此外,这是否也会影响firestore的serverTimestamp方法?例如,在一个类似聊天的应用程序中,使用一个集合来存储所有消息,我可以看到每秒发送超过500条消息。
https://firebase.google.com/docs/firestore/quotas#writes_and_transactions

b4lqfgs4

b4lqfgs41#

这是否意味着子集合被视为集合?
子集合被视为具有自己的索引的独立集合.
例如,如果我预期每秒对1个顶级集合的10个子集合执行100次写入(索引字段是连续的),我是否会达到顶级集合的速率限制?
不可以。每个子集合都是独立考虑的。
此外,这是否也会影响firestore的serverTimestamp方法?
是的,它们被认为是连续的。这在以下文档中进行了介绍:
如果为集合中文档之间按顺序递增或递减的字段(如时间戳)编制索引,则对集合的最大写入速率为每秒500次写入。如果不基于具有连续值的字段进行查询,则可以使该字段不进行索引以绕过此限制。

k10s72fa

k10s72fa2#

软写入速率限制是由在磁盘附近写入数据的物理限制引起的。在一定的时间跨度内,可以将多少数据写入磁盘的一部分,这只是一个限制。
在考虑集合时,限制分别应用于每个集合,因为每个集合存储在存储的单独区域中。
但是你也应该始终考虑索引,因为每个索引(就像每个集合一样)都存储在磁盘的某个区域中,因此写入同一个索引会导致该区域出现热点。出于这个原因,常规集合索引与它们所应用的集合的限制保持一致,但是集合组索引实际上会导致它们所索引的整个集合组上的热点。

相关问题