App Engine - 数据存储区 - 索引

Rah*_*hul 0 indexing google-app-engine datastore

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

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

基本上我的问题归结为:

def Person(db.Model):
  name = db.StringProperty()
  rollnumber = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)

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

Nic*_*son 5

索引值所需的空间包括:

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

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