我有2个选项来代表其他MyData
实体的相关MyData2
实体:
class MyData(ndb.Model):
...
class MyData2(ndb.Model):
data_key = ndb.KeyProperty(kind='MyData') # data's key
data_key_id = ndb.IntegerProperty() # data's key ID
因此,获得MyData
实体的MyData2
密钥或密钥ID的成本几乎相同。
按密钥
访问MyData
之间是否存在显着的性能差异
my_data = my_data2.data_key.get()
并通过密钥ID访问它?
my_data = MyData.get_by_id(my_data2.data_key_id)
我认为密钥ID的访问使用内置的索引查找,但我不知道直接密钥访问是否进行类似的查找或使用其他方法来获取实体。
所有实体都是根实体,不涉及实体组的祖先关系。
答案 0 :(得分:2)
ndb.Model.get_by_id
只是创建当前模型的种类的密钥,并在其上调用get
,因此它们的所有意图和目的相同。
由于异步间接,以及Model如何重新声明处理冲突的方法,它不是最清晰的代码,但你可以看到它here