eul*_*rfx 20 sql-server store image
SQL Server 2008是否可以用作电子商务网站的图像存储?它将用于存储各种尺寸和角度的产品图像.Web服务器将输出这些图像,通过聚簇ID读取表.总图像大小约为10 GB,但需要扩展.我发现使用文件系统有很多好处,但我担心没有O(1)查找的SQL服务器不是最好的解决方案,因为该网站有很多流量.这甚至会成为一个瓶颈?有什么想法,或者其他选择?
Vin*_*vic 27
10 Gb的数据量不是很大,因此您可以使用数据库存储它并且没有大问题,但当然使用文件系统是最好的性能,并且安全管理明智地使用数据库更好(备份和一致性).
令人高兴的是,Sql Server 2008允许你吃蛋糕并吃掉它:
在SQL Server 2008中,您可以将FILESTREAM属性应用于varbinary列,然后SQL Server将该列的数据存储在本地NTFS文件系统上.将数据存储在文件系统上有两个主要好处:
但是,可以像管理SQL Server中的任何其他BLOB列一样管理该列,因此管理员可以使用SQL Server的可管理性和安全性功能将BLOB数据管理与关系数据库中的其余数据集成,而无需管理文件系统数据分开.
在SQL Server中将数据定义为FILESTREAM列还可确保数据库中的关系数据与物理存储在文件系统上的非结构化数据之间的数据级一致性.FILESTREAM列的行为与BLOB列完全相同,这意味着维护操作(如备份和还原)的完全集成,与SQL Server安全模型的完全集成以及完整事务支持.
应用程序开发人员可以通过两种编程模型之一处理FILESTREAM数据; 他们可以像标准BLOB列一样使用Transact-SQL来访问和操作数据,或者他们可以使用带有Transact-SQL事务语义的Win32流API来确保一致性,这意味着他们可以使用对FILESTREAM的标准Win32读/写调用如果与文件系统上的文件交互,它们就像BLOB一样.
在SQL Server 2008中,FILESTREAM列只能在本地磁盘卷上存储数据,并且FILESTREAM列不支持某些功能,如透明加密和表值参数.此外,尽管支持日志传送,但您不能在数据库快照或数据库镜像会话中使用包含FILESTREAM列的表.