当前位置:首页 » 编程博文
开发技术指南» 文章正文
    引言: copyright 1999-2003 by Ronald
 

 

    摘要: 在说明问题之前,首先要介绍一下tomcat的工作原理。大家都知道,jsp可以说是servlet的一种简单写法,它本质还是一个servlet,只是将一些servlet对象设为默认对象,并简化了html的输出方式,在运行时,相应请求的机制和servlet基本是一个道理。因此,当第一次请求一个jsp页面的时候,tomcat(或其他容器)都要首先将jsp转化为servlet class。这其中有两个步骤......
    摘要:(接续上一节) 确定你的客户第三个问题是:“谁是我的客户?”在你的事业中,为了生存和壮大,你必须要满足谁的需要?当然,你的第一个客户就是你的老板,就是签发你工资支票的那个人。你工作的根本职责是保证满足他或她的根本需要。你知道这些需要是什么吗? 你可以把客户定义为依靠你获得成功的任何人,或你所赖以获得成功的任何人。在这个定义之下,你的同事和员工也是你的客户。周围你所帮助的......


XML与数据库

copyright 1999-2003 by ronald bourret

原作最后更新: 2003年11月 【程序编程相关:Tomcat4/5连接池的设置及简单应用

【推荐阅读:.NET 框架中的 XML:在 .NET

原文: www.rpbourret.com 【扩展信息:非常小的shell: 指定行号,插入文本

翻译: onestab 2004.01.23(修订)

俄语版 (october, 2000)

法语版 (november, 2003) 法语版的另一个地址:patrick peccatte

目 录

1.0 简介 2.0 xml是数据库吗? 3.0 为什么用数据库? 4.0 数据与文件 4.1 以数据为中心的文档 4.2 以文档为中心的文档 4.3 数据,文档与数据库 5.0 数据的存取 5.1 将文档schema映射到数据库schema 5.1.1 基于表格的映射 5.1.2 关系 - 对象映射 5.2 查询语言 5.2.1 基于模板的查询语言 5.2.2 基于sql的查询语言 5.2.3 xml query 语言 5.3 在原生xml 数据库中存储数据 5.4 数据类型, null 值, 字符集, 及其他 5.4.1 数据类型 5.4.2 二进制数据 5.4.3 null 数据 5.4.4 字符集 5.4.5 处理指令与注释 5.4.6 标记的存储 5.5 从关系[数据库]schema产生dtd以及相反 6.0 文件的存取 6.1 在文件系统中存储文件 6.2 在blob中存储文件 6.3 原生xml数据库 6.3.1 什么是原生xml数据库? 6.3.2 原生xml数据库的架构 6.3.2.1 基于文本的原生xml数据库 6.3.2.2 基于模型的原生xml数据库 6.3.3 原生xml数据库的特性 6.3.3.1 文件集 6.3.3.2 查询语言 6.3.3.3 更新与删除 6.3.3.4 事务,锁定,以及并发 6.3.3.5 应用程序接口(apis) 6.3.3.6 双程车票 6.3.3.7 外部数据 6.3.3.8 索引 6.3.3.9 外部实体存储 6.3.4 规范化,引用完整性与可伸缩性 6.3.4.1 规范化 6.3.4.2 引用完整性 6.3.4.3 可伸缩性 6.4 可持久化 dom (pdom) 6.5 内容管理系统 cms 7.0 xml 数据库产品 8.0 相关链接 9.0 评论与反馈

1.0 简介 (introduction)

本文对怎样使用xml与数据库进行了总体回顾,描述了以数据为中心与以文档文中心的文档之间的差异如何影响其在数据库中的应用,将xml与关系型数据库的一起使用的常见用法,以及什么是原生xml数据库与何时使用它.

2.0 xml是数据库吗?(is xml a database?)

在开始讨论xml与数据库之前,我们先回答许多人都遇到过的问题:“xml是数据库吗?”

如果仅按数据库这个术语的本质来看,xml文件就是数据库,它是数据的集合.在许多方面看起来它与其他文件没什么区别 -- 无论如何,每个文件都含有某种类型的数据.作为一种“数据库”格式,xml有一些优势:例如,它是自描述的(所用的标记描述了数据的结构与类型,尽管缺乏语义),可交换的(portable)(unicode),能够以树型或图形结构描述数据.同样它也有缺点,例如,它显得有些繁琐,由于要对它进行解析与文本转换,所以数据访问速度较慢.

一个更有用的问题就是在较为宽松的意义上,xml及其周边技术是否可以算作“数据库” -- 数据库管理系统(dbms).答案是“在某种程度上是(sort of)”.从正面来说,xml提供了许多数据库所具备的东西:存储(xml文档), 模式(dtd, xml schema,relax ng 等等), 查询语言(xquery, xpath, xql, xml-ql, quilt等等),编程接口(sax, dom,jdom)等等.从反面来说,它缺少一些作为实用的数据库所应具备的特性:高效的存储,索引,安全,事务与数据一致性,多用户访问,触发器,在查询多个文件等等.

