App Engine - 数据存储区 - 索引

时间:2010-08-16 19:56:23

标签: google-app-engine indexing datastore

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

生成此索引的开销是否会因实体属性的基础数据类型而异?

基本上我的问题归结为:

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

name 相比,属性 rollnumber 的索引开销是否较小?

1 个答案:

答案 0 :(得分:4)

索引值所需的空间包括:

  • 值本身的大小,
  • 如果它是可变长度,就像一个字符串,可以在1到3个字节之间存储值的长度
  • 名称的大小(例如'rollnumber'),再加上几个字节来存储长度
  • 实体密钥的大小
  • 一些额外的开销字节

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