新技术带来的新麻烦
XML(Extensible Markup Language)技术作为一种自我描述的数据结构,具有极大的灵活性,凭借其可扩展、平台无关和易于交换等特性获得各方面的一致认可。随着业务和IT技术的进化,越来越多的公司开始广泛采用XML技术。同时,为了实现在不同的系统和应用程序之间交换数据以适应业务环境的快速变化,大量的企业开始建立SOA(Service Oriented Architecture,面向服务的架构),而XML正是SOA得以建立的基础。因此,几乎所有的著名IT企业都在寻找办法来高效地共享、搜索和管理公司产生的大量 XML 文档和消息,从而帮助公司减少存储和使用 XML 数据所需的时间和工作量,进而减少开发费用并提高业务灵活性。
管理新的数据形式常常要面对新的挑战,迅速增长的XML格式数据就给企业带来了这种麻烦。XML数据模型与传统的关系模型有很大的区别,关系模型是以关系(表)、属性 (列)为基础的,而XML数据模型是以节点 (元素、属性、备注等)和节点间存在着的相互关系为基础的,目前普遍采用的管理和共享 XML 数据的一般方法都存在一定的缺陷。
文件系统可以应付简单的任务,但是在需要处理大量文档时它们就表现出弱势了,并发性、恢复、安全和可用性问题变得难以管理。商业关系数据库管理系统(DBMS)解决了这些问题,但是在其他方面仍有所欠缺,它们常常提供两种基本的数据库设计选项 —— 将每个 XML 文档完整地存储为一个大型对象,或者将它拆散,分散存储在多个表的多个列中,在许多情况下,这些选项都会导致性能问题、管理困难、查询的复杂性增加以及其他一些问题。而纯粹的XML DBMS 在 IT 基础设施中引入了一种新型的环境,而且这种环境还没有经过考验,它的集成能力、需要的人员技能以及未来的生命力还不确定,会造成很多风险因素。
那如何才能做到即充分利用XML的各种特性,又能够简单、高效的存储XML数据呢?
IBM DB2 9破难关
面对这些挑战,经过多年的积累和持续创新,IBM在业内率先推出了第一个直接支持 XML 的混合数据服务器——IBM DB2 9(代号为Viper)。
IBM DB2 9提供了与以前版本非常不同的体系结构,它通过提供新的查询语言、新的存储技术、新的索引技术和支持XML 数据及其固有层次结构的特性,使得IBM DB2 9成为 IBM 的第一个“混合型”(即多结构)数据库管理系统。除了支持表数据模型之外,DB2 还支持 XML 文档和消息中固有的层次化数据模型。用户可以在一个表中自由地混合存储传统 SQL 数据和最新的 XML 数据。还可以使用 SQL(如果愿意,可以加上 XML 扩展)和 XQuery(新出现的 XML 数据查询标准)来查询和处理这两种形式的数据。在经过实践检验的数据库管理基础设施上进行扩展,IBM 为 DB2 9 用户提供了同时处理关系数据和 XML 数据的强大支持。新的基于XML的应用程序使用DB2可以无缝地访问关系数据库资源,拥有企业级XML应用的访问能力。
DB2 在所有特性/接口中都整合了对XML数据的支持,而DB2 对 XML 的 “固有”支持是在对其他技术的现有支持之外提供的,SQL、表格数据结构和各种 DBMS 特性现有仍然能够获得最好的支持。因此,用户可以用一个数据库对象同时管理 “传统的” SQL 数据和 XML 文档。
为了高效地管理传统 SQL 数据类型和 XML 数据,DB2 包含两种不同的存储机制。但是,一定要注意,给定数据类型所用的底层存储机制对于应用程序是透明的。换句话说,应用程序不需要显性地指定要使用的存储机制,也不需要管理存储的物理细节,比如如何将 XML 文档的各个部分拆分到多个数据库页上。系统会自动采用适合目标数据的格式,应用程序自然而然地获得存储和查询数据方面的运行时性能优势。
DB2 9的独到之处
DB2 使用户能够完整地存储 XML 文档,同时 DBMS 完全掌握文档的内部结构。这样就避免或减少了其他解决方案涉及的管理任务和程序设计任务。另外,它可以加快文档之间和文档内部的搜索,使顾客能够更快地适应 XML 模式中反映出的业务需求变化。DB2 对存储 XML 数据的惟一要求是它必须是 “良构的(well formed)” —— 也就是说,它必须符合 “W3C XML 标准”中指定的语法规则。这种宽松的方式给用户提供了很大的灵活性,更容易存储包含不同属性和内部结构的 XML 文档集合。
XML 文档集合存储在 DB2 表中,这些表包含一个或多个新的 XML 数据类型的列。为了用户易于集成传统形式的业务数据和 XML 数据,DB2 管理员可以创建同时包含传统 SQL 数据类型列和新的 XML 数据类型列的表。这使管理员能够使用熟悉的 SQL 数据定义语言(DDL)语句来创建存储 XML 数据的数据库对象。但实际上这个熟悉的接口隐藏了一个事实,那就是DB2是以不同的方式存储 XML 数据的,它使用新技术来存储 XML 数据的层次结构,并支持高效地搜索原始 XML 数据的所有部分。 DB2 采用一种经过解析的格式来存储和操作 XML 数据,这种格式可以反映原始 XML 文档的层次结构。因此,它采用树和节点作为模型来存储和处理 XML 数据。如果用户要求 DB2 在进行存储之前针对注册的 XML 模式对 XML 数据进行检验,那么 DB2 将用模式类型信息对 XML 层次结构中的所有节点进行标注;否则,就用默认的类型信息对节点进行标注。
DB2 新的 XML 支持包含新的查询语言功能。程序员现在可以使用 SQL 或 XQuery 搜索数据,XQuery 是一种新的查询语言,支持导航(即基于路径的)表达式。实际上,应用程序可以自由地使用这两种语言的语句,而且一个查询语句可以结合使用 SQL 和 XQuery。
DB2 对 XML 支持的新特性包括对熟悉的管理工具的扩展,可以帮助管理员管理以及对数据库进行调整。例如,备份和恢复设施(包括用于故障恢复的高可用性数据复制)都支持 XML 列中存储的文档。DB2 的图形化管理工具 DB2 Control Center 使管理员能够浏览包含 XML 数据的表、创建和管理基于 XML 的索引、发出 SQL/XML 和 XQuery 语句以及执行许多其他管理任务。因为性能常常是关注的重点,相应的 DB2 设施也进行了扩展来适应 XML 数据。这些设施包括 DB2 Snapshot Monitor(即 “快照”),它提供对某一时刻 DB2 活动的汇总;RUNSTATS,它收集 DB2 数据库中存储的数据的统计信息;以及 EXPLAIN,它报告查询优化器为满足给定请求所选择的访问路径。管理员可以通过研究 EXPLAIN 的输出来判断使用了哪些 XML 索引。
如果程序员无法可靠地访问数据库中存储的 XML 数据,那么 DB2 新的 XML 支持的意义就不大了。正是认识到了这一点,IBM 对它的各种编程语言接口进行了增强,从而支持轻松地访问 XML 数据。这些增强覆盖 Java™(JDBC)、C(嵌入式 SQL 和调用级接口)、COBOL(嵌入式 SQL)、PHP 和 Microsoft® 的 .NET 环境(通过 DB2.NET 数据提供程序)。
DB2 9是第一个同时支持关系型数据和内置XML数据支持的数据库,将XML与传统关系数据库实现了完美的结合,让用户可以付出最小的代价而获取最先进的技术特性和卓越的性能表现,开启了混合型数据库管理系统的新纪元,是IBM 公司26年来信息管理划时代的技术创新,领导数据管理走向新的高峰,必将成为数据库发展史上的一个新里程碑。