2013-03-27 35 views
0

我对Google App Engine数据存储为什么使用密钥和和ID有个疑问。从关系数据库背景来看,我将实体与行进行比较,为什么在存储实体时它需要一个键(这是一个长自动生成的字符串)和一个ID(可以手动或自动输入)?这似乎是识别记录的空间的巨大浪费。再次,我对这种类型的数据库是新手,所以我可能会错过一些东西。数据存储区为什么使用密钥和ID?

+0

该id只是您可以控制的关键的一部分,如果您选择。读一下“https:// developers.google.com/ appengine/docs/python/datastore/entities”,它定义了你的密钥是什么/为什么 – 2013-03-27 01:25:09

+0

为了澄清,你必须拥有两者,因为密钥是依赖的在ID? – user2213892 2013-03-27 01:31:25

+0

是的,对于某些使用情况,您可能需要明确设置密钥中的ID。 – 2013-03-27 01:34:11

回答

0

基本上,密钥是从两片的信息来构建:

  • 的实体类型(在物化,它是类的对象)
  • 的实体的ID /名称

因此,对于给定的实体类型,密钥和id是完全相同的。

如果您自己没有指定ID,则会生成一个随机ID并根据该随机ID创建密钥。

0

关键设计是高效数据存储操作的关键部分。这些键是存储在内置和自定义索引中的,当您查询时,您可以要求只返回键(在Python中:keys_only=True)。只有键的查询花费的是常规查询的一小部分,无论是在$$还是在较短的时间内,并且具有非常低的反序列化开销。

所以,如果你有存储在您的密钥ID的有用/有趣的事情,你可以进行纯键查询和找回大量有用数据的匆忙和非常便宜。

注意,这延伸到母密钥和命名空间,这是关键,因此更多的地方,你可以在“商店”有用数据的所有部分,并与纯键查询检索所有的它。

这是一个重要的优化理解和我们整体设计的重要组成部分。

相关问题