GAE存储密钥与StringID

Kyl*_*ley 5 google-app-engine key app-engine-ndb google-cloud-datastore

在Google App Engine数据存储区中存储Keys over String是否有优势.

例如:

class Model(ndb.Model):
    user_key = ndb.KeyProperty()
Run Code Online (Sandbox Code Playgroud)

VS

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

Rob*_*uin 5

如果您正在使用实体组(祖先),KeyProperty将支持它.存储id时,除非您存储的id的模型是实体组root,否则您需要存储足够的信息来重建完整的密钥.

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