我目前正在开发一个应用程序,它有可能创建一个非常大的数据库。我曾计划在SD卡上安装应用程序,以便腾出一些额外的空间。最近的交易已经告诫我,这可能不是一个好主意。我可以采取哪些措施来缓解这一行动的危险?还是有更好的选择?在Android中处理大型数据库
回答
这是关于这个问题的一个comprehensive post(我不是作者)。
我认为,总体而言,需要传达的信息是,SQLite只是一种访问文件的SQL机制。看起来,整个APK的当前市场限制为50mb。安装到内存时,您需要2x的APK大小。安装到SD卡只需要规定的APK大小。
这里是你将致力于反对什么:1。 )由于SQLite是刚刚超过你的文件的抽象,当你做选择,插入,更新等,你会招致SD卡的读写成本 2)我已经看到基于性能提及soft limit of 10000 records。这篇文章有点老了,所以它可能会变得更好。
除此之外,您可能需要设置一些测试来查看哪些可行。谷歌粗略搜索没有显示任何基准迄今。
如前所述,SQLite具有您要查找的功能,打包在一个小型库中。它旨在通过可靠的,可恢复的,通过SQL API的事务数据访问来取代简单的文件访问。关于他们的main page有一个很好的总结。
有几千个项目正在使用SQLite。如果您的数据集将会非常大(超过100-200MB),那么您可能需要考虑使用Berkeley DB作为选项。 Berkeley DB最近推出了支持SQL API,它完全兼容SQLite。除了SQLite SQL解析器,查询规划器和执行器提供的功能外,您还可以获得Berkeley DB众所周知的可靠性和可伸缩性。我们有几个客户开心地使用SQLite。当他们意识到他们需要SQLite中不具备的其他并发性,可伸缩性和可靠性时,他们用BDB库取代了SQLite库,重新编译了他们的应用程序,并在几天内在伯克利进行了测试和运行。
我是Berkeley DB的产品经理之一,所以我有点偏见。 :-)然而,我们实现了BDB SQL API,以便我们为用户提供两全其美的优点:SQLite的普遍性和易用性以及Berkeley DB的并发性,可靠性和可伸缩性。特别是对于较大的数据集,Berkeley DB可以在应用程序性能方面发挥重要作用。
Berkeley DB是否适用于所有Android手机?将Android应用从SQLite切换到BDB是否容易? – 2011-01-25 05:26:36
如上所述,您可以在Android上使用Berkeley DB(不是Java版本)。我描述了交叉编译过程here的步骤,因为它需要较小的调整。
- 1. 大型数据库处理
- 2. iOS和处理大型数据库
- 3. 如何处理大型数据库?
- 4. 策略处理大型数据库表
- 5. 在Python中处理大型数据池
- 6. 在Android中处理数据库
- 7. 在Android中处理大型XML文件
- 8. 内存错误的Python在Windows上处理大型数据库
- 9. 如何处理大型数据列表
- 10. 如何在Android中清理地处理多个数据库表?
- 11. 通过fetchedResultsController在核心数据中处理大型基数
- 12. 哪个数据库(DBMS)可以最好地处理大型表?
- 13. 如何处理大型数据库表主键
- 14. 不知道如何处理大型数据库
- 15. 我应该如何处理大型数据库(17MB)?
- 16. 如何使用Lucene处理大型数据库?
- 17. 处理大型MySQL数据库组织的最佳方式?
- 18. C#处理多种数据库类型?
- 19. 多处理django模型数据库
- 20. 如何在大型数据集中处理sql中的日期
- 21. 在大型python数据框上快速处理数据
- 22. Android处理静态数据库对象
- 23. 管理大型图像数据库
- 24. Spring批处理 - 使用内存数据库处理大文件
- 25. 在Mathematica中处理大数据
- 26. 在Laravel 5中处理大量数据
- 27. 在Java servlet中处理大量数据
- 28. 使用android包装大型数据库
- 29. Android数据处理
- 30. 在Wolfram Mathematica中处理大型数据文件的方式
很好的答案。 +1。我有一个疑问,如果sqlite文件是Android的外部,那么会有什么限制?它是否与桌面一样或仍然有任何限制..? – Vinay 2013-08-20 08:59:19