android - 如何在移动设备上处理大量数据

标签 android database sqlite text large-data

我有一个内容问题:我正在写一个显示城市代码的应用程序。有很多数据(大约8MB的文本)。我在sqlite3 db文件中找到了它。我无法将数据联机以便应用程序检索。我需要把它和应用程序一起发布。
在阅读如何运送这个怪物时,我发现了3种方法:
发送一个txt文件,其中包含创建表、插入数据和创建索引的所有命令,然后在oncreate期间遍历该文件并运行每个命令。
在assets中发送一个.db文件(或者我应该使用raw)并将该文件复制到/data/data/…
发送一组文件(txt,而不是db)并在需要显示数据时打开它们
这两种方法似乎都不是很有效。我认为3是最好的选择,但我不确定,我必须创建所有的文件,等等。此外,文件将是未压缩的,我不确定这是否会占用比.db文件更多的空间。
问题是:
在这种情况下,什么样的模式是好的?
当谈到手机中sqlite3 db的大小时,“合理”有多大?
如果我打开一个8MB的DB文件,并在应用程序运行时保持打开状态,我是不是一个猪?

最佳答案

在提出的三个选择中,我认为2是你最好的选择。这与最终结果中的1没有区别,将使部署简单得多。(无需在运行中尝试创建数据库)它的性能也将比选项3高得多,因为索引将由数据库收集和管理。如果你选择3并试图与2的性能相匹配,你无论如何都必须创建自己的索引,这将需要很多复杂的编码,你的内存使用量最终将与选项2一样大(如果不是更大的话)。
不确定在这种情况下模式是否重要。这完全是为了管理一个大型数据集。
合理是一个相对的术语,当谈到一个应用程序的大小。如果它真的对最终用户有用,那么一个更大的应用程序将是合理的。
根据上述推理,“猪”也是一个相对术语。如果有用的话,最终用户会忍受“猪”。
另一种选择是将数据库放在web服务后面,然后只发送访问它的应用程序。除了使设备上的内存占用更小之外,它还允许对数据进行更简单的更新。当数据发生变化时,您不必推送更新。
另一个想法是:你有没有做过调查,看看这个数据集是否可以通过公共/政府网络服务免费获得?Take a look here

关于android - 如何在移动设备上处理大量数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5444793/

相关文章:

java - 长按无法卸载应用程序

android - 使用 firebase-analytics 时重复的 jar 条目 :16. 0.5

android - 如何将数据从一个 Activity 创建的后台线程发送到另一个已知处于 Activity 状态的 Activity ?

php - 使用 mssql php 在 SQL 数据库中插入文件内容时出错

mongodb - 有没有办法用 MongoDB 替换 Many()?

sqlite - 在 SQLite 中,如何将数据从一个列复制到同一表中的另一列?

android - 为什么它总是给出错误的屏幕英寸尺寸?

sql - 数据库只读但只有少数表可写

android - 使用 else 和 if android sqlite 构建逻辑条件查询

python 3.2 UnicodeEncodeError : 'charmap' codec can't encode character '\u2013' in position 9629: character maps to <undefined>