JSON file VS SQLite android



我将开发一个android应用程序与大量的数据(json文件与一些行和CSV的图形数据有很多行),这些数据每5分钟改变一次,并取代所有以前的数据(或大部分)。

设计这个的最佳方法是什么?我有两个选项:

  • 将所有数据保存在sqlite数据库中,并通过IntentService同步。

  • 将数据保存为json和csv文件,每5分钟更换一次。

哪种方法性能最好?这考虑了解析文件的时间、排序数据的时间、下载时间和数据的一致性。

还有其他想法吗?

PD:我也需要一个缓存系统,如果我没有互联网,我需要以前存储的数据

SQLite的优点:

  • ACID
  • 您可以更快地提出复杂的请求(例如:"从(C/D)>E的项目中只给我字段A,B ")
  • 我打赌更紧凑的大数据(整数存储为整数而不是单个数字的字符串)
  • 只有一个文件
  • 您可以轻松地将旧数据与新数据合并
  • 你可以更新当前数据,即使使用它
  • 并发可以处理
JSON/CSV的优点:
  • 更容易调试(纯文本)
  • 更快地进行整个更新(复制新文件+删除旧文件)

对于原始问题,整个数据的删除/替换使JSON/CSV成为赢家。

但是,如果应用程序每隔10秒检索部分数据并将其与前一个合并/更新,那么SQLite将是更好的选择。

Sqlite主要用于希望保存数据并供将来使用的情况。在您的情况下,数据正在改变每个5 minutes,所以最好有JSON,因为每次在5 minutes之后制作Database connection storeretrieve都需要一些时间。

更新:

我也有同样的应用程序,其中的数据每次都在变化。在这种情况下,我使用Map<K, V>ArrayList来维护值,因为数据每次都在变化,我认为每次在Sqlite中存储数据是不可行的。

在Sqlite中执行DB Connection,存储,检索,更新数据需要花费很多时间。

我建议使用JSON或其他类型的对象序列化,除非:

  • 写操作需要符合ACID
  • 您需要对数据进行报告,这可能涉及将数据复制到外部RDBMS或
  • 你希望加入那些过度使用/滥用数据库的同谋,就像现在常见的那样

理想情况下,这应该取决于您是否需要以前的数据,以便将其与当前数据进行比较等等。作为经验法则,当您需要在稍后阶段存储和检索数据时,我会使用SQLite。如果数据仅用于显示,我宁愿将其保存在程序内存中。请注意,这并不涉及文件操作。

JSON和SQLite的目的完全不同

  • JSON =在服务器和客户端之间发送和接收数据。
  • SQLite=用于存储数据。

最新更新