网络编程
位置:首页>> 网络编程>> 数据库>> 使用SQL Server 2008管理非结构化数据(2)

使用SQL Server 2008管理非结构化数据(2)

作者:陈麟  发布时间:2009-01-08 15:28:00 

标签:

每一个方法都有其优劣之处。例如,在文件服务器或只用于BLOB的存储中存储非结构化数据会降低每GB所花费的费用,但是通常会增加管理和建立应用程序的复杂性,因为应用程序不得不维护包含BLOB数据的数据库和单独的系统中的记录以及这些记录所关联的对象间的完整性。另一方面,在数据库中存储BLOB数据方便地集中了数据存储,但是通常带来了更高的成本并会导致性能下降。

SQL Server 2008推出了两个用于存储BLOB数据的新功能:

· FILESTREAM:是一个你可以在varbinary字段上设置的属性,以便数据存储在文件系统中(因此受益于它的快速流式功能和存储能力)但是直接在数据库的上下文中管理和访问。:

· 远程BLOB存储:一个客户端应用程序编程接口(API),它降低了建立依赖于一个用于BLOB的外部存储和一个用于关系数据的数据库的应用程序的复杂性。

此外,SQL Server 2008继续通过varbinary 数据库类型支持标准的BLOB字段。

◆3.1 SQL Server BLOB

SQL Server 2005推出了varbinary(max)数据类型,它使得你可以在一个SQL Server字段或变量中存储最大为2,147,483,647字节的大型二进制数据值。当使用修订过的max时,你可以通过设置large value types out of row表选项来控制数据怎样存储在物理的表的数据页面中。当这个选项设置为ON时,所有的值存储在单独的链接页面上,而在这个记录的数据页面上会保存一个指向这些页面的16位的根指针。当这个选项设置为OFF时,最大为8000字节的值存储在这行的数据页面上,而更大的值存储在单独的链接页面上。

尽管新的FILESTREAM 和远程BLOB能力是设计用来提供比标准的varbinaryBLOB字段更好的性能和可管理性,但有一些场景是使用varbinary 字段更适合的(具有代表性的是当BLOB平均规模小于250 KB的时候。)

◆3.2 FILESTREAM 属性

在SQL Server 2008中,你可以将FILESTREAM 属性应用到一个varbinary 字段,然后SQL Server 为这个字段在本地NTFS文件系统上存储数据。在文件系统上存储数据带来两个重大的优势:

· 性能可匹配文件系统的流性能。

· BLOB 规模只受文件系统的空间规模限制。

然而,字段可以像SQL Server中的其它任何BLOB字段一样来管理,所以管理员可以使用SQL Server的可管理性和安全功能来集成BLOB数据管理和关系数据库中的其它数据——而不需要单独管理文件系统数据。在SQL Server中将数据定义为一个FILESTREAM字段还确保了在数据库中的关系数据和存储在文件系统中的非结构化数据在数据级的一致性。FILESTREAM字段的使用和BLOB字段一样,这意味着维护操作的完全集成(例如备份和恢复)、和SQL Server安全模型的完全集成、以及纯事务的支持。

应用程序开发人员可以通过两个编程模型中的一个来使用FILESTREAM数据;他们可以使用Transact-SQL就像对待标准的BLOB字段一样的来访问和操纵数据,或者他们可以使用Win32流式API和Transact-SQL事务型语义来确保一致性,这意味着他们可以对FILESTREAM BLOB使用标准的Win32读/写调用,这和他们与文件系统上的文件交互时所做的一样。

在SQL Server 2008中,FILESTREAM 字段只可以将数据存储在本地磁盘空间,并且FILESTREAM 字段不支持像简单加密和以表为值的参数等功能。此外,你不能在数据库快照或数据库镜像会话中使用包含了FILESTREAM字段的表,不过支持日志传送功能。

◆3.3 远程BLOB存储API

尽管FILESTREAM 属性将文件系统的性能和可扩展性与在数据库中存储BLOB的可管理性和数据一致性结合起来,但是通常会出现在像EMC Centera、Fujitsu Nearline、Microsoft windows®这样的文件服务器或其它任何只用于BLOB的存储的系统中存储BLOB更有效或成本利用率更高的场景。在SQL Server 2008中的远程BLOB存储API通过提供一个基于提供商的架构使得可以更容易的将只用于远程BLOB存储解决方案和你的数据库中的关系数据集成起来,这个架构使得你的应用程序可以使用任何BLOB存储而不需要特定的BLOB存储功能或代码。

在架构方面有两个关键部分:

· 客户端库:它是一个能够使得任何提供商和你的BLOB以及关系数据一起使用的组件。客户端应用程序使用客户端库和任何适用的提供商库来插入、更新和查询存储在BLOB中的数据和数据库中存储的数据。

· 供应商库:它是一个由BLOB存储供应商提供的具有代表性的组件(尽管它可以定制开发)。供应商库实现了一个常规接口,提供了一组标准的服务,这些服务抽象了对这个特定的存储执行Create、Fetch、Enumerate、Delete和Garbage Collect操作的细节。

.  当你的数据库BLOB需要存储在与数据库不同的服务器上并需要和其它系统协作时,远程BLOB存储API(Remote BLOB Store API)是一个理想的选择。它对BLOB存储没有任何限制。任何提供远程BLOB存储提供商的系统或任何可以建立于远程BLOB存储提供商的系统都支持它。因为与BLOB存储的交互细节被提供商库抽象出来了,所以你可以改变存储而不必改动应用程序,这带来了很大的好处并且降低了开发人员和管理员的复杂度。Microsoft与业内的所有存储供应商合作,以确保提供一个适当的供应商库用于远程BLOB存储API。 使用远程BLOB存储API使你能够灵活地使用不同的系统来管理关系数据和非关系数据。远程BLOB存储API通过链接级别的一致性维护了数据库中的记录与在外部存储的BLOB之间的一致性。例如,如果你通过一个删除语句从数据库中删除BLOB参照,系统将从存储中删除BLOB。然而,使用远程BLOB存储API不能提供随着BLOB直接存储到数据库中而来的数据级别的一致性,要做到这一点你需要使用FILESTREAM或者varbinary。

