我想知道在SQLite数据库中将图像存储为BLOB是否是一个好主意?有人存储图像(blob)的性能经验吗?
我的Android应用程序是一个小型应用程序,需要处理20至100张图像(每张图像100 KB到1 MB)。最坏的情况:我认为我的数据库可能会达到100 MB的大小。这会对数据库性能产生重大影响吗? 平均情况:我猜我的应用程序的普通用户有40张200 KB的图像,因此数据库的大小约为8 MB。 顺便说一下,当然,数据库也存储其他“普通”数据,因此它不仅仅是一个图像数据库:)
将存储在存储设备(内部或SD卡)上的图像文件路径存储为更好的方法吗?我猜从数据库检索图像文件路径并打开和加载图像文件会稍微慢一些(但不是真正显著的,因为我一次只需要加载两张图片)。
第二个问题: 如果我使用第二种方法(在数据库中存储图像文件的路径并加载图像文件): 在这种情况下,磁盘缓存(DiskLruCache)是否有用?它会带来显著的性能提升吗?我的理解是磁盘缓存将直接从存储中加载位图(而不是编码的jpg或png),因此磁盘缓存将直接从存储中加载位图,我的应用程序将节省解码图像(jpg或png)的时间。是这样吗? 顺便说一下,在“数据库方法”中,我已经将图像作为位图存储。所以对我来说似乎与磁盘缓存类似,不是吗?
编辑: 我忘了告诉你,我需要在设备上持久存储图像。我不是在谈论缓存图像,例如我从Web服务检索的图像...
我的Android应用程序是一个小型应用程序,需要处理20至100张图像(每张图像100 KB到1 MB)。最坏的情况:我认为我的数据库可能会达到100 MB的大小。这会对数据库性能产生重大影响吗? 平均情况:我猜我的应用程序的普通用户有40张200 KB的图像,因此数据库的大小约为8 MB。 顺便说一下,当然,数据库也存储其他“普通”数据,因此它不仅仅是一个图像数据库:)
将存储在存储设备(内部或SD卡)上的图像文件路径存储为更好的方法吗?我猜从数据库检索图像文件路径并打开和加载图像文件会稍微慢一些(但不是真正显著的,因为我一次只需要加载两张图片)。
第二个问题: 如果我使用第二种方法(在数据库中存储图像文件的路径并加载图像文件): 在这种情况下,磁盘缓存(DiskLruCache)是否有用?它会带来显著的性能提升吗?我的理解是磁盘缓存将直接从存储中加载位图(而不是编码的jpg或png),因此磁盘缓存将直接从存储中加载位图,我的应用程序将节省解码图像(jpg或png)的时间。是这样吗? 顺便说一下,在“数据库方法”中,我已经将图像作为位图存储。所以对我来说似乎与磁盘缓存类似,不是吗?
编辑: 我忘了告诉你,我需要在设备上持久存储图像。我不是在谈论缓存图像,例如我从Web服务检索的图像...