1

我有一个具有 2 个属性的实体:UserId(字符串)和RSSSubscriptions(字符串)。此类的实例将存储在 App Engine Datastore 中。

其中RSSSubscriptions应该是一个键值对,例如"Site1: Feed1", "Site2: Feed2".

由于像 Hashmaps 这样的数据类型是不可持久的,我不得不将这些数据保存为字符串格式。目前我已将其存储为 JSONArray 格式的字符串类型。说,"[{"Site1: Feed1"}, {"Site2: Feed2"}]"

我的客户端将是一个 Android 应用程序。所以我应该在客户端将此字符串解析为 JSON 数组。但我认为每次用户添加新订阅时,创建一个 JSON 格式的字符串并将其附加到现有字符串是一个坏主意。有更好的想法吗?

4

2 回答 2

1

您可以使用ndb 出于该特定原因支持的JSONProperty 。在我看来,将 Json 存储为字符串并来回解析它是一个“毛茸茸”的解决方案。您必须非常小心以保证有效性。

于 2012-12-14T10:28:41.673 回答
0

正确答案取决于几个因素,其中预期的对数是最重要的。重要的是要记住,将配对存储在通过查询访问的实体中会产生大量成本。进行查询有很多操作成本,并且会占用大量 CPU 时间。将此与使用由用户 ID 键入的单个记录并将 JSON 存储在 TextProperty 中进行比较。这是一个很小的操作成本和 cpu 时间,可能比查询少 10 倍。

在决定采用技术上更简洁的查询实体方法时,请考虑这些因素。我自己,我总是在 TextProperty 中对“数千对”卷中的任何内容使用序列化字符串,除非删除率非常高(即使这样,字符串方法可能会更好)。考虑到 GAE 的高资源成本,使用查询通常是 GAE 的最后设计选择。

于 2012-12-13T16:36:48.030 回答