Google app engine GAE存储密钥与StringID

Google app engine GAE存储密钥与StringID,google-app-engine,google-cloud-datastore,key,app-engine-ndb,Google App Engine,Google Cloud Datastore,Key,App Engine Ndb,在Google App Engine数据存储中,将密钥存储在字符串之上是否有优势 例如: class Model(ndb.Model): user_key = ndb.KeyProperty() VS 为什么要存储密钥而不是StringID?这只是为了方便吗 哪个使用更少的存储空间 哪个查询更快 如果您正在使用(祖先),则KeyProperty将支持该功能。在存储id时,除非存储id的模型是实体组根,否则需要存储足够的信息来重建完整密钥 KeyProperty将占用更多空间,因为它存

在Google App Engine数据存储中,将密钥存储在字符串之上是否有优势

例如:

class Model(ndb.Model):
    user_key = ndb.KeyProperty()
VS

  • 为什么要存储密钥而不是StringID?这只是为了方便吗
  • 哪个使用更少的存储空间
  • 哪个查询更快
如果您正在使用(祖先),则KeyProperty将支持该功能。在存储id时,除非存储id的模型是实体组根,否则需要存储足够的信息来重建完整密钥


KeyProperty将占用更多空间,因为它存储的是额外的数据,但在检索其他实体时使用它可能更方便。查询速度应该是可比的。

好的一点是,对于实体组,存储密钥更有意义。对于像用户id这样简单的东西,您建议存储密钥还是字符串/int id?我个人认为这是您的首选。如果您可能希望使用实体组或名称空间,我喜欢存储密钥。对于像user这样不太可能改变的东西,键名/id可能就足够了。谢谢Robert,我已经忘记了名称空间。此外,一旦谷歌允许在应用程序之间共享数据,appid的密钥存储将使事情变得更简单。
class Model(ndb.Model):
    user_id = ndb.StringProperty()