存储大量图像数据库或文件系统

Ram*_*esh 5 java image

我正在开发一个项目,我们需要存储大量没有图像说大约1000万,所以这是存储图像的最佳方式.在速度和效率方面最好的方式.它是一个基于Web的项目,因此图像检索应该很快.

  1. 数据库

    将图像存储为数据库中的base64.
    我们正在开发一个nosql数据库.

  2. 文件系统

    创建唯一ID并将其存储在文件夹下.

Som*_*luk 1

这是一个权衡——这取决于您的具体情况和需求。每个的好处包括

文件系统

  • 性能,尤其是缓存和 I/O

  • 最好将文件路径存储在数据库中。

有几个问题:

  • 数据库存储通常比文件系统存储更昂贵
  • 您可以使用标准的现成产品来超级加速文件系统访问
    • 例如,许多 Web 服务器使用操作系统的 sendfile() 系统调用将文件直接从文件系统异步发送到网络接口。存储在数据库中的图像不会从这种优化中受益。
  • 像网络服务器等,不需要特殊的编码或处理来访问文件系统中的图像
  • 在图像和元数据之间的事务完整性很重要的情况下,数据库胜出。
    • 管理数据库元数据和文件系统数据之间的完整性更加复杂
    • 很难(在 Web 应用程序的上下文中)保证数据已刷新到文件系统上的磁盘

数据库

  • 更容易扩展到多个 Web 服务器
  • 更容易管理(备份、安全等)

如果您有 SQL 2008 DB,请查看这篇 SO文章中的 FileStream - 这提供了两全其美的优点。

请参阅在数据库中存储图像 - 是或否?

编辑

请参阅 Nosql:

  1. 将数亿个小图像存储到键/值存储或其他 nosql 数据库是个好主意吗?
  2. 在 NoSQL 存储中存储图像