我有一個應用程序,它使用put_async()將880行導入NDB數據存儲區。每當我運行此導入時,它都會超過數據存儲的每日50,000個寫入操作的配額。Appengine NDB:放置880行,超過數據存儲區寫操作配額。爲什麼?
我在試圖理解爲什麼這個操作是如此昂貴,可以做些什麼來保持配額。
有像這樣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個寫入OPS,所以那會產生25520個寫入!我假設索引消耗了剩餘的寫操作,但我不知道究竟有多少,因爲AppEngine只是說我超出了配額。
什麼是減少寫操作數的最佳策略?
更新:我意識到ndb.StringProperty()默認索引。通過在許多這些項目上設置indexed = False,我可以將寫入操作減少到18個。我仍然不理解與index.yaml的關係。 – Irving