2010-08-16 94 views
0

这是一般的App Engine的数据存储索引的问题。数据存储自动构建可用于简单单一属性查询(不涉及组合键的查询)的索引。App Engine的 - 数据存储 - 索引

是否在产生该索引的开销上的实体的属性的基础数据类型而变化?

基本上我的问题可以归结为:

def Person(db.Model): 
    name = db.StringProperty() 
    rollnumber = db.IntegerProperty() 

相比的当在索引开销相对于财产rollnumber较小?

回答

4

需要索引的空间中的值是由:

  • 值本身的大小,
  • 如果它是可变长度的,像一个字符串,任何地方从1到3个字节来存储长度价值
  • 名称的大小(例如,“rollnumber”),再加上,再次,几个字节来存储长度
  • 大小的实体的键
  • 几个额外字节的开销

这里唯一令人惊讶的事情应该是名称与每个索引属性一起存储。这是因为没有静态定义的列名 - 没有模式 - 在数据存储区,因此有必要将其存储与每一个索引值。

+0

有没有在查询方面,即它的查询性能取决于属性的数据类型有什么区别?从你的答案中,我会想象不到 - 但我只是想确定。 – Rahul 2010-08-16 21:42:46

+0

没有,不应该有一个显著差异对不同的数据类型的过滤,除非你在谈论筛选上一个很长的字符串,例如。 – 2010-08-17 05:33:12