惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Help Net Security
Help Net Security
G
Google Developers Blog
雷峰网
雷峰网
WordPress大学
WordPress大学
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
Engineering at Meta
Engineering at Meta
Security Latest
Security Latest
T
Threat Research - Cisco Blogs
AWS News Blog
AWS News Blog
F
Full Disclosure
C
Cybersecurity and Infrastructure Security Agency CISA
T
The Exploit Database - CXSecurity.com
J
Java Code Geeks
U
Unit 42
C
Cyber Attacks, Cyber Crime and Cyber Security
V
V2EX
C
Cisco Blogs
博客园 - 司徒正美
Project Zero
Project Zero
L
LINUX DO - 热门话题
阮一峰的网络日志
阮一峰的网络日志
Blog — PlanetScale
Blog — PlanetScale
Scott Helme
Scott Helme
A
About on SuperTechFans
Hugging Face - Blog
Hugging Face - Blog
S
Securelist
小众软件
小众软件
aimingoo的专栏
aimingoo的专栏
S
Schneier on Security
G
GRAHAM CLULEY
酷 壳 – CoolShell
酷 壳 – CoolShell
Cyberwarzone
Cyberwarzone
MongoDB | Blog
MongoDB | Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 叶小钗
T
Threatpost
Recorded Future
Recorded Future
C
CXSECURITY Database RSS Feed - CXSecurity.com
宝玉的分享
宝玉的分享
N
News and Events Feed by Topic
人人都是产品经理
人人都是产品经理
The Register - Security
The Register - Security
S
Security Archives - TechRepublic
博客园 - Franky
N
News | PayPal Newsroom
Simon Willison's Weblog
Simon Willison's Weblog
S
SegmentFault 最新的问题
W
WeLiveSecurity
A
Arctic Wolf
B
Blog

博客园 - 马啸西风

