Cloud Firestore-在复合索引上写入索引速率限制

时间:2019-09-30 18:32:39

标签: firebase google-cloud-firestore

在Cloud Firestore 'Usage and Limits' documentation中,规定的将文档写入单个集合(说明顺序索引)的速率限制为:

  

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

我知道此限制是由于在创建顺序索引时出现了“热点”。

我的问题是:如果我禁用集合中所有顺序字段的索引(例如Group)并且仅使用复合索引(例如timestamp),则速率限制仍将适用于{{1 }}在整个集合中还是仅在特定的[user_id, timestamp]中?

1 个答案:

答案 0 :(得分:3)

看来,此解决方案减轻了单个集合的速率限制,如Firebase官方人员hereexample solution provided for sharding timestamps所述。

该解决方案的实质在于确保索引的顺序值分散在多个数据库分片上。这是因为紧密相邻的顺序值将趋向于群集到单个内部数据库计算机,从而在短时间内对单个计算机进行过多写入时,会强制进行限制。

在对顺序值建立索引之前具有前缀(可以使用复合索引来实现),可以确保这些索引在内部计算机之间进行分区(假设在复合索引的第一部分中提供了方差)。然后可以通过在给定的复合索引前缀内进行写操作来确定速率限制,而不是通过集合中的全局操作来确定速率。