因此,尽管在数据量小.用户少与性能要求不太高的环境下,可以将xml文档用作数据库,但是却不适用于用户量大.数据集成度高以及性能要求高的作业环境.

xml适合于用作所谓“数据库”的一个好例子就是 .ini文件 -- 它包含应用程序的配置信息.与其写一个处理以逗号分隔(comma-delimited)的文件的解析器,开发一种小型的xml语言并写一个解释它的 sax程序要容易的多.此外,xml允许使用嵌套的实体,而逗号分隔的文件(comma-delimited files)很难做到这点.然而,说它就是数据库还很勉强,因为它是线性读写的,而且仅用在程序开始与结束时.

比较适合于xml数据库的一些复杂的数据集就是个人通讯录(名字,电话号码,地址等),或用于描述浏览器书签以及用napster偷来的mp3.然而,由于dbase与access之类的数据库物美价廉,即使在这种情况下似乎也没有多少理由把xml文件作为数据库使用.xml的唯一真正好处就是数据的可交换性(portable),由于有越来越多的工具可以用来对数据库进行xml序列化(serializing),这一点好处似乎也要打些折扣.

3.0 为什么要用数据库?(why use a database?)

当你开始考虑xml与数据库的时候,可能首先会问这个问题:为什么你会先想到使用数据库?你是否有可用的历史数据?是否想找个地方存储web页面? 是否在电子商务中使用数据库,而xml在其中作为数据传输载体? 对这些问题的回答将会极大地影响你对数据库与中间件(如果有的话)的选择,以及如何使用所选的数据库.

例如,你有个电子商务的应用,将xml用作数据交换.那么你的数据最好有个非常规则的结构并且可供非xml程序使用.还有,xml文档所用的某些东西如实体与编码对你来说并不重要 --总之,你感兴趣的是数据,而不是它在xml内如何存储.在这种情况下,你大概需要一个关系型数据库以及在xml与数据库之间转换数据的软件.如果你的应用程序是面向对象的,你甚至还需要一个在数据库或xml中存取这些对象的系统.

另一方面,假如你要从一些结构松散的xml文档建立一个网站.你不但要管理这个网站,还要提供站点内容搜索.你的文档看起来结构比较松散,其中的实体的使用对你来说可能更重要,因为它们是文档结构的重要部分.这种情况下,你也许需要一个原生xml数据库(native xml database)或内容管理系统(content management system).这使你可以保持文档的物理结构,支持文件级的事务处理,以及使用xml query语言进行查询.

4.0 数据与文档 (data versus documents)

在选择数据库时最重要因素大概就是你想在数据库存储的究竟是数据还是文档.例如,是简单地把xml当作数据库与(可能不支持xml)应用程序之间的数据转换工具,还是用于集成,就像xhtml与docbook中的那样?通常这是个偏好,但是却非常重要,因为所有以数据为中心的(data-centric)文档有着许多相同的特性,所有以文档为中心的(document-centric)也有许多相同的特性.这会影响到xml在数据库中如何存储.下面两部分中我们就来考察这些特性.

(历史背景:我在xml-dev邮件列表上第一次听说data-centric与document-centric这些术语,不知道是谁发明的,但是我在1997的消息中发现有使用document-centric的,从1998年以后这两个术语都有使用.)

4.1 以数据为中心的文档 (data-centric documents)

以数据为中心的文档就是将xml用作数据的传输载体,只提供给机器消费的文档,在此xml通常并不是绝对必要的.也就是说,对于应用程序或数据库而言,(在某个时间段内)数据是否以xml文档的形式存储并不重要.以数据为中心的文档的例子有销售订单.航班时刻表.科研数据及股市汇率.

以数据为中心的文档的特点是结构相当规整,数据粒度精细(fine-grained data)(即最小的独立数据单位只存在于pcdata元素或属性这一级别),很少或没有混合内容.除非在对文档进行验证的时候,同级元素或pcdata的出现次序一般来说并不重要.

以数据为中心的文档中的这类数据可以来自数据库(此时要输入给xml)或在数据库之外(此时要将其存入数据库).前者的一个例子就是关系数据库现存的大量数据;而从测量系统采集并转化为xml的科研数据就是后者的例子.

例如,下面的销售订单就是以数据为中心的:


...   下一页
 ·asp开发规范    »显示摘要«
    摘要:asp开发规范 ——写这个东西请多多指教,以后开发时好少吃点苦头。</p><p>一、单页编写规范: 切记页面要分模块来写: 第一模块:接收参数。[有可能从不同页面提交到同一个页面;也可能出现两个表单项以哪个优先的处理。 第二模块:定义全局变量。 第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一。)。——到此asp......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE