我似乎记得,每个存储的旧数据存储属性都有类似于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