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
store
和retrieve
都需要一些时间。
更新:
我也有相同的应用程序,其中数据每次都在变化。在那种情况下,我使用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的主要内容,如果未能解决你的问题,请参考以下文章
FILESYSTEM vs SQLITE,同时存储多达 10M 文件