在SQL Server 2008数据库中存储大量文件的不同可能性有哪些?

时间:2013-07-03 08:01:04

标签: sql-server file storage hard-drive

假设我想构建一个网站,该网站将包含大量(至少1000万)小文件(大约50KB,大多数为PDF),还有word / excel文档,jpg和文本文件)。

使用SQL Server 2008数据库,存储这些文件有哪些不同的技术可能性(例如:使用带有文件名的表+文件系统用于数据,使用varbinary等等)?

3 个答案:

答案 0 :(得分:2)

SQL Server 2008数据库提供程序存储二进制数据的许多数据类型。

FILESTREAM数据类型是在SQL Server 2008中引入的,它们提供了将二进制数据存储到数据库的功能。但是使用少量二进制数据,使用文件流效率不高,因为它需要额外的开销,如文件创建和处理在SQL Server 2008中.FILESTREAM存储不适合您的情况

在我看来最好
  • 当平均1MB或更高。
  • 不需要加密时,因为FILESTREAM数据不支持

另一方面,varbinary数据类型适用于您的情况,优点是节省存储空间并保持数据的准确表示。

通常,FILESTREAM适用于较大的文件,VARBINARY适用于较小的文件。

此外,将文件直接存储到数据库中会很好,因为它们的大小确实很小。

在这里,您可以阅读更多相关信息 - Database: image file as blob or file path?

希望它会有所帮助

答案 1 :(得分:1)

你应该尝试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

答案 2 :(得分:0)

文件应该只被索引到数据库中(文件名和你需要的任何其他内容)。数据库应包含对这些文件的路径,但不包含文件,因为它会终止您的数据库。