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

Google cloud firestore 数据存储(数据存储模式下的Firestore)是否按实体的键/名称顺序存储实体?,google-cloud-firestore,google-cloud-datastore,Google Cloud Firestore,Google Cloud Datastore,当执行写入操作时,数据库是否按照实体键的某种顺序写入实体 例如,如果我编写了以下键(故意使名称(1、7、3)不按顺序排列): 在没有筛选或排序的情况下,对种类a的查询是否会返回以下结果: ["A", "1"] ["A", "3"] ["A", "7"] 如果我的密钥包含时间戳(名称为毫秒),则可能更为重要: 你想询问一下吗 ("UserRecord").h

当执行写入操作时,数据库是否按照实体键的某种顺序写入实体

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

在没有筛选或排序的情况下,对种类
a
的查询是否会返回以下结果:

["A", "1"]
["A", "3"]
["A", "7"]
如果我的密钥包含时间戳(名称为毫秒),则可能更为重要:

你想询问一下吗

("UserRecord").hasAncestor(["UserSession", "e4facf67-969d-46f5-b922-390f61beac0a"])
返回按名称排序的对象(也称为时间戳,以毫秒为单位)

  • 1597872201000
  • 1597872203000
  • 1597872207000

是的,数据存储模式下的Cloud Firestore会按键顺序存储实体。您可以从文件中看到这一点,其中说明:

如果为创建的实体指定了自己的手动数字ID或自定义名称,请不要使用单调递增的值

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


是的,数据存储模式下的Cloud Firestore确实按键顺序存储实体。您可以从文件中看到这一点,其中说明:

如果为创建的实体指定了自己的手动数字ID或自定义名称,请不要使用单调递增的值

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


因此,上面记录的位置不是
[“UserSession”、“e4facf67-969d-46f5-b922-390f61beac0a”、“UserRecord”、“1597872201000”]
。在这种情况下,UUID将有助于保持与同一UUID+时间戳的冲突,记录实际上位于
[“UserRecord”,“1597872201000”]
,可能会发生一些奇特的祖先事件。但Kind+Timestamp(单调递增的值)实际上是它的ID,在高使用率下肯定会产生冲突。因此,一个键
[a,foo,B,1]
[a,bar,B,1]
会与共享
[B,1]
键发生冲突。我在这里用一个例子更直接地问了这个问题:所以上面记录的位置不是
[“UserSession”,“e4facf67-969d-46f5-b922-390f61beac0a”,“UserRecord”,“1597872201000”
。在这种情况下,UUID将有助于保持与同一UUID+时间戳的冲突,记录实际上位于
[“UserRecord”,“1597872201000”]
,可能会发生一些奇特的祖先事件。但Kind+Timestamp(单调递增的值)实际上是它的ID,在高使用率下肯定会产生冲突。因此,一个键
[a,foo,B,1]
[a,bar,B,1]
会与共享
[B,1]
键发生冲突。我在这里用一个例子更直接地问了这个问题:
["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"])