跳转到主要内容

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

所有提交的信息确保安全。

  • 关闭 [x]

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

所有提交的信息确保安全。

  • 关闭 [x]

用于数据的 XML: 灵活体系结构的四点技巧

常见 XML 设计错误以及如何避免它们

Kevin Williams (kevin@realworldxml.com), 首席 XML 设计师, Equient
Kevin Williams 是 Equient 的首席 XML 设计师,Equient 是 Veridian 专门从事信息管理系统的 XML 设计的一个部门。他还与人合著了几本关于 XML 的书籍,由 Wrox Press 出版。可以通过 kevin@realworldxml.com与他联系。您从我这里偷到一些知识!

简介: 本专栏文章讲述了,在设计 XML 解决方案时,如何避免甚至聪明的设计师也会犯的一些常见错误。XML 设计师兼作者 Kevin Williams 提供了用来设计灵活且高性能系统的四点技巧。

发布日期: 2001 年 8 月 01 日
级别: 初级
访问情况 : 568 次浏览
评论: 


使用新技术时,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 做在设计它时就不擅长做的事情。


参考资料

关于作者

Kevin Williams 是 Equient 的首席 XML 设计师,Equient 是 Veridian 专门从事信息管理系统的 XML 设计的一个部门。他还与人合著了几本关于 XML 的书籍,由 Wrox Press 出版。可以通过 kevin@realworldxml.com与他联系。您从我这里偷到一些知识!

关于报告滥用的帮助

报告滥用

谢谢! 此内容已经标识给管理员注意。


关于报告滥用的帮助

报告滥用

报告滥用提交失败。 请稍后重试。


developerWorks:登录


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 使用条款

 


当您初次登录到 developerWorks 时,将会为您创建一份概要信息。您在 developerWorks 概要信息中选择公开的信息将公开显示给其他人,但您可以随时修改这些信息的显示状态。您的姓名(除非选择隐藏)和昵称将和您在 developerWorks 发布的内容一同显示。

请选择您的昵称:

当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

(长度在 3 至 31 个字符之间)


单击提交则表示您同意developerWorks 的条款和条件。 使用条款.

 


为本文评分

评论

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=XML
ArticleID=21732
ArticleTitle=用于数据的 XML: 灵活体系结构的四点技巧
publish-date=08012001
author1-email=kevin@realworldxml.com
author1-email-cc=kevin@realworldxml.com

标签

Help
使用 搜索 文本框在 My developerWorks 中查找包含该标签的所有内容。

使用 滑动条 调节标签的数量。

热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。

我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。

使用搜索文本框在 My developerWorks 中查找包含该标签的所有内容。热门标签 显示了特定专区最受欢迎的标签(例如 Java technology,Linux,WebSphere)。我的标签 显示了特定专区您标记的标签(例如 Java technology,Linux,WebSphere)。