0
我偶然發現App Engine數據存儲區的這個功能,您實際上不必擁有一個持久化的根實體與GAE一起使用強一致的行爲。您可以使用計算密鑰來存儲和加載子實體。 我的問題是:這是一個很好的做法還是這太依賴於數據存儲的實現怪癖?GAE祖先查詢Hack:這是一個很好的做法嗎?
下面是一個使用Python的例子。我敢肯定,這個習慣用法也適用於Java。
假設你有一個孩子的實體:
CustomerReport(ndb.Model):
foo=ndb.StringProperty
bar=ndb.FloatProperty
#...
CustomerReports是基於一個真正的實體類型,客戶產生的。
ReportRoot(ndb.Model):
pass
像這樣::但是你可以通過計算祖先鍵這樣一個不存在的母公司具有較強的一致性,保存這份報告實體
CustomerReport(parent=ndb.Key(ReportRoot, customer.key.id()), ...).put()
這可以再次通過簡單的計算來檢索關鍵:
CustomerReport.query(ancestor=ndb.Key(ReportRoot, customer.key.id())).fetch()
謝謝。
我可以使用這種技術來避免在生成和讀取報告時鎖定客戶實體組。 – Nikolai 2014-09-01 19:53:01