将二进制数据存储在 SQL 表与网络驱动器中的优缺点是什么?

Viv*_*ver 5 database-design

可能的重复:
文件 - 在数据库中与否?

我一直在阅读“编程实体框架代码优先”(http://www.amazon.com/Programming-Entity-Framework-Code-First/dp/1449312942)。

给出了许多示例,其中有关特定人员的信息存储在 SQL 表中,包括此人的照片(存储在 VARBINARY 字段中的数字图像)。

在我使用过的所有系统中,与 SQL 中的记录相关联的任何类型的文件都存储在普通的网络驱动器上;不是在 SQL 中。我想这一定有一些原因,所以这是我的问题:

鉴于二进制数据与 SQL 中的记录相关联,将二进制数据存储在 SQL 表中与将相同的二进制数据存储在网络驱动器上的优缺点是什么?

Fru*_*ner 4

一个优点是,如果需要访问数据的程序无法访问文件系统,那也不是问题!如果数据库由不同系统上的多个应用程序访问,它们可能不应该具有对数据库服务器的文件系统访问权限。您始终可以存储一个路径,然后他们创建一个 Web 服务来允许这些应用程序请求特定路径上的文件,但这需要更多的工作,因此您最好确保它值得。将二进制数据保存在数据库中并将其返回到记录集中更简单。

缺点是您的数据库现在需要更多的存储空间,这将影响备份和其他事情。有时,数据库中存在大量二进制数据也会对性能产生影响。一些 DBA 通过将 BLOB 数据移动到单独模式中的表来处理此问题,这些模式的管理方式与主“数据”模式不同。虽然此类技术可能有效,但如果您有大量二进制数据,您可能需要更深入地了解数据库管理和调整才能使其正常工作。