【问题标题】:GAE Storing Key vs StringIDGAE 存储密钥与 StringID
【发布时间】:2012-02-11 03:58:54
【问题描述】:

在 Google App Engine 数据存储区中存储密钥而不是字符串是否有优势。

例如:

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

VS

class Model(ndb.Model):
    user_id = ndb.StringProperty()
  • 为什么要存储 Key 而不是 StringID?只是为了方便吗?
  • 哪个使用的存储空间更少?
  • 哪个查询更快?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore key app-engine-ndb


    【解决方案1】:

    如果您使用entity groups(祖先),KeyProperty 将支持这一点。存储 id 时,除非您存储的 id 的模型是实体组根,否则您需要存储足够的信息来重建完整的密钥。

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

    【讨论】:

    • 好点,对于实体组,存储密钥更有意义。使用像 User_id 这样简单的东西,您会建议存储密钥还是字符串/int id?
    • 我个人认为这是您的偏好。如果您可能想要使用实体组命名空间,我喜欢存储密钥。对于像用户这样不太可能改变的东西,键名/id 可能就足够了。
    • 谢谢罗伯特,我忘记了命名空间。此外,一旦 Google 允许在应用程序之间共享数据,appid 的密钥存储将使事情变得更简单。
    猜你喜欢
    • 2011-09-23
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多