Python AppEngine数据存储密钥名称是否保留/排序?

Python AppEngine数据存储密钥名称是否保留/排序?,python,google-app-engine,google-cloud-datastore,Python,Google App Engine,Google Cloud Datastore,众所周知,AppEngine数据存储构建在Bigtable之上,Bigtable本质上是按键排序的。AppEngine数据存储如何生成键也是众所周知的():通过“组合”应用程序id、实体种类、实例路径和唯一实例标识符(可能通过连接,请参阅) 不清楚的是,在存储该唯一实例标识符之前是否对其进行了转换,例如,会使顺序键在存储中不连续(例如,如果我指定key_name=“Test”,“Test”是否只是在键的末尾连接而不进行转换?),当然,保留应用程序ID、实体类型、,现在的路径是利用Bigtable

众所周知,AppEngine数据存储构建在Bigtable之上,Bigtable本质上是按键排序的。AppEngine数据存储如何生成键也是众所周知的():通过“组合”应用程序id、实体种类、实例路径和唯一实例标识符(可能通过连接,请参阅)

不清楚的是,在存储该唯一实例标识符之前是否对其进行了转换,例如,会使顺序键在存储中不连续(例如,如果我指定key_name=“Test”,“Test”是否只是在键的末尾连接而不进行转换?),当然,保留应用程序ID、实体类型、,现在的路径是利用Bigtable中的局部性/键排序(Google的另一种主存储技术F1也同样适用于分层键),但我不知道唯一的实例标识符


我是否可以依赖AppEngine的数据存储中保留的
key\u name
s?

密钥是使用特殊的协议缓冲区序列化组成的,该序列化保留了它编码的字段的自然顺序。这意味着,是的,具有相同种类和父级的两个实体将按键名对其键进行排序


但是请注意,排序顺序首先有实体类型和父键,因此两个不同类型的实体,或相同类型但具有不同父实体的实体,即使密钥是连续的,也不会按顺序显示。

密钥是使用特殊的协议缓冲区序列化组成的,该序列化保留了它编码的字段的自然顺序。这意味着,是的,具有相同种类和父级的两个实体将按键名对其键进行排序


但是,请注意,排序顺序首先有实体类型和父项,因此不同类型的两个实体,或者相同类型但具有不同父项实体的两个实体,即使它们的键是顺序的,也不会顺序出现。

除了@Nick解释的内容之外:


如果使用自动生成的数字ID,则ID过去是半递增的(ID以递增的块分配),但在新系统中,它们非常分散

除了@Nick解释的内容之外:


如果使用自动生成的数字ID,则ID过去是半递增的(ID以递增的块分配),但在新系统中,它们非常分散

尼克,你回来了!耶@彼得内戈我仍在关注,所以我很少有时间回答。还有一些人写了比我最近写的更好的答案!尼克,你回来了!耶@彼得内戈我仍在关注,所以我很少有时间回答。还有一些人写了比我最近写的更好的答案!