级别: 初级 Kevin Williams (kevin@realworldxml.com), 首席 XML 设计师, Equient
2001 年 8 月 01 日 本专栏文章讲述了,在设计 XML 解决方案时,如何避免甚至聪明的设计师也会犯的一些常见错误。XML 设计师兼作者 Kevin Williams 提供了用来设计灵活且高性能系统的四点技巧。
使用新技术时,XML 碰到了再常见不过的问题:我称它为“专门用语症”。正如在那之前的 C++ 语言和客户机/服务器体系结构,XML 在执行级别上 ―
非技术执行级别 ― 有可见性。这导致公司备忘录坚持,为了公司的利益,“整个系统”需要以某种方式“转换”成 XML。然而,就象 C++ 和客户机/服务器体系结构,XML 不是它本身内和它本身的答案;它只是您可以用来帮助构建技术解决方案的一种工具。通过与其它可能的体系结构选择相比较来了解 XML 的优缺点,您可以最小化或防止在稍后开发(或维护)周期中主要的头疼问题。本专栏文章向您推荐了以下四种常规设计方针,使您在系统的数据体系结构中深思熟虑地使用 XML。
技巧 1:如果不需要它,则扔掉它
许多设计师最初不了解 XML 的一件事情是 XML 仅仅是表示信息的一种方式。XML 并文档没有什么魔力:它只是显示信息的各个片段互相之间是如何联系的。当您从外部来源 ― 那里有您从来没有使用过的信息(例如内部引用号,这些引用号来自与您的系统无关的来源)― 收到文档时,抛弃它们!用 XSLT 样式表或一些其它机制来过滤出您希望保留信息并删除不需要的信息。记住,一次性过滤数据(当数据进入您的系统时)总是比您每次需要访问它要有效得多。同样,如果您收到在一个庞大的文档中大约七百万个客户的信息,而对您来讲,将这个大文档拆分成每个客户一个文档的这种独立的文档形式要更有用。总之,如果您从大型机系统收到一个固定宽度的文件,您几乎肯定不会以那种形式来保存,因为它不是特别有用。不要害怕分割、重新组织或否则修改 XML 文档来满足您的需要。
技巧 2:不要将 XML 用于搜索
XML 文档(按它们本身)不适合被搜索。由于它们只是纯文本,任何 XML 原始的搜索机制(如 XPath)必须对整个文档(或多个文档)进行语法分析以找到您感兴趣的部分(或多个部分)。如果试图搜索有七百万客户信息的单一文档,其效率会非常低。如果将文档分成较小的文档 ― 每个客户一个文档 ― 问题依然发生:为了找到您正在查找的特殊客户,需要对每个文档进行语法分析直到找到适当的那个为止。对于搜索 XML 文档,唯一好的解决方案是引入某种索引机制 ― 或者是关系数据库索引,或者是某种 XML 原始的索引工具 ― 这会极大地减少定位您感兴趣的文档(或文档片段)所必须处理的信息。当您有面向数据的信息(与面向文本的信息,如书籍手稿,相反),关系数据库非常适合这项任务,并且它还提供了其它好处,您会在下一篇技巧文章中看到。
技巧 3:不要将 XML 用于汇总
汇总在 XML 文档中存储的信息也是非常低效率的。XPath 提供的原始语言只包含聚集功能性的最少部分,并且甚至如果您想汇总的信息不只在一个文档中找到,这也不是容易可使用的。此外,汇总会碰到与搜索一样的问题:必须对每个文档进行语法分析以发现和抽取出要总结的信息。再次,我建议对信息建立索引,因此减少要详审的信息量,以发现需要处理的片段。换句话说,当详细的 XML 文档引入系统时,您可以生成包含汇总信息的附加文档。然而,这种方式不适合于做临时汇总,它可能造成一些管理上的混乱。对于汇总任务的最佳灵活性,关系数据库确实是唯一的好选择;大多数现成的 XML 索引器没有使索引本身直接接触程序性处理。
技巧 4:用 XML 来驱动绘制
XML 一个真正优点在于它具有(经过 XSLT)将其内容绘制成各种其它形式的能力。如果您的系统需要支持各种方式的数据消费 ― 从 HTML 界面(譬如,台式机的 Web 浏览器),从使用 WML 的便携式设备,或者到业界一直同意的数据传输标准,则这是至关重要的。关系数据也可以驱动绘制,但它不是最擅长该作业。每种可能的绘制需要有效的编码时间。此外,如果接收到请求要求来绘制以不可分割的 XML 文档(譬如,单一客户)存储的一段信息,则不需要接触索引系统就可以做到这一点,这释放了该系统的处理周期以便在必要时支持数据的搜索和汇总。
结束语
本专栏文章查看了 XML 适合于总体系统体系结构的某些方式,以及将 XML 放至哪里才有(或没有)意义。您已经看到在大多数情况下某些形式的索引机制 ― 理想的关系数据库 ― 应该是您总体体系结构的一部分。总之,应该将 XML 用到它擅长的地方,譬如,驱动一个绘制系统。
当您在构造(或重构)系统时,记住 XML 只是您开发工具箱中的另一种工具。您不能用螺丝刀来锤打钉子。不要尝试让 XML 做在设计它时就不擅长做的事情。
参考资料
- 您可以参阅本文在 developerWorks 全球站点上的
英文原文.
- 对于 XML 设计师和开发人员,您能够想起其它常见缺陷吗?对 Kevin 的设计技巧之一,您持异议吗?请选择
讨论图标,与作者和同伴读者共享您的观点。
- 关于
什么时候不使用 XML,Terence Parr(jGuru 的共同发起人)有自己的想法。
- 查看 Kevin Williams 以前的专栏和文章:
- IBM 的
DB2 Extender 页面给出了 DB2 如何与 XML 一起工作的基本概述,并带有到关于 XML 查询的详细白皮书(可查看的 PDF 文件)的链接和到
DB2 Extender 下载的链接。
- 需要关于使用 XML 以及 IBM DB2 和 WebSphere Application Server 的一些详细资料吗?IBM 红皮书
Integrating XML with DB2 XML Extender and DB2 Text Extender向您显示了在商业应用程序中如何有效地使用 XML 技术,以及解释了如何将 XML 与 DB2 通用数据库、DB2 XML Extender 和 Text Extender 以及 WebSphere Application Server 集成在一起。这本书将帮助开发人员设置环境以及创建和处理可以使用 SQL 存储和恢复的 XML 文档。
关于作者  | |  | Kevin Williams 是 Equient 的首席 XML 设计师,Equient 是 Veridian 专门从事信息管理系统的 XML 设计的一个部门。他还与人合著了几本关于 XML 的书籍,由 Wrox Press 出版。可以通过
kevin@realworldxml.com与他联系。您从我这里偷到一些知识!
|
对本文的评价
|