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

问题描述 投票:7回答:4

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

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

android database sqlite mobile
4个回答
0
投票

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

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

因此,如果您的数据库非常大(不适合内部存储器),您可能会考虑仅使用经常使用的数据并删除其他数据。这在很大程度上取决于您的应用程序的用例。

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

如果您需要任何帮助或澄清某些观点,请与我们联系。我希望能帮助你。


0
投票

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

确保在简单的 alter table add column will work.时不会删除应用程序的每个新版本的数据库

您从设备中存档和删除的内容为用户提供了在后台加载它的方法。


0
投票

可能有一些应用程序/数据库,您可以在其中找到文档,但可能这种情况是有限的,并且是例外。 因此,要准确了解正在发生的事情,您需要创建数据库的一些快照。您可以从一个应用程序开始,或直接使用多个应用程序,但如果不进行分析,您将无法获得可靠的声明。 每个应用程序的原因可能会有所不同,因为数据库和应用程序功能也自然不同。

大小比传入内容量的增长更快可能与缓存表或搜索索引相关,但也许还存在其他原因。如果没有验证和一些重要的基本信息,就不可能告诉你一个详细的原因。 数据库的表名可能已经提供了一些提示,但如果表名或甚至字段只使用无意义的字符串,那么您需要分析内部数据,包括快照之间的更改。


0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.