我的网络应用程序将有大约150个字段,当在任何字段(至少一个)中更改值时,我应该保存更改的值。 我应该如何用GAE存储这些值?我应该直接将它们保存在数据存储区吗?我应该暂时使用memcache,然后在数据存储中一次保存所有值吗?或者,应该遵循其他一些方法吗?
答案 0 :(得分:3)
数据存储区是您的数据库。 Memcache用于存储从数据存储区中提取的数据,并暂时保存在内存中,以避免过多的回调数据库。您应首先围绕数据存储区设计应用程序,然后使用memcache来提高性能。
根据您选择的编程语言(java,python,go),有许多工具可以帮助您将应用程序中的对象映射到数据存储区并有效地使用内存缓存。
答案 1 :(得分:0)
首先,您应该了解如何使用数据。您打算做哪些查询?您的实体的大小是多少?
数据存储区与关系数据库非常不同。那就是改变了多少属性并不重要,因为没有办法自己更新属性。您只能将实体保存为整体。我不知道你的用例,但是应该有一个更好的方法来构建你的数据,而不是单个实体有大约150个属性。你的用例是什么?
同时为实体提供太多属性可能会导致索引爆炸,或者减慢数据存储区写入速度。
答案 2 :(得分:0)
我建议您将实体拆分为根实体,并将几个链接的实体拆分为150个属性中的每一个 - 这样,当您更新一个属性时,您只需要保存一个(或两个,如果更新)在根实体上反映了数据存储区中较小的实体而不是巨大的实体。
使用memcache来防止读取,而不是存储转发到数据存储区的数据。可以刷新Memcache,并且可以在永久存储之前销毁其中的数据。
更进一步,属性分组可以反映一起更新的数据 - 例如,如果您总是一起更新 street 和 zipcode ,那么保留它们是有意义的在一个单一的结构中。