◆3.4 比较BLOB的存储选择

下表比较了SQL Server 2008中的BLOB数据的存储选择。

 

表1:BLOB存储选项对照

这些选项意味着SQL Server 2008为存储非结构化数据提供了一个最适合你的业务需求的灵活的解决方案。

4. 在SQL Server 2008中搜索非结构化数据

使用非关系数据的应用程序的一个最常见的要求是使得可以在数据上作纯文本搜索。

◆4.1 综合的纯文本搜索

SQL Server 在之前的版本中支持纯文本搜索。然而,它一直依赖于一个外部的服务——Windows Search Service ——作为它的纯文本搜索引擎。使用外部服务产生了下面两个挑战:  · 对外部服务的依赖使得部署更加复杂,也更难进行支持。  · 结合了纯文本搜索谓词和标准的SQL谓词的查询性能受到影响,因为从搜索的纯文本部分得来的整个结果集不得不在标准的谓词应用之前放置在这个引擎上。查询优化器不能创建与纯文本搜索谓词协作的计划。  在SQL Server 2008,纯文本搜索是完全集成在数据库引擎中的。通过将纯文本引擎直接集成到SQL核心中,SQL Server 2008解决了之前版本中所面临的挑战,降低了管理和部署SQL Server的成本,同时提高了搜索非结构化数据的性能。

5. 总结

SQL Server 2008为存储和搜索非结构化数据提供了一个灵活的解决方案。FILESTREAM加强了存储数据库中的非关系数据像BLOB和关系数据的性能,而没有降低可管理性。如果你需要使用一个只用于BLOB的存储,那么远程BLOB存储API能够帮助你集成你的BLOB数据和你的数据库中的关系数据,并提供一个一致的编程界面用于与这个数据交互,还提供了系统的独立性,用来存储数据。最后,当你需要通过使用在这篇白皮书中讨论的任何解决方案来存储和使用大型文档库时,SQL Server 2008帮助你使得搜索非关系数据更加有效也更易于管理。

0
投稿

猜你喜欢

  • 如果你从未为MySQL设置根用户密码,服务器在以根用户身份进行连接时不需要密码。但是,建议你为每个账户设置密码。如果你以前设置了根用户密码,
  •     CSS的出现使网页制作者在对网页元素的控制方便许多,当然,有利必有弊,CSS只能对颜色、大小、距离等静
  • 如何将产生的密码记录并发送给用户?这里使用了cdonts邮件组件来发送邮件,前提服务器得支持cdonts组件。好了,看看具体实现方法吧,不是
  • XML即可扩展标记语言(eXtensible Markup Language)。标记是指计算机所能理解的信息符号,通过此种标记,计算机之间可
  • 这几天看了篇叫"Penetration: from application down to OS (Oracle)"的文
  • mssql 的正式名字是 SQL Server MS公司出的。图形操作界面好一些,性能还可以。在在mssql和oracle上不能互换.支持O
  • 关于中大型开发b/s开发中的缓存(cache),我的一些看法,有不正确的或者是有笔误的地方,请指正。thanks首先,应该了解基本的,对于缓
  • 在计算机中数据有两种特征:类型和长度。所谓数据类型就是以数据的表现方式和存储方式来划分的数据的种类。在SQL Server 中每个变量、参数
  • 这是一个很简单的纯CSS相册滑动浏览效果,仅用一个无序列表ul结合简单的CSS就可以实现。原文中介绍的纵向滑动相册的实现方法,但是相比之下个
  • 本文总结了ASP初学者常犯的几个错误,希望对asp学习者有所帮助!1.记录集关闭之前再次打开:-----------------------
  • 一、使用css缩写使用缩写可以帮助减少你CSS文件的大小,更加容易阅读。css缩写的主要规则请参看《常用css缩写语法总结》,这里就不展开描
  • 简单的XML操作:XML文件创建把下面的代码复制到按钮事件中编译执行后可在相应物理路径中产生Pos.xml文件XmlTextWriter x
  • 这两个字符串真实长度和取固定长度的字符串函数是在 photo.163.com 的js文件里看到的。 作者&nb
  • 以下的文章主要是介绍MySQL5创建存储过程的实例演示,MySQL5创建存储在实际操作中应用的频率还是很高的,以下就是MySQL5创建存储过
  • 在Flash播放器运行时,将不同来源的资源划分到独立的沙箱(sandbox)内,不同沙箱之间不能彼此操作数据(除非目标沙箱做过一些设置,授权
  • 这问题在网络相信已经有不少人问到,最近再次被牵起讨论,籍此记录一下个人的理解,border:none;与border:0;的区别体现有两点:
  • 这篇论坛文章着重介绍了SQL Server数据库简体繁体数据混用的问题,详细内容请参考下文:我现在要说的是一个在简体繁体数据混用的时候很容易
  • 动态生成的IFRAME,设置SRC时的,不同位置带来的影响。以下所说的是在IE7下运行的。IE6下也是同样。在这个blog中,直接点击运行代
  • 另:@会影响效率如:@mysql_connect()    可以导出错误,但会影响效率。mysql与mysqli的区别:
  • 首先要兼容IE\FF滴然后有一个环境与条件:必须是使用em单位布局。因为这个是利用字号做缩放效果,并且兼容fontSize各项单位,例如px
手机版 网络编程 asp之家 www.aspxhome.com