最火下载站首页
手机版
最火下载站
关注公众号
最火下载站

当前位置:首页 > 网络知识 > 网络编程 > SQL SERVER> 通过SQL 2008管理非结构化数据

通过SQL 2008管理非结构化数据

文章作者:网友投稿 发布时间:2008-09-22 来源:网络

通过SQL Server 2008管理非结构化数据
SQL Server 技术文档
作者:Graeme Malcolm (内容主管)
技术审核员:Shan Sinha
项目编辑:Joanne Hodgins
发布日期:2007年8月
适用产品:SQL Server 2008

概述:数字化信息的增长为企业应当存储和访问业务数据的方法提供了启发。数据库作为业务应用程序的核心,必须能够同非结构化的数据进行集成,其中包括文档、图像、视频、以及其它多媒体格式。为了能够对信息生命周期进行管理,满足策略需求,并实施内容管理解决方案,企业需要存储和管理所有格式的数字化数据。
Microsoft SQL Server™ 2008提供了一套灵活的解决方案,对非结构化数据进行存储并将其同关系型数据相结合,从而围绕企业中的全部数据来构建一套全面的解决方案。

版权

该白皮书为初步文档,可能会在所述软件进行最后商业发布之前做完全修改。

本文档所包含的信息代表了在发布之日,Microsoft Corporation(微软公司)对所讨论问题的当前看法。因为Microsoft必须顺应不断变化的市场条件,故不应将本文档理解为Microsoft一方的承诺,Microsoft不保证所给出的信息在发布之日以后的准确性。

本白皮书仅用于提供信息。Microsoft对本文档中的信息不做任何明示、默示或法定的担保。

遵守所有适用的版权法律是用户的责任。在不对版权法所规定的权利加以限制的情况下,未得到Microsoft Corporation明确的书面许可,不得为任何目的、以任何形式或手段(电子的、机械的、影印、录制等等)复制、传播本文的任何部分,也不得将其存储或引入到检索系统中。

本文档可能涉及Microsoft的专利、专利申请、商标、版权或其它知识产权。除非Microsoft通过书面许可协议明确提供,此文档并没有授予您对这些专利、商标、版权或其它知识产权的任何许可。

除非特别说明,此处所述作为范例的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点和事件均为虚构,不与任何真实的公司、组织、产品、域名、电子邮件地址、徽标、人员、地点或事件有任何联系,也不应据此进行任何臆测或推断。

Ó 2007 Microsoft Corporation. 保留所有权利。

Microsoft, Excel, SQL Server, 以及Windows是Microsoft Corporation在美国和/或其它国家的注册商标或商标。

所有其它商标均是其各自所有者的财产。


目录

导言 1
非结构化数据的商业动力 1
非结构化数据面临的挑战 1

存储非结构化数据的挑战 2
使用非结构化数据的挑战 2
在SQL Server 2008中的非结构化数据的目标 2
在SQL Server 2008中存储非结构化数据 2

SQL Server BLOB 3
FILESTREAM 属性 3
远程BLOB存储API 3

比较BLOB的存储选择 4
在SQL Server 2008中搜索非结构化数据 4

集成全文搜索 5
结论 5

导言

最近几年,个人和公司创建及存储的数字化数据急剧膨胀。过去,企业使用计算机系统和数据库以结构化格式(例如关系表或固定的格式文档)来存储大部分商业数据,软件应用程序使用这些结构化数据来执行商业任务。然而如今,公司的很大一部分数据存储在使用功能强大的工具(例如Microsoft® Office Excel®和Microsoft Office Word)所创建的文档中,而数字照片、文档扫描、视频产品和音频格式进一步的扩大了用于商业数据的非结构化数据格式的范围。此外,存储硬件和内存的成本显著降低,也极大的影响了计算机中所存储的数据的数量和类型,并导致新一代的商业应用的产生,这些商业应用合并了传统的关系型数据结构和非结构化数字内容。数字内容的丰富意味着公司现在正试图在企业范围内管理关系型数据和非结构化数据,并需要一个能够全面满足关系型数据存储和非关系型数据存储,同时降低对这些应用程序进行管理和创建成本的解决方案。

例如,考虑一个保险索赔应用程序在过去的15年里是怎样改变的。15年前,这个应用程序一般维护一列以简单的行和列来存储的保险索赔记录。而今天,一个保险索赔应用程序更趋向于管理一组包括图片、照片和文档的索赔记录。它还可能需要以基于XML的格式来显示索赔数据,以此来与其它的系统集成,并且它还可能包括更高级别的功能,例如空间可视化、报表和分析。

SQL Server 2008提供了一些超出传统的数据库系统功能,并趋向于提供能够存储、管理和查询所有类型数据(包括非结构化二进制数据、XML和空间数据)的数据平台。这篇白皮书集中讲述了非结构化数据,并描述了SQL Server 2008中存储、管理和使用非结构化数据的选项。
#p#副标题#e#
非结构化数据的商业动力

大多数公司依赖于存储在数据库中的关键业务数据,并在存储和操作这些数据的数据管理系统和应用上投入很大。然而,日渐增长的业务产生了大量的数字图片、文档视频和其它多媒体格式的非关系和非结构化数据——这些新的数据格式迅速成为正式或非正式的商业流程的关键组成部分,它们与现有的商业应用程序集成在一起,遵守管理要求,或者简单的提供更加丰富的用户体验。

例如,在下面这些商业情景中:

一个保险公司需要存储政策文档并在索赔过程中获取这些文档。
一个在线零售商需要存储用于在电子商城中显示其产品的视频胶片。
一个电话系统需要保存语音信息的音频流以便进行远程传送。
一个广播台需要制作一个在其网站上用于下载并可以搜索的广播库。
一个法律实践需要以图片形式存储文档,并需要很容易的获取与一个单独的客户端或例子相关的文档。
一个建筑合伙企业需要存储和提取数字格式的计划和其相关联的客户端数据。
一个图书馆需要转换并存档大量文件并对内容进行分类,以便在数字搜索工具中进行检索和使用。

这些是全球商业中使用非结构化数据的一些例子;并且随着数字内容的创建越来越容易,公司也在寻找新的方式来使用这些数字内容来改进或扩展其商业能力。

非结构化数据面临的挑战

新的非结构化数据的类型在不断增加的同时,数字内容也带来了很多好处和商业机遇,但它同时还带来了一些针对那些需要合并这些非结构化数据源到计算机应用程序和服务中去的系统架构师、管理员和应用程序开发人员的挑战。
存储非结构化数据的挑战

要考虑的第一个挑战,同时也可能是最明显的挑战,就是非结构化数据的大量存储。你需要拥有一个可以灵活满足存储非关系型数据、同时将成本和管理费用降至最低的系统。当你计划存储非结构化数据时,要考虑的主要问题包括:

存储非结构化数据的成本,不只是包括硬件成本,还包括管理成本。

非结构化数据的物理存储位置,例如文件服务器和网络附属存储(NAS)设备。

管理持久力和存档政策。

将非结构化数据文件和相关联的关系型数据集成起来,并维护结构化数据源和非结构化数据源间的事务一致性。

将与维护关系型数据和非结构化数据相关的管理费用降低到最小。

性能和可扩展性。

保护非结构化数据,并确保相关的关系型数据的一致性。

非结构化数据的可用性和可恢复性。

使用非结构化数据的挑战

关于存储非结构化数据的相关问题,你必须考虑数据将怎样被你的应用程序使用。一些具有代表性的要考虑的事项包括:

在建立使用结构化数据和非结构化数据的应用程序时,遇到的开发挑战包括编写代码来创建、提取、更新和删除非结构化数据,并

维护相关联的关系型数据源和非结构化数据源间的事务一致性。

索引和搜索非结构化数据。

显式提取可用的元数据(例如从表格区域或文件属性),并将它显示给用户。

将文档内容转换为可以搜索和查询的格式(例如,转换音频文件到文本形式,从而可以被数据库查询或纯文本引擎检索到。)

在SQL Server 2008中非结构化数据的目标
非结构化数据面临的相关挑战反应了那些开始为数字内容建立解决方案的公司所关注的一些常见情况:

管理多个不同的平台来处理关系型数据和非关系型数据,从而导致不必要的复杂性。

这些分散的数据存储对于开发人员来说增加了复杂度,并对于经理来说提高了部署难度。

对于开发人员和数据库管理员来说,在这些不同的数据类型中缺少可以使用的服务。

SQL Server 2008旨在解决这些问题,通过:

降低管理不同数据类型的成本。

简化使用关系型数据和非关系型数据的应用程序的开发工作。

将现在只用于关系型数据的功能扩展到非关系型数据。
#p#副标题#e#在SQL Server 2008中存储非结构化数据

依赖于关系型数据和非关系型数据的应用程序通常使用下面三种架构之一:

数据库中的关系型数据以及文件系统和文件服务器上的非关系型二进制大对象(BLOB)。
数据库中的关系型数据和只用于BLOB的存储中的非关系型数据。
数据库中的关系型数据和非关系型数据。

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

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

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

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

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

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的时候。)

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字段的表。

远程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。

比较BLOB的存储选择

下表比较了SQL Server 2008中的BLOB数据的存储选项。
 
 只使用文件服务器或者BLOB存储 SQL Server BLOB 远程BLOB存储API FILESTREAM 字段   

快速流式性能 取决于文件存储 否 取决于BLOB存储 Yes   

链接级一致性  是 是 是 是   

数据级一致性 否 是 否 是   

集成管理 否 是 否 是   

使用远程Windows 文件服务器 n/a 否 是 这个版本中没有   

与外部的BLOB存储协同工作 n/a 否 是 否 

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

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

使用非关系型数据的应用程序,最常见的要求是可以在数据上作纯文本搜索。
集成全文搜索

SQL Server 在之前的版本中支持纯文本搜索。然而,它一直依赖于一个外部的服务——Windows Search Service ——作为它的纯文本搜索引擎。使用外部服务将面临下面两个挑战:

对外部服务的依赖使得部署更加复杂,也更难进行支持。

结合了纯文本搜索谓词和标准SQL谓词的查询性能将受到影响,因为从搜索的纯文本部分得来的整个结果集不得不在标准的谓词应用之前放置在这个引擎上。查询优化器不能创建与纯文本搜索谓词协作的计划。

在SQL Server 2008,纯文本搜索是完全集成在数据库引擎中的。通过将纯文本引擎直接集成到SQL核心中,SQL Server 2008解决了之前版本中所面临的挑战,降低了管理和部署SQL Server的成本,同时提高了搜索非结构化数据的性能。
结论

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

更多信息,请访问
http://www.microsoft.com/sql

这篇文档对您有帮助吗?请将您的反馈提交给我们。告诉我们您的评价1(很不好)-5(很好)。您如何评价以及为何如此评价,例如:
您是否因为其中的优秀示例或截图、清晰的描述或其他原因打了高分?
您是否因为其中不恰当的示例或模糊不清的截图、不清晰的描述打了低分?
这些反馈将帮助我们提高我们今后发布的白皮书的质量。
发送反馈

上一篇: 网友分析微软SQL Server 2008的精妙之处

下一篇: 通过SQL 2008实现可预测的分析

共有0条评论网友评论

游戏排行榜