SQL Server 2008之托管代码 SQL Server 2008之触发器 SQL Server 2008之约束 SQL Server 2008之用户自定义函数 SQL Server 2008之错误处理 SQL Server 2008之创建高并发应用程序 SQL Server 2008之合并数据和表传递 SQL Server 2008之存储过程的设计和实现 SQL Server 2008之通过非聚集索引提高性能 SQL Server 2008之读取查询计划 SQL Server 2008之表结构实现 SQL Server 2008之索引设计 SQL Server 2008之视图的设计和实现 SQL Server 2008之表的设计和实现 SQL Server 2008之数据类型 启用Application library caching时,将多个不同步的程序集打包到一个ZIP包中的问题 垃圾收集导致的概率性发生的bug DataGridView中下拉列表框的实现 C#之集合
SQL Server 2008之XML数据存储
马啸西风 · 2012-12-25 · via 博客园 - 马啸西风
  1. SQL Server许多方面都用到了XML
  • SQL Server可以存储XML数据、XML架构、根据XML架构验证XML数据
  • DDL触发器返回事件详细数据是XML数据结构(EVENTDATA)的,导致触发器被触发
  • Extended events返回的trace数据是XML格式的
  • Logon触发器返回的详细数据和DDL触发器是相似的,都是EVENTDATA结构的
  • Service Broker中传输的数据都是基于XML
  • Event notifications通过Service Broker队列发送DDL事件详细信息。这些通知都是基于XML
  1. XML是纯文本、基于Unicode的元数据语言(描述语言的语言),用来保存结构化和半结构化的数据,不和任何编程语言、操作系统或者供应商相关,提供了大量的操作、结构化、传输和查询数据的方法;用来在不同的系统之间交换数据,是自描述的语言
  2. 结构良好的XML只有一个顶级元素,包含多个顶级元素的文档称为片段
  3. XML是一个集合名称用作元素或者属性名称,避免名称冲突;所有的命名空间都是用xmlns属性,属性值是一个合法的URI,使用URI作为命名空间的名称,主要是为了不重复,他们不是真正指向一个资源,也可以提供其他容易理解的形式
  4. XML schema描述了XML文档的结构,XML schema语言也被称为XML Schema Definition(XSD),提供了验证约束,定义如下:
  • 可以在文档中出现的元素
  • 可以在文档中出现的属性
  • 那些元素是子元素
  • 子元素的顺序
  • 子元素的数量
  • 元素是否可以为空或者是否可以包含文本
  • 元素和属性的数据类型
  • 元素和属性的默认值和固定值
  1. SQL ServerXML数据的原因
  • 你希望以高效的方式分享、查询和修改XML
  • 在关系数据和XML数据之间进行交互
  • 跨越应用程序域进行交互,需要数据最大的灵活性,其他系统可能使用完全不同的技术,不是使用同样的方式展示数据
  • 你可能无法预先知道数据的结构,通常都是结构化和半结构化的数据的混合,比如一个表将不是很结构化的数据存储在XML列中
  • 你可能有非常稀疏的数据,比如一个表有上千列,只有很少的列或者行有数据,直接使用XML类型数据,不在使用关系数据
  • 数据可能需要顺序,关系表和视图是没有隐式的顺序的,XML文档可以展示可以按顺序展示数据
  • 希望SQL Server验证你的XML数据,使其在处理前满足特定的XML schema
  • 希望在XML数据上创建索引,使其查询更快
  1. SQL Server为了更容易处理,不是按照原始输入存储XML数据,它都是使用内部形式存储数据,这两种形式是等价的,比如输入为<Customer Name="Terry"></Customer>,其内存存储形式为<Customer Name="Terry"/>
  1. SQL Server中有XML SCHEMA COLLECTION对象,用于保存XML Schema集合,验证XML实例,在被存储到数据库中时type XML数据,当你将XML SCHEMA COLLECTION对象和一个XML变量、参数、列关联时,存储XML的位置至少要符合一个XML Schemasys.xml_schema_collections系统视图提供已经存在的XML schema collections详细信息,sys.xml_schema_namespaces系统视图提供XML schema collections引用的命名空间的详细信息;XML schema collections也不是按其输入的格式存储,而是转化为内部格式
  2. 当不想让XML数据拥有schema或者不想让服务器验证数据(执行验证对服务器产生严重的性能影响),就使用untyped XML数据类型;当你拥有并且想要服务器验证XML数据、想要利用基于type信息的存储和查询优化、想要在编译查询时利用type信息,使用typed XML数据类型(这里的type指的是schema的类型)
  3. 当指定XML数据类型时,可以指定是否可以存储XML Fragment,如果使用了CONTENT关键字就可以存储XML Fragment,该选项是默认选项;如果使用了DOCUMENT关键字,就不允许存储XML Fragment,只能存储格式良好的XML
  4. XML数据不是直接以文本形式在SQL Server中存储,为了查询方便,它被分解成对象树形式,使其在内存中更容易定位;即使这样处理起来也慢的话,可以创建索引,XML索引是XML对象树的副本,用来快速重用;XML索引比底层XML数据大很多,而关系索引一般都比底层表小
  5. SQL Server共支持四种类型XML索引:
    • Primary XML Index,提供持久化对象树,该树是从XML的结构形成的,用来加速元素和属性的访问,避免每次查询都遍历整个XML文档的需要,创建该索引时,要求必须首先建立聚集主键
    • Second XML Index,共有三种类型该索引:PATHVALUEPROPERTY,每一种类型都针对一种类型的查询;PATH索引帮助决定元素或者属性的路径是否合法,典型应用于XQueryexist方法;VALUE索引帮助获取元素或者属性的值;PROPERTY索引通过路径表达式检索多个值;只有创建完Primary XML Index后才可以创建Second XML Index,并且在创建Second XML Index时,还需要引用Primary XML Index

    Primary XML Index可以通过SSMST-SQL命令创建,Second XML Index只能通过T-SQL命令创建

发表于 2012-12-25 14:05  马啸西风  阅读(2406)  评论()    收藏  举报

Powered By 博客园