假设我想构建一个网站,该网站将包含大量(至少1000万)小文件(大约50KB,大多数为PDF
),还有word / excel文档,jpg和文本文件)。
使用SQL Server 2008
数据库,存储这些文件有哪些不同的技术可能性(例如:使用带有文件名的表+文件系统用于数据,使用varbinary等等)?
答案 0 :(得分:2)
SQL Server 2008数据库提供程序存储二进制数据的许多数据类型。
FILESTREAM数据类型是在SQL Server 2008中引入的,它们提供了将二进制数据存储到数据库的功能。但是使用少量二进制数据,使用文件流效率不高,因为它需要额外的开销,如文件创建和处理在SQL Server 2008中.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)
文件应该只被索引到数据库中(文件名和你需要的任何其他内容)。数据库应包含对这些文件的路径,但不包含文件,因为它会终止您的数据库。