我似乎記得,每個存儲的舊數據存儲屬性都有類似於2 的數據存儲寫入操作(DWO),並且可能還有一些取決於它們如何編制索引。與舊數據存儲區屬性相比NDB JsonProperty配額影響?
在舊的數據存儲中,我經常存儲所有不需要在JSON字符串中索引的內容,並將其存儲爲TextProperty以保存多個寫入。
已經習慣於直接從數據存儲保存和使用JSON中的所有內容,當切換到新應用的NDB時,我自然會使用NDB JsonProperty。
像往常一樣,我第一次檢查了我的配額限制(典型的自由配額限制用戶體驗?),並且注意到所有的數據存儲區寫入(完全由僅包含JsonProperties的模型組成)正在計劃很多DWO配額。
立即想知道:根據JsonProperty的結構,GAE DataStore是否進行多次寫操作?還是隻是將整個屬性blob存儲到數據存儲中,只需要一個「blob」存儲所需的DWO?
我認爲後者,並記得在文檔中閱讀,但大量的配額消耗(典型的自由配額限制用戶偏執?),讓我懷疑是否使用JsonProperty不如使用舊的數據存儲並將JSON字符串保存爲TextProperty - 這肯定是非結構化的斑點。
如果能夠明確地清除這將是一件好事,因此我可以回到僅關注應用程序的「appengine承諾」。 :)
大,謝謝你的答案寫(和鏈接!)。我會進一步調查。 – 2013-02-27 05:38:12
壓縮與它無關 - 無論大小如何,都會計算DWO。索引確實很重要。但我會看看你的應用程序的其他部分。你有沒有嘗試過Appstats? – 2013-02-27 16:24:41
此外,請檢出dev_appserver數據存儲區查看器(localhost:8080/_ah/admin)。查看數據存儲實體時,您會看到一個額外的列,指出數據存儲「寫操作」的數量。當你用'indexed = True'改變屬性的數量時,你會看到這個數字的變化(注意:'True'是默認值)。另請注意,在更改Model類以便將屬性顯式標記爲'indexed = False'後,當數據存儲刪除索引行的索引行時,首次更新每個實體時仍會產生額外的DWO。 – 2013-02-27 17:56:28