【问题标题】:Storing JSON objects: SQLite vs serialization to disk存储 JSON 对象:SQLite 与序列化到磁盘
【发布时间】:2013-03-13 21:45:37
【问题描述】:

将构建一个应用程序,该应用程序将从 Web 服务中提取 JSON 对象,数以百计,每个相对较小,例如每个 20kb。

除了显示这些 POJO、下载新的和更新的 POJO(如果可用)以及删除过时的 POJO 之外,该应用不会做太多其他事情。持久存储这些对象的首选方法是什么?我猜两个主要竞争者将它们存储在 SQLite DB 中,可能使用 ORMLite 来减少开销,或者只是将对象序列化到磁盘,可能在一个大文件中并使用非常快速的 JSON 解析器。

有什么想法是首选方法吗?

【问题讨论】:

    标签: java android json sqlite


    【解决方案1】:

    您可以考虑使用 CouchDB 作为移动客户端和您的网络服务之间的缓存。

    CouchDB 必须在 Internet 上的服务上运行,缓存来自 Web 服务的对象。在客户端上,您可以使用 TouchDB-Android:https://github.com/couchbaselabs/TouchDB-iOS/wiki/Why-TouchDB%3F。 TouchDB-Android 可以与运行在 Internet 上的 CouchDB 实例自动同步。然后应用程序本身将单独访问 TouchDB。 TouchDB 会自动检测是否有互联网连接,因此即使没有互联网连接,您的应用程序也会继续运行。

    优点: - 缓存 JSON 调用 - 客户端在互联网连接关闭的情况下继续工作,当互联网连接再次打开时自动同步。 - 负载您的网络服务,并且您可以扩展。

    我们之前使用此设置来让 Android 软件无缝运行,即使在互联网连接频繁中断并且我们从中访问数据的服务非常缓慢且容量有限的情况下也是如此。

    【讨论】:

      【解决方案2】:

      像 SQLLite 这样的 dbms 应该具有查询、索引和排序功能(以及其他标准 SQL DBMS 功能),您应该考虑是否需要这些功能。您计划在生产环境中拥有多少个对象?如果说百万磁盘序列化方法可能无法扩展。

      【讨论】:

      • 对象将显示在不同的视图中,即按类别、按日期,因此需要进行某种类型的查询和排序。我相信这对任何一种实现都不是问题。对于我正在设计的应用类型,不可能有超过几百个对象
      猜你喜欢
      • 2017-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 2012-07-24
      相关资源
      最近更新 更多