每当开发人员想要存储应用程序使用的图像时,其中一个想法都在数据库中存储图像,那么为什么您不得选择该方法?
数据库主要用于快速数据存储和检索,此类内容使数据库在获得的允许空间和资源消耗方面变得昂贵,因此您需要了解数据库中存储的内容。
将图像存储在数据库中通常是通过将图像转换为base64或二进制然后插入数据库来完成的。
然后,当用户索要图像时,将查询查询到数据库以检索所需的图像,然后将其转换回图像以将其发送给用户。
将二进制或base64存储在数据库中以增加尺寸(如前所述,这很昂贵),因此当您想要备份数据库时,您将拥有大尺寸的备份文件和更多的时间消耗,以备备份和还原过程。
除了增加数据库大小外,前两个进程为代码增加了更多的复杂性,还增加了更多的转换和资源消耗时间。
在这里要提到的另一件事是,如果您在Web应用程序中为图像提供图像时,这会给用户提供更多时间在客户端上下载图像以允许查看,那么大多数浏览器都可以很好地利用缓存来增强性能。在数据库中存储图像的图像很难缓存导致性能问题的图像。
因此,总而言之,问题是:
1.性能
2.增加数据库大小
3.备份和恢复
4.缓存
那么,存储图像的最佳方法是什么?
通常,最好使用您的应用程序将图像本身存储在文件存储系统上(例如在Web应用程序中)
并将有关它的元数据存储在数据库中,这使您的数据库更轻松并解决了上面提到的所有问题。
有一些提供文件存储解决方案的云服务可能很有用,例如AWS S3存储桶或云,它为您提供了许多与图像存储,检索和处理相关的选项。