JSON文件VS SQLite android

Posted

技术标签:

【中文标题】JSON文件VS SQLite android【英文标题】:JSON file VS SQLite android 【发布时间】:2012-01-28 22:27:13 【问题描述】:

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

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

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

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

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

还有其他想法吗?

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

【问题讨论】:

从哪里获取大量数据? 来自我们网络服务器的财务数据 【参考方案1】:

SQLite 的优点:

变化是酸性的 您可以更快地提出复杂的请求(例如,“只给我来自 (C/D)>E 项的字段 A、B”) 我敢打赌,对于大数据,我会更加紧凑(整数存储为整数,而不是单个数字的字符串) 只有一个文件 您可以轻松地将旧数据与新数据合并 即使在使用时,您也可以更新当前数据 可以处理并发

JSON/CSV 的优势:

更易于调试(纯文本) 更快地进行整体更新(复制新文件 + 删除旧文件)

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

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

【讨论】:

【参考方案2】:

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

更新:

我也有相同的应用程序,其中数据每次都在变化。在那种情况下,我使用Map<K, V>ArrayList 来维护这些值,因为每次数据都在变化,我认为每次都将数据存储在Sqlite 中是不可行的。在 Sqlite 中执行 DB Connection 存储、检索、更新数据需要大量时间。

【讨论】:

【参考方案3】:

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

写入操作需要符合 ACID 标准 您需要针对可能涉及将数据复制到外部 RDBMS 的数据进行报告 或 您希望加入当今常见的过度使用/滥用数据库的同谋者行列

【讨论】:

嗯....有人支持我,大概也是最后一点。也许我需要开始一个运动。无论如何,好的旧对象序列化通常是要走的路。【参考方案4】:

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

【讨论】:

我也需要一个缓存系统,以防万一我没有互联网,我需要以前存储的数据 这很好,除非您以正确的格式获取新数据,否则不要覆盖/删除数据。这样,您的旧数据将继续在内存中并被使用。【参考方案5】:

JSON 和 SQLite 的用途完全不同

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

【讨论】:

REST 用于在服务器和客户端之间发送和接收数据。 JSON 和 SQLite 都存储数据。但是是的,您可以使用 RESTful 方法更快地发布 JSON 数据。 JSON 也用于存储数据。 Json其实是非常常用的数据存储,如果数据可以通过连接分到多个单独的表,SQLite会更好。 也可以通过 http 发送 sqlite db-files...

以上是关于JSON文件VS SQLite android的主要内容,如果未能解决你的问题,请参考以下文章

vs2010下使用sqlite

FILESYSTEM vs SQLITE,同时存储多达 10M 文件

VS15 preview 5打开文件夹自动生成slnx.VC.db SQLite库疑惑?求解答

错误的sqlite3 db.lock在VS中阻止Web部署

sqlite vs 共享内存应用程序 vs ipc vs?

Django - 我如何将“.json”文件插入 SQLite DB?