XML数据库中几个容易混淆的概念

2016-02-19 21:15 6 1 收藏

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享XML数据库中几个容易混淆的概念吧。

【 tulaoshi.com - Web开发 】

  当开发人员谈及XML数据库时,他们往往指的是两个概念:存储XML数据的数据库,利用XML数据库的DBMS。绝大多数主要的DBMS产品允许你无需改变现有的数据库就可以集成XML数据到程序中。现在让我们讨论一下XML数据库并探讨其特性。

  原始的XML数据库

  一个原始的XML数据库(NXD)可以是很简单,也可以是很复杂。我这样定义一个数据库的概念:永久稳定数据的集合。在这样的定义下,一个NXD能在逻辑上存储一个XML文档。当XML:DB initiative对一个NXD还有更多的要求时,我想以上的定义也可以满足。

  以下的代码行可以用作于一个NXD:

  〈?xml version=”1.0”?〉
  〈diet〉
  〈meal mealName=”breakfast”〉
  〈item itemName=“toast” unit=”slice” quantity=“2” /〉
  〈item itemName=“bacon” unit=”strip” quantity=“2” /〉
  〈/meal〉
  〈/diet〉

  很显然,数据的集合以XML格式存储。如果它被存放在一个flat文件,它也会满足我们对NXD的定义:永久稳定数据的集合。

  一个NXD使用相同的方式来存储XML文档(比如:flat文件,关系数据库或级别数据库,对象数据库)。

  Flat文件

  一个简单的flat文件是一个最简单的XML数据库模型。作为一种“变种”,你可以存储很多XML文档在一个目录层次。为了扩展前面的范例,看看以下的模型:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  Diets
  DietsAtkins
  Day1.xml
  Day2.xml
  Day3.xml
  Day4.xml
  Diets3DayDiet
  Day1.xml
  Day2.xml
  Day3.xml

  Diets目录包含了子目录,并且每一子目录很多XML的flat文件。

  关系数据库

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

  关系数据库中的XML数据库可以分为三种模型:coarse-grained(粗糙纹理型), medium-grained(中等级别纹理型),或 fine-grained(优良纹理型)。

  coarse-grained(粗糙纹理型)模型在逻辑上与flat文件模型有些不同。你可以使用一个关系数据库来存放每一个XML文档。例如,以下的代码可以存放一个XML文档:

  Create table diets
  ( dietName varchar2(30),
   xmlDocument varchar2(32000)
  )

  fine-grained(优良纹理型)模型将XML文档的每一成分映射到关系数据库中。为了能够将flat模型转移到关系数据库,你必须使用两种改变方式。对以上的范例,你不能再使用子目录名来代表diet的名称,你也不能再使用文件的名称来传递diet的日期。表A显示了diet的XML文档的文件类型定义(DTD);表B显示了将DTD映射到关系表的数据定义语言(DDL)。除此之外,表C还包括了相应的XML语法。

  medium-grained(中等级别纹理型)模型介于coarse-grained(粗糙纹理)模型与 fine-grained(优良纹理)模型之间。使用这一模型,你可以将信息存储在meals 表的xml_items列中。

  对象数据库

  你也可以通过使用一个对象数据库来执行NXD。有些对象数据库是基于文档对象模型(DOM),这允许XML与数据库有紧密的结合。例如,一旦你提供一个食物方面的DTD,你可以开始保存这些食物,而不需要额外的配置。

  数据库管理系统

  对于DBMS,你可以有多种选择。你可以通过使用开放程序如eXist或Ozone来建立自己的DBMS,或者购买商业产品如Tamino XML Server。

  绝大多数关系数据库卖主都使他们的数据库能够使用XML,至少的,XML数据库(XEDBs)能够返回XML文档查询的结果。另外很多也可以保存XML数据。例如,Oracle 提供了一个XML剖析器,一个Xpath引擎,一个XSLT处理器,一个XMLSQL工具,以及使用XML的方法。

  所以,使用关系数据库存储的NXD和存储XML数据的XEDB有什么区别呢?一个NXD是基于XML文档概念而建立,而XEDB与其它没有过多的关联。而且,很多规范适用于NXD,而DBMS只适用标准的查询和存储数据的XML文档,比如Xpath。

  XML数据库不是新概念

  XML数据库在逻辑观点上不是新概念,虽然在逻辑执行上是新的。如果你想要执行一个XML数据库,你可以使用NXD,XEDB,或者是二者的结合。然而,如果你所在的公司对现有的数据库已经有一定的投资,你所做的第一个调查就是核实你的DMBS卖主是否提供使用XML的工具。无论你使用的哪一种XML数据库方式,你都要非常理解每一种数据库的特性,这才是最重要的。

来源:http://www.tulaoshi.com/n/20160219/1625692.html

延伸阅读
标签: Delphi
  一、Owner和Parent的区别: Parent属性是指构件的包容器,构件只能在此范围内显示和移动。举例子如下: (1)在Form1的窗体上,放一个Panel1,并将Panel1拉大, (2)在Panel1上放一Button1; (3)在Form1上放一Button2。 现在如果移动Panel1,则Button1随着Panel1移动,这是因为Button1的Parent是Panel1。现...
笔者认为,在创建索引时要做到三个适当,即在适当的表上、适当的列上创建适当数量的索引。虽然这可以通过一句话来概括优化的索引的基本准则,但是要做到这一点的话,需要数据库管理员做出很大的努力。具体的来说,要做到这个三个适当有如下几个要求。 一、 根据表的大小来创建索引。 虽然给表创建索引,可以提高查询的效率。但是数...
标签: Web开发
第一个示例方法: 1 SqlConnection conn = new SqlConnection(); 2 conn.ConnectionString = "Server=127.0.0.1;User ID=sa;Password=fdahgdrethj31313210212121; Database=northwind;Persist Security Info=True"; 3 conn.Open(); 4 SqlDataAdapter da = new SqlDataAdapter("select * from 表", conn); 5 SqlCommandBuilder th...
D:\mysql-5.1.26-rc-win32\binmysql -X -utest test -e "select * from t1;" | tee f:\out.xml 代码如下: ?xml version="1.0"? resultset statement="select * from t1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" row field name="id"1/field /row row field name="id"2/field /row /resultset -X 指定为xml格式...
通常有两类形式:模板驱动和模式驱动。1 模板驱动在以模板驱动的映射中,没有预先定义文档结构和数据库结构之间的映射关系,而是使用将命令语句内嵌入模板的方法,让数据传输中间件来处理该模板。例如,下面的模板,在 元素中内嵌了SELECT语句: The following flights have available seats: SELECT Airline, FltNumber, Depart, Arrive ...

经验教程

783

收藏

46
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部