摘要:被逼写出来的文章,还没有稿费:(和登出来的有点不一样,改动了几个地方
前言
7月23日,微软发布了 SQL 2005(代号 Yukon)的 Beta2版本,在这个版本中,大部分功能都得以实现,让我们可以更清晰的看到 Yukon 的真实面目。
自从1998 年XML 正式成为标准以来,就以它的简单、易扩展和对非结构化数据的良好支持等特性迅速得到大家的青睐。比尔·盖茨当然也不会放过这个重要的机会,在微软和其它一些公司的推动下,XML 的各种应用大量出现,它的发展早已超出了当初最乐观的估计。于是,有了危机感的关系型数据库,也开始加大对XML支持的力度了。
Microsoft SQL Server 2000是从1997年开始开发的,所以在这个版本中,微软并没有加入很多的XML功能,虽然后来发布了SQLXML,但是也没有带来太多的功能变化。
可是,在 Yukon 中,很多事情都变得不一样了。对XML数据发布、存储和查询的全面支持,标志着关系数据库和XML的蜜月期正式到来。
.NET、Yukon与XML
熟悉 .NET framework 架构的都知道,微软 .NET 战略的基础之一就是 XML。在 .NET开发之中,对象、 Dataset 和 XML,是三位一体的数据表现形式。在 Schema 的控制下,它们可以自由的互相转换。
虽然在大多数的情况下,我们没有必要接触到 XML,没有必要知道 Dataset 的底层是些什么内容,没有必要知道序列化和反序列化的时候都做了些什么。但是,为了更好的优化我们的程序,有时我们还是需要自己来打造 XML。
在我的应用程序中,我喜欢直接让数据库直接输出 XML,然后传递到前台,再转换为对象。有时也让前台把对象转换为 XML,让数据库去处理 XML 数据,省去了烦人的一次次交互,也大大提高了处理的性能。
在 SQL 2000 里,我们就可以通过 FOR XML 查询和 OPENXML 语句来返回和读取XML。它可以完成我需要的大部分工作,不过令人不快的是,编写 FOR XML 查询和OPENXML语句都是非常麻烦的工作,要得到一个满意的XML结构, FOR XML EXPLICIT 查询经常长达1,000字节,甚至达到10,000字节,这很大程度的增加了编写代码和调试的工作量。而且,在SQL 2000中,查询引擎是把查询的结果放入XML流的,这也在一定程度上降低了性能。
对于大多数人来说,Yukon 给我们带来了一种更简便易行的方式。这就是批注的映射架构和 XPath 查询。我们可以建立一些批注来指定 XML 到关系的映射。这些批注的基础包括 XSD 架构中的元素和属性与数据库中的表/视图和列之间的映射。在默认情况下,批注架构中的元素名映射到指定数据库中的表(视图)名,属性名映射到列名。这些批注还可用于指定 XML 中的分层关系(从而表示数据库中的关系)。
从本质上看,此处完成的所有任务就是提供一个 XML 到关系表的映射。 换句话说,这与让传统的关系视图接受 XML(而非行集合)结果非常相似。 实际上,通过构建这种映射,我已经开发了所谓的 XML 视图。 XML 视图可被视为传统数据库上的抽象层。 通过提供这种 XML 视图,用户能够以分层的半结构化方式来公开传统的关系数据,实际上,这种方式通常是用来公开业务对象的更自然的方式。
传统的 SQL 查询是用来筛选和联接关系表和视图的好工具。 但是,XML 视图看上去一点都不像关系表和视图。 熟悉 XML 的人都知道, XML 数据有另一种强大的查询语言,那就是XPath 查询语言,我们可以通过 XPath 来对 XML 视图进行查询。 XPath 用于从 XML 文档中选择一组节点。 每个 XPath 运算符都基于一个由以前的 XPath 运算符选择的节点集来选择一个节点集。 XML for SQL Server 支持......[
阅读全文]