假设我想建立一个网站,该网站将容纳大量(至少 1000 万)小文件(大约 50KB,大部分PDF
,但也包括 word/excel 文档、jpg 和文本文件)。
使用 SQL Server 2008
数据库,存储这些文件有哪些不同的技术可能性(例如:使用带有文件名的表 + 文件系统的数据,使用 varbinary 等)?
假设我想建立一个网站,该网站将容纳大量(至少 1000 万)小文件(大约 50KB,大部分PDF
,但也包括 word/excel 文档、jpg 和文本文件)。
使用 SQL Server 2008
数据库,存储这些文件有哪些不同的技术可能性(例如:使用带有文件名的表 + 文件系统的数据,使用 varbinary 等)?
SQL Server 2008 数据库提供了许多数据类型来存储二进制数据。
FILESTREAM 数据类型是在 SQL Server 2008 中引入的,它们提供了将二进制数据存储到数据库的能力。但是对于少量的二进制数据,使用文件流效率不高,因为它需要额外的开销,例如在 SQL Server 2008 中创建和处理文件。FILESTREAM 存储不适合您的情况在我看来,它最适合
另一方面, varbinary 数据类型适合您的情况,优点是节省存储空间并保持数据的准确表示。
通常 FILESTREAM 适用于较大的文件,而 VARBINARY 适用于较小的文件。
此外,将文件直接存储到数据库中会很好,因为它们的大小确实更小。
在这里您可以阅读更多相关信息 -数据库:图像文件作为 blob 还是文件路径?
希望它会有所帮助
你应该试试 FILESTREAM
http://msdn.microsoft.com/en-us//library/bb933993(v=sql.105).aspx
FILESTREAM 通过将 varbinary(max) 二进制大对象 (BLOB) 数据存储为文件系统上的文件,将 SQL Server 数据库引擎与 NTFS 文件系统集成
另外,如果您可以升级到 sql2012,请查看 FileTable 功能(基于 FILESTREAM)-它支持全文和语义搜索 http://msdn.microsoft.com/en-us/library/ff929144.aspx
文件应该只被索引到数据库中(文件名和您需要的任何其他内容)。数据库应该包含这些文件的路径,但不包含文件,因为它会杀死你的数据库。