我有一个包含2个属性的实体: UserId (String)和 RSSSubscriptions (String)。此类的实例将存储在App Engine数据存储区中。
其中 RSSSubscriptions 应该是"Site1: Feed1", "Site2: Feed2".
由于像Hashmaps这样的数据类型不可持久,因此我不得不将这些数据保存为String格式。目前我已将其存储为具有JSONArray格式的字符串类型。说,"[{"Site1: Feed1"}, {"Site2: Feed2"}]"
。
我的客户端将是Android应用。所以我想把这个字符串解析为客户端的JSON数组。但我认为每次用户添加新订阅时,创建一个具有JSON格式的String并将其附加到现有字符串是一个坏主意。有更好的想法吗?
答案 0 :(得分:1)
出于特殊原因,您可以使用ndb支持的JSONProperty。在我看来,它是一个“毛茸茸的”解决方案,将Json存储为字符串并来回解析它。你必须非常小心保证有效性。
答案 1 :(得分:0)
正确的答案取决于几个因素,预期的对数是最重要的。重要的是要记住,将该对存储在由查询访问的实体中存在相当大的成本。执行查询需要花费大量的操作,并且会有大量的CPU时间。将此与使用由用户标识键入的单个记录进行比较,并将JSON存储在TextProperty中。这是一个小的操作成本和CPU时间,可能比查询少10倍。
在决定采用技术上更清晰的查询实体方法时,请考虑这些因素。我自己,我总是在TextProperty中使用序列化的字符串来处理“数千对”卷中的任何内容,除非删除率非常高(即使这样,字符串方法也可能更好)。鉴于资源成本高,使用查询通常是GAE的最后设计选择。