最近,我和我的同事,我们正在讨论如何构建一个可以存储数十亿张图片的大型存储系统,这些图片可以快速搜索和下载。
有点像恶搞,但不适合在线画廊。这意味着,大部分图片永远不会下载。
我的同事建议我们应该直接将所有这些文件保存在数据库中。我真的觉得这不是一个好主意,我认为数据库不是为了恢复大量的二进制文件而设计的。但我有充分理由说明为什么这不是一个好主意。
你怎么看待它。
答案 0 :(得分:18)
在处理二进制对象时,遵循以文档为中心的体系结构方法,而不是将pdf和图像等文档存储在数据库中,当您开始看到数据库的各种性能问题时,最终必须重构它。只需将文件存储在文件系统中,并将路径放在数据库的表中。您将用于序列化并将其保存在数据库中的数据类型的大小也存在物理限制。只需将其存储在文件系统上即可访问它。
答案 1 :(得分:2)
如果您真的在谈论数十亿张图片,我会将它们存储在文件系统中,因为检索比序列化和反序列化图像更快
答案 2 :(得分:1)
上面的答案似乎假设数据库是一个RDBMS。如果您的数据库是一个面向文档的数据库,支持您期望的二进制文档,那么将它们存储在数据库中可能是完全明智的。
答案 3 :(得分:0)
这不是一个好主意。数据库的关键是您可以快速解决复杂查询以检索文本数据。虽然二进制数据可以存储在数据库中,但它可以减慢事务。当数据库与正在运行的应用程序位于不同的服务器上时尤其如此。在数据库中,存储元数据和图像的位置/文件名。图像本身应该在静态服务器上。