数据存储区(数据存储区模式下的Firestore)是否按实体的键/名称顺序存储实体?

时间:2020-08-19 21:41:09

标签: google-cloud-firestore google-cloud-datastore

执行写操作时,数据库是否通过实体的键以某种顺序写实体?

例如,如果我编写了以下按键(故意使name(1、7、3)不按顺序排列):

["A", "1"]
["A", "7"]
["A", "3"]

是否对没有过滤器或排序的A类型查询将返回结果为:

["A", "1"]
["A", "3"]
["A", "7"]

如果我的密钥包含时间戳(以毫秒为单位),则可能更重要:

["UserSession", "e4facf67-969d-46f5-b922-390f61beac0a", "UserRecord", "1597872201000"]
["UserSession", "e4facf67-969d-46f5-b922-390f61beac0a", "UserRecord", "1597872207000"]
["UserSession", "e4facf67-969d-46f5-b922-390f61beac0a", "UserRecord", "1597872203000"]

会查询

("UserRecord").hasAncestor(["UserSession", "e4facf67-969d-46f5-b922-390f61beac0a"])

返回按其名称排序的对象(又称时间戳,以毫秒为单位)?

  • 1597872201000
  • 1597872203000
  • 1597872207000

1 个答案:

答案 0 :(得分:2)

是的,Data Store模式下的Cloud Firestore确实按关键顺序存储实体。您可以从best practices文档中看到以下内容:

如果您将自己的手动数字ID或自定义名称分配给创建的实体,请不要使用单调递增的值

如果应用程序产生大量流量,则这种顺序编号可能会导致影响数据存储模式延迟的热点。