2011-01-21 77 views
14

我目前正在开发一个应用程序,它有可能创建一个非常大的数据库。我曾计划在SD卡上安装应用程序,以便腾出一些额外的空间。最近的交易已经告诫我,这可能不是一个好主意。我可以采取哪些措施来缓解这一行动的危险?还是有更好的选择?在Android中处理大型数据库

回答

11

这是关于这个问题的一个comprehensive post(我不是作者)。

我认为,总体而言,需要传达的信息是,SQLite只是一种访问文件的SQL机制。看起来,整个APK的当前市场限制为50mb。安装到内存时,您需要2x的APK大小。安装到SD卡只需要规定的APK大小。

这里是你将致力于反对什么:1。 )由于SQLite是刚刚超过你的文件的抽象,当你做选择,插入,更新等,你会招致SD卡的读写成本 2)我已经看到基于性能提及soft limit of 10000 records。这篇文章有点老了,所以它可能会变得更好。

除此之外,您可能需要设置一些测试来查看哪些可行。谷歌粗略搜索没有显示任何基准迄今。

+0

很好的答案。 +1。我有一个疑问,如果sqlite文件是Android的外部,那么会有什么限制?它是否与桌面一样或仍然有任何限制..? – Vinay 2013-08-20 08:59:19

4

如前所述,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可以在应用程序性能方面发挥重要作用。

+0

Berkeley DB是否适用于所有Android手机?将Android应用从SQLite切换到BDB是否容易? – 2011-01-25 05:26:36

2

如上所述,您可以在Android上使用Berkeley DB(不是Java版本)。我描述了交叉编译过程here的步骤,因为它需要较小的调整。