将大型数组缓存到 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 的最快方法