2011-12-28 41 views
15

我会制定了大量数据的Android应用程序(有一些行和CSV图形数据有很多行的JSON文件),这一数据的变化,每5分钟,并取代所有之前的数据(或大部分)。JSON文件VS的SQLite的Android

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

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

  • 保存在JSON和CSV文件中的数据并更换该每隔5分钟。

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

还有其他想法吗?

PD:我需要一个缓存系统也一样,在情况下,如果我没有上网,我需要先前存储的数据

+0

从哪里获取大量数据? – 2011-12-28 04:57:18

+0

来自我们网络服务器的财务数据 – 2011-12-28 05:52:28

回答

12

Sqlite当你想要的数据被保存并在今后的使用大多使用。在你的情况下,数据每5 minutes更改所以它最好有JSON因为每次使Database connectionstoreretrieve5 minutes将需要一些时间。

UPDATE:

我也有在该数据每次都改变相同的应用。在这种情况下,我用Map<K, V>ArrayList保持值,因为当数据发生了变化,每次我想它不是可行的数据存储在SQLite的每次。它需要很多时间来执行数据库连接存储,检索和更新Sqlite中的数据。

-4

目的JSON和SQLite是相互

  • 完全不同JSON =用于在服务器和客户端之间发送和接收数据。
  • 的SQLite =被用来存储数据。
+12

JSON可用于存储日期。即。配置文件很常见... – user457015 2013-08-02 21:13:35

+2

REST用于在服务器和客户端之间发送和接收数据。 JSON和SQLite都存储数据。但是,您可以更快地使用RESTful方法发布JSON数据。 – 2014-10-29 18:38:46

+0

JSON也用于存储数据。 – VSG24 2016-01-24 13:49:06

0

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

+0

我也需要一个缓存系统,以防万一如果我没有互联网,我需要以前存储的数据 – 2011-12-28 05:56:48

+0

这是好的不要覆盖/删除数据,除非你得到正确格式的新数据。这样你的旧数据将继续存储在内存中并被使用。 – PravinCG 2011-12-28 14:16:46

3

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

  • 需要符合ACID写操作
  • 您需要报告对可能涉及将数据复制到外部RDBMS 数据或
  • 您希望加入那些过度使用/滥用数据库串通一气,如常见了的SQLite
+0

嗯....有人支持我这个,大概是最后一点。也许我需要开始一场运动。无论如何,好的旧对象序列化往往是要走的路。 – SPB 2013-01-17 00:41:10

7

优势:

  • 变化是ACID
  • 可以使复杂的要求更快(例如“给我只有字段A,B来自具有(C/D)> E”的项目)
  • 对于大数据,我敢打赌更紧凑(整数存储为整数而不是单个数字串)
  • 只有一个文件
  • 您可以用新的数据合并旧数据容易
  • 可以更新当前数据,即使在使用它
  • 并发可以处理

优势JSON/CSV:

  • 更容易调试(明文)
  • 更快,使整体更新(复制新文件+删除旧的)

对于原来的问题全删除/替换数据使得JSON/CSV获胜者。但是,如果应用程序每隔10秒检索一次部分数据,并将它与前一个数据合并/更新,则SQLite将是更好的选择。