将大型数组缓存到 SQLite - Java/Android

Posted

技术标签:

【中文标题】将大型数组缓存到 SQLite - Java/Android【英文标题】:Caching large Arrays to SQLite - Java/ Android 【发布时间】:2010-11-14 20:34:24 【问题描述】:

我目前正在开发一个系统,用户最终将拥有大型数组(使用 android)。然而 JVM 内存有耗尽的风险,所以为了防止这种情况,我正在考虑创建一个临时数据库并将数据存储在那里。但是,让我担心的问题之一是 SD 卡受读写限制。另一个想到的问题是这种操作的开销。任何人都可以解决我的顾虑,并提出一个可能很好的替代方法来处理大型数组(最终这些数组将通过编写 csv 文件并上传到网站上)。

谢谢, 费萨尔

【问题讨论】:

【参考方案1】:

一些想法:

    您可以使用 Derby 之类的 dbms 来存储它们,该数据库内置于许多 java 版本中 您可以将它们存储在写入字节的压缩输出流中 - 如果数据易于压缩,即定期重复数字、文本等,这将特别有效 您可以一次上传部分数组,即在生成它们时,开始以块的形式将数据片段上传到服务器

【讨论】:

好了前两个选项,用derby代替Sqlite有什么用?第二个选项,那不会还在用完sd卡的读写吗?还是我对 sdcard 读写的工作方式有误解? 使用第三个选项,用户可能不会一直连接到互联网。 使用第二个选项 - 您可以使用 bytearrayoutputstream 写入保留在内存中的字节数组(或类似的东西 - 今天早上我不知道确切的类名) 如果您正在压缩它,则不会 - 将流包装在压缩流中,例如 GZip 流或类似的东西。

以上是关于将大型数组缓存到 SQLite - Java/Android的主要内容,如果未能解决你的问题,请参考以下文章

如何将大型 JSON 数据从服务器存储到 SQLITE Android?

从 sql server 迁移到大型数据集的 sqlite 的最快方法

大型sqlite数据库到mysql

将大型数据集缓存到 spark 内存中时“超出 GC 开销限制”(通过 sparklyr 和 RStudio)

将改造数组数据插入到 sqlite

将 NSMutable 数组存储到 sqlite 数据库中