我有一个使用 put_async() 将 880 行导入 NDB 数据存储的应用程序。每当我运行此导入时,它都会超过 50,000 次数据存储的每日写入操作配额。
我试图理解为什么这个操作如此昂贵,以及可以做些什么来保持在配额之下。
有 13 列,如下所示:
stringbool = ['true', 'false']
class BeerMenu(ndb.Model):
name = ndb.StringProperty()
brewery = ndb.StringProperty()
origin = ndb.StringProperty()
abv = ndb.FloatProperty()
size = ndb.FloatProperty()
meas = ndb.StringProperty()
price = ndb.FloatProperty()
active = ndb.StringProperty(default="false", choices=stringbool)
url = ndb.StringProperty()
bartender = ndb.StringProperty()
lineno = ndb.IntegerProperty()
purdate = ndb.DateProperty()
costper = ndb.FloatProperty()
我已将索引修剪回一个:
- kind: BeerMenu
properties:
- name: brewery
- name: name
根据 SDK 数据存储查看器,每行是 29 次写入操作,因此将生成 25520 次写入!我假设索引消耗了其余的写操作,但我不知道具体有多少,因为 AppEngine 只是说我已经超过了配额。
减少写入操作次数的最佳策略是什么?