欢迎来到天天文库
浏览记录
ID:26978648
大小:153.23 KB
页数:30页
时间:2018-11-30
《sqlserver技术文章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、SQLServer技术文章作者:PaulS.Randal(SQLskills.com)技术审校:AlexandruChirica、ArkadiBrjazovski、PremMehra、JoannaOmel、MikeRuthruff、RobinDhamankar发布时间:2008年10月适用范围:SQLServer2008摘要:本白皮书介绍SQLServer2008的FILESTREAM功能。通过此功能,可以将SQLServer2008和NTFS文件系统结合使用来存储和高效地访问BLOB数据。本文内容涵盖了如何选择BLOB存储、如何配置Windows和SQLServe
2、r以使用FILESTREAM数据,以及将FILESTREAM与其他功能结合使用的注意事项和实施细节(如分区和性能)。本白皮书面向负责评估或实现FILESTREAM的架构师、IT专业人员和DBA。本白皮书假定读者熟悉Windows和SQLServer,并且至少对数据库概念(如事务)有基本了解。简介在当今社会中,数据以爆炸性的速度增长,且通常需要以可控和高效的方式进行存储和访问。有许多技术可以实现上述目标,但具体选择哪种技术通常取决于所存储的数据的性质–结构化、半结构化或非结构化:·结构化数据可以很方便地存储在关系架构中,如公司的销售数据。这些数据可以存储在这样一个数据
3、库中:一个表包含公司所销售产品的信息,另一个表包含客户的相关信息,还有一个表包含所销售产品的销售详情。可以使用丰富的查询语言(如Transact-SQL)来访问和处理这些数据。·半结构化数据是指符合松散架构,但本身并不适合存储在一系列数据库表中的数据,例如其中的每个数据点可能具有完全不同属性的数据。在Microsoft®SQLServer®数据库软件中,半结构化数据通常使用xml数据类型进行存储,并使用基于元素的查询语言(如XQuery)进行访问。·非结构化数据可能根本没有架构(如一段加密数据),也可能是大量的二进制数据(许多MB,甚至达到GB),这些二进制数据可能
4、看起来没有架构,但实际上具有一个非常简单的内在架构(如图像文件、流视频或声音剪辑)。这种情况下的二进制数据表示可能具有任何值的数据,而不仅仅是可以在键盘上输入的数据。这些数据值通常称为二进制大型对象,简称为BLOB。30本白皮书介绍SQLServer2008的FILESTREAM功能。通过此功能,可以将SQLServer2008和NTFS文件系统结合使用来存储和高效地访问BLOB数据。本文除了介绍FILESTREAM功能本身之外,还阐述了如何选择BLOB存储、如何配置Windows®操作系统和SQLServer以使用FILESTREAM数据,以及将FILESTREA
5、M与其他功能结合使用的注意事项和实施细节(如分区和性能)。BLOB存储选择虽然结构化和半结构化数据可以很方便地存储在关系数据库中,但选择将非结构化或BLOB数据存储在何处的过程就比较复杂了。当决定在何处存储BLOB数据时,应考虑以下要求:·性能:如何使用数据是一个关键因素。如果需要流访问,则将数据存储在SQLServer数据库中要比将其存储在外部位置(如NTFS文件系统)的访问速度更慢。如果使用文件系统存储,则数据会从文件中读取并传递到客户端应用程序(直接或通过附加缓冲)。如果BLOB存储在SQLServer数据库中,则数据必须首先读入到SQLServer的内存(缓
6、冲池)中,然后通过客户端连接向外传回到客户端应用程序。这不仅意味着数据要经由一个额外的处理步骤,而且还意味着SQLServer的内存会受到BLOB数据不必要的“污染”,而这可能导致SQLServer操作出现进一步的性能问题。·安全性:对于需要严格管理访问权限的敏感数据,可以存储在一个数据库中,并使用常用的SQLServer访问控制来控制安全性。如果相同数据存储在文件系统中,则需要实现不同的安全性方法,如访问控制列表(ACL)。·数据大小:根据本白皮书后面引证的研究,小于256千字节(KB)的BLOB(如小组件图标)比较适合存储在数据库内,而大于1兆字节(MB)的BL
7、OB最适合存储在数据库外部。对于那些大小在256KB到1MB之间的BLOB,最高效的存储解决方案取决于数据的读/写比以及“改写”速率。将BLOB数据完全存储在数据库内(例如,使用varbinary(max)数据类型)的限制是每个BLOB最大2千兆字节(GB)。·客户端访问:客户端用于访问SQLServer数据的协议(如ODBC)可能不适合流式传输大型视频文件等应用领域。这就可能需要将数据存储在文件系统中。·事务性语义:如果BLOB数据具有将要存储在数据库中的关联的结构化数据,则对这些BLOB数据所做的更改将需要符合事务性语义,以便两组数据保持同步。例如,如果某个
此文档下载收益归作者所有