【IT168技术文档】如何有效地存储 XML、管理 XML 和提高 XML 的处理效率一直是束缚 XML 企业级应用的基础性难题。DB2 V9 首次有效地解决了上述三个基础性难题。IBM 将这一在信息管理领域有着里程碑式意义的技术称为“DB2 pureXML”。本文将和读者一起来探讨:在应用了 DB2 v9 pureXML技术,排除了XML应用的基础性技术障碍之后,我们可以用XML来为企业应用做哪些事情?
DB2 V9解决了XML的存储、管理和高效处理问题
我相信,XML 对于多数读者来说已经是一个耳熟能详的术语了。由于XML具有自我描述性(易理解性)、灵活性、平台无关性和标准化等优点,因此,许多 IT 精英和组织都在探索如何将 XML 这一“基因”优秀的技术广泛应用到企业各个领域。
要让 XML 在企业级层面广泛应用的第一个问题就是技术规范和标准。1998 年 2 月,W3C 正式发布了有关 XML 的规范,并一直不断地完善其标准。到目前为止,XML 的技术规范和标准方面应该说是相当成熟了。
然而,XML 广泛应用于企业应用还有一些一直困扰着 IT 人的基础问题:如何有效地存储 XML?如何更好地管理 XML?如何提高 XML 的信息处理效率,包括查询、部分更新等等? 这些基础问题不解决,XML 在企业应用中就“无法落地”,或者至少说是“无法令人满意地进行落地管理”。例如,XML 在前些年已经广泛应用于数据交换领域,从此,IT 系统与系统之间就有了“公共语言”。然而,人们一直没有找到一种方式,将这些“公共语言”进行高效率地原生态存储和管理,就像原始人有了语言以后长期没有找到能够原生态记录和管理语言的方式——“文字”。
人类是充满智慧的,IT 人更是如此。原始人在没有发明文字的时候,采用了“结绳记事”等等简陋的或是间接的方法来记录和管理人与人之间交流的语言。而 IT 人在过去几年里,也尝试用了一些简陋的或是间接的方式来存储和管理 XML,简单归纳如下:
- 传统方式1:将 XML 简单地保存在文件系统中。这种方式可以说是非常简陋的,基本上没有管理性和效率可言。XML 文件数量不多的情况还勉强可以接受,到了一定规模的企业应用就是难以忍受了。我亲眼目睹了一家公司的应用将数千个 XML 文档放在一个文件夹中,然后通过 Java 应用进行信息查询、更新和删除。其效率、应用维护的复杂度、权限管理等等方面几乎可以用“惨不忍睹”来形容。
- 传统方式2:将 XML 存入关系数据库(DBMS)的大对象字段中。实际上,这种方式只不过是将“传统方式1”中 XML 存储的位置从简单的文件系统挪到数据库大字段中而已,并没有实质性地提高 XML 的可管理性和可操作性。而且不仅如此,我们知道,管理大对象并非 DBMS 的强项。例如在多数 DBMS 中,大对象是不能够像一般结构化数据那样进入数据库内存缓冲池的,因此,效率上大打折扣。
- 传统方式3:将 XML 分解到关系数据库的多张关系型表中。如果 XML 文档本身比较简单还好,如果稍微复杂一点,则可能一个 XML 文档就要映射到好几张关系表,而如果不幸的,XML 的格式经常要发生一些变化的话,那这个映射关系维护起来就更复杂了。这是问题之一。其二,这种方式会让 XML 文档本身的完整性荡然无存,对于一些需要保证 XML 文档完整性的应用就非常不合适。其三,这种分解的方式会耗费数据库服务器的大量 CPU 和内存资源,有可能使数据库系统面临系统资源不足的风险。
- 传统方式4:将XML存放到XML-Only的数据库中。这种特殊的XML-Only的数据库大大提升了XML的可管理性和可操作性。然而将这类非主流的、尚未经过业界验证的数据库应用到企业系统中,未免让人心惊胆战。其次,这种XML-Only的数据库基本上不支持关系型数据,而二十几年的关系型数据历史让关系数据库已经渗入到企业应用的各个方面,因此这种XML-Only数据库在保护投资方面也是倍受批评的。
DB2 V9 的推出开辟了 XML 存储和管理的新天地。在存储方面,DB2 V9 将 XML 进行高效地原生态的存储,在应用访问方面,支持 SQL 和 XML 两种访问方式。不仅如此,所有关系型的操作方式和数据库工具都可用于 XML 之上,例如索引机制、导入导出、关联查询、高速批量加载、系统优化等等。IBM 将这一技术称之为“pureXML”。有了 pureXML 技术,XML 在关系数据库中再也不是“二等公民”了。DB2 V9 成为一个既支持关系数据,又原生态支持 XML 的名副其实的双引擎数据库。
那么,在应用了 DB2 V9 pureXML 技术,排除了 XML 应用的基础性技术障碍之后,我们可以用 XML 来为企业应用做哪些事情?事实上,我无法,也无意将 pureXML 在企业中的应用价值进行穷举。下文只是将我到目前为止所能够看到应用领域做一些小结。真正的目的在于抛砖引玉,引发读者对 DB2 pureXML 的价值进行不断探索。
应用领域之一:信息交换和共享
XML 最先被应用的企业领域是信息交换和信息共享。由于普遍意识到 XML 的优点,许多行业开始制定本行业的基于 XML 的数据交换和信息共享标准。例如:ACORD(保险业 XML 标准)、FIXML(基于 XML 的金融信息交换协议)、FPML(金融产品 XML)、HL7(医疗卫生 XML 标准)、IXRetail(零售行业 XML 标准)、XBRL(业务报告和会计 XML)、NewsML(新闻和发行 XML)……当然,信息交换和共享并非因为 XML 才出现的,然而有了 XML,企业与企业之间或者企业内部的 IT 系统之间的信息交换和共享就更具标准化,同时具有可理解性和灵活性的特点,具有了“共同语言”。以 FIXML 为例,老的 FIX 标准是基于简单文本的,几乎没有可理解性和灵活性可言;而新的 FIXML 标准由于采用了 XML,具有很好的可理解性和灵活性,如图 2 所示:
现在,有了 DB2 pureXML 技术,这些数据交换平台的能力大大增强了,这些交换的 XML 可以被 DB2 数据库原生态地管理起来。应用可以非常便捷地将 XML 以灵活的格式送入“信息高速公路”(企业总线),或者从企业总线中获得 XML。如图 3 所示:
应用领域之二:作为一种新的数据模型
为什么需要 XML 这种新的数据描述模型呢?原因是,多年的实践证明:纯粹的关系数据库 E-R 模型过于严格,结构固化,难以适应信息的复杂性、灵活性、层次性、以及个体差异。下面分别为您举一些我所接触到的例子。
例如:医疗卫生领域中的电子病历、在全球贸易中对中药药材产品的详细描述(多达上千个属性)、银行的客户资料…… 以电子病历为例,一位住院病人的完整电子病历信息通常包括了:既往病史、通科检查、专科检查、病程、医嘱、手术通知书、术前小结、术后小结、出院小结等等错综复杂的信息。如此复杂的信息采用传统的关系型数据库表来保存是相当困难的,往往需要几十甚至几百张表的复杂关联,表结构设计非常复杂,难以理解,也缺乏整体性。而如果采用XML来描述则往往只需要一张或若干张表,设计简单,结构清晰,而且维护也方便。所以,现在国内越来越多的 HIS 应用开发商正在使用 DB2 pureXML 技术在构建其电子病历等应用。如图 4 所示:
图 4. 使用 XML 表示电子病历中的信息
图 5. XML 电子病历信息的形式
例如员工的联系信息、灵活的表单信息、供应商及客户信息等等。这类信息非常容易发生结构性的变化。例如,前些年的老系统中员工电话可能只有一个,而随着移动电话的快速普及,员工很可能每人拥有多个联系电话。这时修改结构化表的代价是非常高的,而如果联系信息采用 XML 形式,则易如反掌。如下图所示:
例如汽车行业的物料清单信息(往往采用好几个层级来描述一辆汽车的零部件和供应商),民航服务公司的旅客票务信息等等。此类层次性特征明显的信息如果采用 E-R 模型来建模,则免不了就会出现若干个层级,从而经常出现许多张大表的关联查询,其效率往往非常低。
为什么采用关系型方式会出现稀疏数据呢?我认为其根本原因是关系型表的结构是固化的,每个个体(数据行)的字段数量都必须相同,而个体之间往往又存在较大的差异。而如果采用 XML 来描述此类信息则完全没有这个问题。
发挥细粒度检索能力以及强大的关联能力,进行文档管理和知识管理。
采用一般的全文本搜索引擎往往只能告诉用户他/她要的信息在哪篇文档中,而无法告诉用户具体在那些文档的哪个章节和段落。而一篇企业文档(例如技术文档、规章制度、文献、报告等等)往往包含几十、几百、甚至上千页,这对用户而言就很不方便,因此就出现了“细粒度检索”的需求,即能够搜索结果不包含哪篇文档,还要具体显示该文档的哪些章节和段落。而如果采用 XML 对文档进行精细描述,并用 XQuery 进行细粒度检索,就能够满足用户的这类需求。
在知识管理系统中,信息与信息之间的关联是非常重要的信息。我曾经接触过一个大型国际体育赛事的知识管理系统,该系统就非常强调信息的关联性。比如场馆信息与比赛项目信息之间就有着非常紧密地联系,不同的比赛项目对场馆有着不一样的要求,而且它们还与票务信息紧密联系,因为不同的比赛项目,不同的场馆结构,对于 VIP 座位的定义是不一样的。毫无疑问,采用 XML 来描述这类关联性很强的信息是很好的选择,因为关联(Link)是 XML 的强项。
2003 年 10 月 14 日,万维网联盟(W3C)宣布了 XForms 1.0 标准的发行,它 是新一代基于 Web 的表单的基石。传统的 HTML 表单并没有分离表单的“用途”(purpose)和“表现形式”(presentation);而 XForms 则不然,它将一个表单的作用和表单的表现形式分离开来。这就允许一个表单可以有更加灵活的表现形式选择,并可以支持多种显示设备。XForm包括三部分:模型(model)、实例数据(instance data)和用户界面。
这些 eForm 以 XML 原生态的形式被保存在 DB2 V9 数据库中,并无缝结合到企事业的整个业务流程中。
应用领域之五:内容推送(RSS)
尽管过去一段时间里有许多人在批评 Web 2.0 就是“一帮人在看皇帝的新装而已”,然而,Web 2.0 这场变革已经在褒贬不一的声音中走到了我们面前,并正在悄悄地改变我们的生活。谈到 Web 2.0,大家自然而然会想到 RSS、Blog、Wiki 这类应用以及 XML 和 Ajax 等技术实现。限于篇幅,本文不能展开讨论 Web 2.0。在本章,我只是抛砖引玉地谈一谈 RSS 之一重要的 Web 2.0 应用,以及 DB2 V9 是如何能够提高 RSS 的信息管理和应用开发效率的。
RSS(Really Simple Syndication)是站点与站点之间共享内容的一种简易方式(也称为“聚合内容”)。各网站(RSS Provider)提供 RSS Feed,然后由 RSS 聚合平台(Web 2.0 网站或桌面工具等),根据用户的喜好,进行选择性地聚合。
例如,IBM 网站为各种产品的技术支持提供了 RSS Feed,请参见参考资源中的信息管理产品家族示例。然后,我们就可以将这个 RSS Feed聚合到各种聚合平台中。如下图,是我非常喜欢的“新浪点点通阅读器”,我将 DB2 的技术支持、国内新闻、国际新闻、本地新闻以及财经地产等等站点的 RSS 聚合到这个阅读器中,这样一来,我每天就可以非常方便地阅读我所关心的信息。
为了能够做到统一订阅,RSS 具有统一的标准。事实上,RSS 是属于 XML 的一种,它遵守 XML 1.0 规范。为了更方便地应用 RSS 样式,RSS 提供了标准的元素以及这些元素的表现形式。
通过 DB2 V9,RSS Provider 就可以对其发布的 RSS Feed 进行更为高效的增删改以及检索等操作。而 RSS Reader 应用则可以利用 DB2 V9 统一管理用户所订阅的各个 RSS Feed。
甚至,还可以利用 DB2 V9 直接将这些 RSS Feed 发布成 Web Service,从而更方便地集成到应用中。
由于构成图形用户界面的各种元素(例如窗口、菜单、字菜单等等)间天生所具有的层次和嵌套关系,与 XML 文档中元素和属性之间的关系十分相似,使用 XML 来描述图形用户界面是十分自然的想法。而使用 XML 来描述用户界面最直接的好处就是让用户界面更具个性化。
本章我着重谈一下使用 XML 有利于软件产品的客户化界面定制,让用户界面更具更具个性化。
现在国内许多行业的 IT 应用开发商之间竞争异常非常激烈。激烈竞争的直接结果就是每一个项目的利润空间大大缩水了。如何确保在客户的项目预算范围内提高利润空间呢?很自然的一个思路就是变项目开发为产品研发。一旦产品化以后,成功地在多个客户实施,则每个项目的成本将大大降低。
然而,每个客户的具体需求又是千差万别的。例如,综合医院的信息系统和专科医院的信息系统差别非常大。这些需求的差别包括许多方面,例如数据模型和流程等等,但往往最大的一个差异就是用户界面。几乎每一个客户都有自己企业所喜好的界面风格。
我们非常欣喜地看到国内一些有实力的开发商已经在产品化和客户定制化这两个方面找到一个行之有效的方法,那就是采用 XML 来描述用户界面,而这些 XML 则采用 DB2 V9 进行高效的管理。如下图所示,用户登录之后,“XML-GUI个性化加载模块” 从 DB2 V9 中获得用户的个性化界面定制信息(XML),接着展现给用户一个个性化的界面。这样一来,同一个产品在不同的企业就可以有不同的展现界面;不仅如此,企业中不同角色、不同等级的用户也将拥有不同的界面。而且,最终用户还能够对某些菜单或样式进行自行定制。
DB2 V9 在对 XML 的存储、管理和处理效率上取得革命性突破。本文列举了可以用 DB2 V9 来为企业应用做哪些事情:
- 信息交换和共享;
- 作为一种新的数据模型:复杂的信息、灵活多变的信息、层次型特征明显的信息、以及个体差异带来的稀疏数据;
- 文档管理和知识管理(利用 XML 的细粒度检索能力和强大的关联能力);
- 构建更加灵活的表单应用;
- Web 2.0 应用(例如 RSS)
- 让用户界面更具个性化
本文的真正目的在于抛砖引玉,引发读者对 DB2 pureXML 的价值进行不断探索。假如您对 DB2 pureXML 的企业应用价值有新的发现,随时欢迎您与笔者进行交流。
关于作者
钱梽杨,多年从事 IBM WebSphere 和 DB2 的售前工作经验。涉足 IBM 软件家族的多个领域,对国内企事业单位的数据库应用、信息整合服务、知识管理、工作流以及 SOA 架构等有许多实际案例经验。自从 DB2 V9 发布以来,担当了国内多个案例的售前任务和合作伙伴技术支持任务,对 DB2 pureXML 技术有比较全面的理解。