• 热门标签

当前位置: 主页 > 航空资料 > 计算机 >

时间:2010-08-09 13:05来源:蓝天飞行翻译 作者:admin
曝光台 注意防骗 网曝天猫店富美金盛家居专营店坑蒙拐骗欺诈消费者

息中包含许多相关信息是因为:它使得接收者能够更方便地从消息中提取信息,而不必使用单
独的A P I;更重要的是,如果消息是为了审计等用途而进行的归档,将所有内容放在一起便于存
储。
2. 用于永久性数据的X M L
消息的设计主要是由动态信息模型决定的。相反,当将X M L用于永久性数据时,静态模型
是至关重要的。
(1) 一个文档有多大
在设计过程中,最困难的部分莫过于决定数据的粒度:一个文档中应该包括多少内容?
对于有些应用来说,一个包含几千兆字节的X M L文档是比较适宜的,而有些应用宁愿使用
小文档。X M L不太适于直接访问;就当前技术而言,如果要访问这样一个大文档的任何部分,
都必须解析整个文档,这可能要耗费几个小时。
从另一个极端看,拥有许许多多小文档也不太理想,因为它不可能利用X M L丰富的结构来
表示信息模型中的关系。
有时,当业务对象非常大而且内部结构很复杂时,自然会将每个对象映射为一个X M L文档。
例如,在人力资源系统中,自然要为每个职员的记录使用一个X M L文档,或者在病历系统中,
每个病历都对应一个X M L文档。
当你使用X M L保存永久性数据时,寻找信息的过程通常可以分为以下两个步骤:首先找到
正确的文档,然后找到你所感兴趣的内容。这两步用到的工具和技术截然不同,因此决定在每
个文档中放置哪些信息是相当关键的。
要定位正确的文档,主要有以下可选的四种方法:
• 利用操作系统文件存储中的目录结构通过名称定位文档。文档的文件名可能与系统中使用
的对象标识符相关,人事文件可能以职员的人事编号命名。
• 利用文档之间的相互索引,这种方法类似于传统的We b站点,文档总是通过链接找到的,
不过在此通常采用更加结构化的文档组织方式。举例来说,如果有一组足球比赛报道,每
个报道都是由一个X M L文档构成的,可以建立另一个文档作为它们的索引,列出所有比赛
第4章数据建模与XML使用91 下载
—日期、地点和参赛的球队。当然,不必手工维护这个索引。可以将它设置为自动更新:
提交新的比赛报道后,系统自动对它进行分析,并将相关信息添加到索引文档中。X S LT
非常适于编写这类应用。
• 利用关系数据库索引文档。还可以选择将X M L文档保存为文件形式,并通过数据库引用,
或者将X M L文档也存储在数据库中。越来越多的数据库明确表示支持该功能,如果必要的
话,还可以使用“ b l o b”(Binary Large Object,二进制大对象)字段。如果利用关系数据
库索引X M L文档,就可以通过任意S Q L语句识别它们,但是只能使用那些数据库直接包含
的特性。要深入了解如何使用X M L和关系数据库,参见第1 0章。
• 利用自由原文搜索引擎索引文档。越来越多的搜索引擎提供对X M L的支持。通过这种方法,
可以根据在文档的任何位置出现的关键字搜索文档。虽然自由原文搜索通常被定位为支持
用户对非结构化数据的查询,但是由于X M L文档中的标记使得文档具有更强的结构性,因
此将使这种查询方法变得更加有效。对于数据更新量不太大的应用来说,这种方法比使用
关系数据库查询更加高效。
另外,你还可以使用所谓的“ X M L服务器”。X M L服务器通常不以未解析的纯文本形式保
存X M L数据,而是将它们存为D O M形式—即:它将文档对象模型中的节点保存为对象数据库
中的对象。这样,不必首先从磁盘读取整个文档,然后再解析它,而可以直接通过D O M接口访
问数据。这种方法的主要优点体现在它使得数据访问变得更加平滑,避免使用一个A P I定位正确
的文档,使用另一个A P I在文档中搜索信息。然而, X M L服务器将每个D O M节点保存为一个独
立的数据库对象,这使得它的性能受到一定影响,特别是当加载或更新大型数据库时。另外,
由于标准的D O M接口只能通过遍历来寻找数据,因此具体的查询方法是每个厂家所特有的。
另一种能够降低解析大型文档的代价的方法是将文档缓存到内存中。例如,对于M i c r o s o f t
的A S P页面或Java Server Pages,你可以在应用程序范围内保存数据,这意味着当We b服务器启
动时,将数据读入内存,当服务器关闭时,从内存读出数据。对于几千兆字节的文档,这种方
法的代价过于昂贵(就大多数D O M实现而言,源X M L文件中每字节的内容大约会占用1 0个字节
的内存),但是对于几兆字节的数据来说,这种方法还是切实可行的—添置内存或许比购买
X M L服务器软件更便宜。
凭经验而论,我习惯于根据一个称为“整屏”的概念决定合适的文档大小。从理论上讲,
这种方法是不能令人满意的,毕竟X M L应该是独立于表示的,以每次要显示给用户的信息量作
为设计决策的主要依据似乎不太恰当,然而实际上,这是一种很好的测试方法。如果存储的
X M L文档所包含的数据量超过了一个用户愿意在屏幕上看到的内容,最终你所解析的大量数据
可能永远得不到用户的青睐;相反,如果你需要访问几百个存储的X M L文档才能够形成一屏信
息,在访问每个用户页面时都会产生大量处理开销。
但是,如果用户希望每次看到不同的一小部分数据呢?可以将整个D O M文档作为应用程序
的一个对象保存在服务器的内存中,根据用户请求对D O M文档进行过滤,产生能够更精确地满
足用户请求的较小的X M L文档。
我们将在第1 0章详细介绍X M L和数据库。
(2) 需要多少种文档类型
92使用XML 高级编程
下载
令人惊讶的是,这个问题并不像看上去那么简单,因为X M L并没有严格定义文档类型的概
念。特别是有两个独立的概念,它们并不一定是一一对应的: D T D和顶级元素类型。
但是从概念角度讲,模型中可以包含几种不同的文档类型,在X M L中可以通过以下几种方
式表示它们:
• 每种文档类型对应于一个不同的D T D。如果不同的文档类型中有部分内容是公共的,可以
 
中国航空网 www.aero.cn
航空翻译 www.aviation.cn
本文链接地址:XML高级编程上(39)