Jas*_*ith 7 google-app-engine google-cloud-datastore
目标是减少一段经常运行的代码的CPU成本和响应时间,并且每次必须db.get()几百个密钥.
我可以期望具有数百个密钥的db.get()的API时间大致线性减少,因为我减小了实体的大小吗?目前的实体贴有以下数据:9字符串,布尔9,8整数,1 GeoPt,2日期时间,1个文本(平均大小:约100个字节FWIW),1个参考,1周的StringList(平均大小为500字节).目标是将绝大多数此类数据移动到相关类中,以便快速获取主模型的核心.
在重构之后,我仍然需要获得相同的高成本获取现有实体吗?文档说明同时获取模型的所有属性.旧的不需要的属性是否会在我的硬币上转移到RPC而用户在等待?换句话说:如果我想减少实体的加载时间,是否有必要将旧实体迁移到具有新定义的实体?如果是这样,重新放入()实体是否足够,或者我必须在一个全新的密钥下保存?
考虑:
class Thing(db.Model):
text = db.TextProperty()
strings = db.StringListProperty()
num = db.IntegerProperty()
thing = Thing(key_name='thing1', text='x' * 10240,
strings = ['y'*500 for i in range(10)], num=23)
thing.put()
Run Code Online (Sandbox Code Playgroud)
假设我重新定义要精简的东西并推出一个新版本:
class Thing(db.Model):
num = db.IntegerProperty()
Run Code Online (Sandbox Code Playgroud)
我再次取回它:
thing_again = Thing.get_by_key_name('thing1')
Run Code Online (Sandbox Code Playgroud)
我是否缩短了此实体的获取时间?
Nic*_*son 12
按顺序回答您的问题:
| 归档时间: |
|
| 查看次数: |
2352 次 |
| 最近记录: |