如何在移动应用程序中管理不断增加的sqlite大小?

时间:2017-10-28 04:04:41

标签: android database sqlite mobile

我的应用程序有时需要与Web服务器同步并将数据拉入移动sqlite数据库以供离线使用,因此数据库大小将呈指数级增长。
我想知道像whatsapp,hike,evernote等专业应用程序如何管理他们的离线sqlite数据库。
请建议我解决这个问题的步骤。

PS:我问的是离线数据库(即同步后大小增长)管理不要与数据库与Web服务器同步混淆。

3 个答案:

答案 0 :(得分:0)

以下链接将有助于了解Whatsapp究竟使用的是什么, https://www.quora.com/How-is-the-Whatsapp-database-structured

不确定是否必须始终将所有数据保存在设备上,但如果您有选择,则可以始终使用云服务(如FCM,AWS)来存储或备份大部分数据。如果您需要在设备上保留所有数据,那么可能一种方法是在您的应用中使用缓存机制。

例如 - 使用LRU(最近最少使用)缓存/存储设备上所需的数据,同时将其余数据存储在云端,并删除设备中不需要的内容。如果需要,您可以随时按需检索数据(即,如果用户尝试拉动刷新或执行其他操作),并在未使用时删除它。

答案 1 :(得分:0)

我不知道您的数据量有多大。但是,我认为将相当大的数据存储到应用程序的内部存储器中应该不是问题。内部存储器在所有应用程序之间共享,因此它可以增长直到存储空间被填充。

我认为,这里的主要问题是查询时间,如果您没有对数据库表的正确索引。否则,将数据库完全保留在内部存储中就可以了,我认为您不必担心应用程序内部存储中可以存储的数据量,因为更新的Android设备提供了更好的存储功能。 >

因此,如果数据库很大,无法容纳到内部存储器中,则可以考虑仅使用经常使用的数据,否则将其删除。这在很大程度上取决于您的应用程序的用例。

在我开发的一个应用程序中,我将一些大型数据库存储在外部存储器中,并在需要时将它们复制到内部存储器中。但是,将数据库从外部存储复制到内部存储需要花费一些时间(几秒钟)。但是,一旦数据库被复制,我就可以高效地运行查询。

让我知道您是否需要某些帮助或说明。希望对您有所帮助。

答案 2 :(得分:0)

用于最大大小的数据库。 AFAIK您不想丢失设备上的内容并强制重新加载。

确保在简单的 alter table add column will work.

下,您不会在应用程序的每个新发行版中删除数据库

您所做的存档和从设备中删除的操作为用户提供了一种在后台加载它的方法。