记录一下GAE上各种属性所占的空间大小
2010 10 20 12:43 AM 2579次查看
分类:Google App Engine 标签:Google App Engine
测试所用类型名为1字节,属性名也是1字节,app id长度是8。当属性名为2字节时,所占空间将增加1字节。
| 类型 | 长度 |
|---|---|
| NULL | 7 |
| StringProperty | 9+编码成UTF-8后的长度 |
| ByteStringProperty | 11+长度 |
| BooleanProperty | 9 |
| IntegerProperty | 9 |
| FloatProperty | 16 |
| DateTimeProperty、DateProperty | 18 |
| TimeProperty | 16 |
| ListProperty、StringListProperty | 每个元素的长度总和(查看源码后发现,空列表不保存到datastore,直接当成不存在的属性) |
| SelfReferenceProperty | 8(app id)+10(类型名长度1,作为字符串为10)+9(id作为int64或name作为字符串至少为9)+name长度(如果这个Key有祖先,还得计算路径里各个祖先的长度,即类型名+id或name) |
| UserProperty | 9(+email长度)+9(+验证域长度,一般是gmail.com,即9)+9(内部id,int64)+3(未知) |
| TextProperty | 11+编码成UTF-8后的长度 |
| LinkProperty | 11+网址长度 |
| IMProperty | 12+协议长度+地址长度 |
| GeoPtProperty | 29 |
| RatingProperty | 11 |
可见为了节省存储空间,尽量使用短的类型名和属性名,采用IntegerProperty、StringProperty这种较小的类型,ReferenceProperty和UserProperty尽量少用,前者可以只存储一个key id或name,后者可以存储email。
0条评论 你不来一发么↓