Answers:
我强烈建议您将图像存储在文件系统中而不是数据库中。
在数据库中存储图像有几个缺点:
数据库可能会意外增大。有时空间是个问题。例如,对于SQLServer express,您有4GB的限制。
数据迁移可能会很麻烦,例如,如果您从SQLServer切换到Oracle
查询会变得很慢,并且数据库负载很大
如果映像位于文件系统上并且其他应用程序使用其他数据库,则与其他应用程序的互操作性会更好。您也可以直接访问它们,不需要数据库工具。
总体表现较差
无论如何,从数据库检索图像时,您可能必须创建临时文件。没必要
这些缺点远远超过了保持数据库中存储的图像的路径与文件系统同步的代价。在少数特殊情况下,最好将图像存储在数据库中。
研究SQL Server 2005和NTFS文件系统(Microsoft)以比较CRUD性能:与BLOB或不与BLOB。这项研究也在Web应用程序中完成。您列出了另一个数据库(MySQL),并且我假设您的PHP站点未使用Windows Server,因此如果有人对不同的技术进行了类似的研究,这将很有趣。
原来,这取决于文件的大小。SQL Server支持(小于2倍)256K或更小的Blob,而文件系统则支持1MB +的文件。本研究中的文件系统比数据库更好地处理碎片,因此,如果您不断更新这些文件,或者该系统随着时间的增长而增长,碎片化将是文件系统将做得更好的更大因素。
您需要确定您的站点对维护这些文件的责任。如果您要为保险索赔代理人建立一个站点来上传事故照片,则最好具有交易控制权,并确保这些文件在服务器上。好的数据库会为您完成此任务,因此作为开发人员,您会承受更大的压力。
在设计过程中,应考虑复制,备份,灾难恢复,碎片,剩余磁盘容量以及随时间变化的性能。这只是对SQL Server早期版本的一项研究,与其他数据库制造商一样,我猜想处理大文件和二进制文件是一个主要的竞争舞台。