论文部分内容阅读
摘要:如何实现数据库的集成、共享和利用,提高了信息系统的整体效能,以及解决了XML和数据库双向传输的瓶颈,成为信息支持系统的关键问题之一。该文在分析可扩展标记语言XML特点的基础上,对XML与数据库之间基于DOM模型的映射方式进行了探讨,并给出了以XML文件作为中间文件的异构数据库集成,以及XML文档和数据库之间数据传输的实现方法。
关键词:XML;数据库集成;文档对象模型;XML查询
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)05-11192-01
1 引言
各种分布的信息源为负责通过集成和聚集这些源的数据而创建和维护应用程序的架构师们带来了许多挑战。过去,开发人员必须用每种不同数据源可用的API 编写自定义的代码。这样既增加了成本又不稳定,改变时需要修改自定义代码。 所以构建一个能满足当前信息互用和处理需求的企业信息集成平台,成为当前管理信息技术的研究热点。数据库管理系统作为一个信息存储和处理加工的工具,而且数据库软件品种繁多,因此,如何实现异构数据库的信息集成成为信息支持系统的关键问题之一。
所有应用程序架构师和数据专家面临的挑战是,在确保为集成、聚集和转换数据所做的工作的可复用性的同时,容易地向应用程序传递数据。传统的解决方法是,企业采用一个中间文件(文本文件等)作为交换媒介,将企业内部不同的数据库应用系统纳入到一个系统下,实现各数据库系统间数据信息的交换、共享和集成。但是这种中间文件只能在该企业内部交换数据,最大的缺点是只能表示简单的数据信息,而开发新的应用程序还必须兼容这种交换文件,不具有通用性。
XML(eXtended Markup Language)技术的出现为开发人员和数据库专家提供了一个新的途径。XML是一种具有通用性、良好操作性的数据交换技术,能使信息系统具有异构相容,能保证数据模块之间及时有效的传递、交换、共享和集成各种数据信息。
2 XML和DOM4J简介
XML是由W3C在1998年9月设计的一个SGML的简化版本。XML是一种简单而有效的通用语言规范,属于无标记语言,具有平台和开发语言的独立性,实现了数据和表达形式的分离。
首先,XML是纯文本的、简单易学,几乎所有的编辑器都能直接编辑修改,适合于在多个平台的环境中进行数据交换。
此外,XML具有的自定义性和可扩展性,使它足以表示各种类型的数据,而且与其它数据传递标准不同的是,XML并没有定义数据文件中数据出现的具体规范,而只是在数据中附加标记来表达数据的逻辑结构和含义,这使它成为一种应用程序能自动理解的规范。XML用元素及其属性表达对象的内部结构和对象间的链接,这就使XML文档的内容是一种树状结构,结构上数据库较为相似,它为在数据库之间交换信息提供了一种公共格式。
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。DOM4J使用起来非常简单。只要你了解基本的XML-DOM模型,就能使用。在国内比较流行的是使用JDOM作为解析器,两者各擅其长,但DOM4J最大的特色是使用大量的接口,这也是它被认为比JDOM灵活的主要原因。
基于XML的信息系统信息源集成,既保持了各数据库之间的独立性,又提高了数据保存和分析处理的能力,是信息集成技术研究的热点。本文利用XML规范和Java技术的平台无关性,给出了基于DOM4J和XML的数据集成系统的框架与数据库信息集成的技术实现。
3 数据库集成框架
数据库集成可以把各种数据库文件细节屏蔽起来,用户通过XML文档即可以实现对数据的查询、处理加工等操作,并把处理后的结果通过XML文档返回到指定数据库中。
数据库集成工作原理如图1所示。应用程序向数据集成组件发出一个Xquery查询,数据库集成组件通过数据库访问技术(JDBC、ODBC、ADO等)将数据库文件导出,采用文档对象模型DOM(Document Object Model)技术,对纪录集进行访问,并封装成XML文档。这样,应用程序通过XQuery对XML文档查询,获得所需的查询结果。
对于查询结果进行处理加工,然后写回到目的数据库中,采用XML+DOM4J解析方法,用解析器把XML文档(查询结果)转换成一棵DOM树,如图2所示。这样,信息的搜索变成了对信息树的遍历。当数据库接收到XML文档后,它以信息树的结构形式遍历XML文档,将文档中的内容更新到数据库中。
4 技术实现
使用XML文档作为中间文件实现异构数据库间信息转换的方法,可以归结为以下三个步骤:(1)将源数据库映射为XML文档;(2)对XML文档进行查询得到所要的结果;(3)将结果映射到目的数据库中。下面就结合Java和DOM4J技术给出实现的主要过程。
(1)访问源数据库
通过目前多种软件开发平台提供的数据库互连接口和数据库访问技术,如JDBC、ODBC、ADO、DAO、COM等,可以轻松地访问数据库文件,并导出结果集(ResultSet)。
(2)将访问结果封装成XML文档
为了将得到的结果集封装成XML格式,本文利用DOM4J开源技术,基于Java平台来编码。
//创建XML文档对象doc
org.dom4j.DocumentFactory df = new org.dom4j.DocumentFactory();
Document doc = df.createDocument();
//创建根节点
Element root = doc.addElement(“StudentSet”);
//访问每条纪录
While(rs.next())
{ResultSetMetaData rsmd = rs.getMetaData();
Element parentEle = root.addElement(“Student”);
//访问该条纪录的所有字段
for (i=1;i<=rsmd.getColumnCount();i++)
{ Element childEle = parentEle.addElement(rsmd.getColumnLabel(i));
childEle.setText(rs.getObject(rsmd.getColumnLabel(i)));}}
//写文件
OutputFormat of = OutputFormat.createCompactFormat();
of.setEncoding("gb2312");
XMLWriter output = new XMLWriter(new java.io.FileOutputStream(new File("c:/ student.xml")),of);
output.write(doc);
output.close();
(3)XML文档查询
XML文档查询采用支持Xquery查询语言的XQuery软件(如DataDirect XQuery,Microsoft's XQuery Prototype和XML Query Engine等)。XQuery查询系统可以查询XML文档,然后返回XML结果。
图3 XML文档查询框架
(4)将结果写回到目的数据库中
对查询得到的结果进行处理加工,然后返回到指定的数据库中,必须对XML Result进行处理,读取每个元素的所有结点值,然后把提取的数据通过数据库访问技术写回到数据库中。下面是实现的部分代码。
treeWalk(doc.getRootElement());
//得到根结点,从根结点开始遍历
String query=”Insert Into ”;
public void treeWalk(Element element) {
for ( int i = 1, size = element.nodeCount(); i <=size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );}
else {
query=query+ rsmd.getTableName(i)+” Value(“+node.getNodeValue()+”,”);}
query=qurey+”)”;}
stmt.executeUpdate(query);} //数据库连接省略
5 结束语
本文通过XML实现异构数据库的集成、共享和利用,提高了信息系统的整体效能。解决了XML和数据库双向传输的瓶颈,在信息系统的集成中有着十分重要的现实意义。
参考文献:
[1]高春颖,陆捷,陈艳霞.基于XML的异构数据库信息集成技术研究[J].电脑知识与技术,2006,05.
[2]张晓东.等.Java数据库高级教程[M],清华大学出版社,2004.
[3]马淑娇,李晓,周俊林.异构数据库集成中的XML技术探讨[J].计算机应用研究,2004,(1):94-96,39-42.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。
关键词:XML;数据库集成;文档对象模型;XML查询
中图分类号:TP311文献标识码:A文章编号:1009-3044(2007)05-11192-01
1 引言
各种分布的信息源为负责通过集成和聚集这些源的数据而创建和维护应用程序的架构师们带来了许多挑战。过去,开发人员必须用每种不同数据源可用的API 编写自定义的代码。这样既增加了成本又不稳定,改变时需要修改自定义代码。 所以构建一个能满足当前信息互用和处理需求的企业信息集成平台,成为当前管理信息技术的研究热点。数据库管理系统作为一个信息存储和处理加工的工具,而且数据库软件品种繁多,因此,如何实现异构数据库的信息集成成为信息支持系统的关键问题之一。
所有应用程序架构师和数据专家面临的挑战是,在确保为集成、聚集和转换数据所做的工作的可复用性的同时,容易地向应用程序传递数据。传统的解决方法是,企业采用一个中间文件(文本文件等)作为交换媒介,将企业内部不同的数据库应用系统纳入到一个系统下,实现各数据库系统间数据信息的交换、共享和集成。但是这种中间文件只能在该企业内部交换数据,最大的缺点是只能表示简单的数据信息,而开发新的应用程序还必须兼容这种交换文件,不具有通用性。
XML(eXtended Markup Language)技术的出现为开发人员和数据库专家提供了一个新的途径。XML是一种具有通用性、良好操作性的数据交换技术,能使信息系统具有异构相容,能保证数据模块之间及时有效的传递、交换、共享和集成各种数据信息。
2 XML和DOM4J简介
XML是由W3C在1998年9月设计的一个SGML的简化版本。XML是一种简单而有效的通用语言规范,属于无标记语言,具有平台和开发语言的独立性,实现了数据和表达形式的分离。
首先,XML是纯文本的、简单易学,几乎所有的编辑器都能直接编辑修改,适合于在多个平台的环境中进行数据交换。
此外,XML具有的自定义性和可扩展性,使它足以表示各种类型的数据,而且与其它数据传递标准不同的是,XML并没有定义数据文件中数据出现的具体规范,而只是在数据中附加标记来表达数据的逻辑结构和含义,这使它成为一种应用程序能自动理解的规范。XML用元素及其属性表达对象的内部结构和对象间的链接,这就使XML文档的内容是一种树状结构,结构上数据库较为相似,它为在数据库之间交换信息提供了一种公共格式。
Dom4j是一个易用的、开源的库,用于XML,XPath和XSLT。它应用于Java平台,采用了Java集合框架并完全支持DOM,SAX和JAXP。DOM4J使用起来非常简单。只要你了解基本的XML-DOM模型,就能使用。在国内比较流行的是使用JDOM作为解析器,两者各擅其长,但DOM4J最大的特色是使用大量的接口,这也是它被认为比JDOM灵活的主要原因。
基于XML的信息系统信息源集成,既保持了各数据库之间的独立性,又提高了数据保存和分析处理的能力,是信息集成技术研究的热点。本文利用XML规范和Java技术的平台无关性,给出了基于DOM4J和XML的数据集成系统的框架与数据库信息集成的技术实现。
3 数据库集成框架
数据库集成可以把各种数据库文件细节屏蔽起来,用户通过XML文档即可以实现对数据的查询、处理加工等操作,并把处理后的结果通过XML文档返回到指定数据库中。
数据库集成工作原理如图1所示。应用程序向数据集成组件发出一个Xquery查询,数据库集成组件通过数据库访问技术(JDBC、ODBC、ADO等)将数据库文件导出,采用文档对象模型DOM(Document Object Model)技术,对纪录集进行访问,并封装成XML文档。这样,应用程序通过XQuery对XML文档查询,获得所需的查询结果。
对于查询结果进行处理加工,然后写回到目的数据库中,采用XML+DOM4J解析方法,用解析器把XML文档(查询结果)转换成一棵DOM树,如图2所示。这样,信息的搜索变成了对信息树的遍历。当数据库接收到XML文档后,它以信息树的结构形式遍历XML文档,将文档中的内容更新到数据库中。
4 技术实现
使用XML文档作为中间文件实现异构数据库间信息转换的方法,可以归结为以下三个步骤:(1)将源数据库映射为XML文档;(2)对XML文档进行查询得到所要的结果;(3)将结果映射到目的数据库中。下面就结合Java和DOM4J技术给出实现的主要过程。
(1)访问源数据库
通过目前多种软件开发平台提供的数据库互连接口和数据库访问技术,如JDBC、ODBC、ADO、DAO、COM等,可以轻松地访问数据库文件,并导出结果集(ResultSet)。
(2)将访问结果封装成XML文档
为了将得到的结果集封装成XML格式,本文利用DOM4J开源技术,基于Java平台来编码。
//创建XML文档对象doc
org.dom4j.DocumentFactory df = new org.dom4j.DocumentFactory();
Document doc = df.createDocument();
//创建根节点
Element root = doc.addElement(“StudentSet”);
//访问每条纪录
While(rs.next())
{ResultSetMetaData rsmd = rs.getMetaData();
Element parentEle = root.addElement(“Student”);
//访问该条纪录的所有字段
for (i=1;i<=rsmd.getColumnCount();i++)
{ Element childEle = parentEle.addElement(rsmd.getColumnLabel(i));
childEle.setText(rs.getObject(rsmd.getColumnLabel(i)));}}
//写文件
OutputFormat of = OutputFormat.createCompactFormat();
of.setEncoding("gb2312");
XMLWriter output = new XMLWriter(new java.io.FileOutputStream(new File("c:/ student.xml")),of);
output.write(doc);
output.close();
(3)XML文档查询
XML文档查询采用支持Xquery查询语言的XQuery软件(如DataDirect XQuery,Microsoft's XQuery Prototype和XML Query Engine等)。XQuery查询系统可以查询XML文档,然后返回XML结果。
图3 XML文档查询框架
(4)将结果写回到目的数据库中
对查询得到的结果进行处理加工,然后返回到指定的数据库中,必须对XML Result进行处理,读取每个元素的所有结点值,然后把提取的数据通过数据库访问技术写回到数据库中。下面是实现的部分代码。
treeWalk(doc.getRootElement());
//得到根结点,从根结点开始遍历
String query=”Insert Into ”;
public void treeWalk(Element element) {
for ( int i = 1, size = element.nodeCount(); i <=size; i++ ) {
Node node = element.node(i);
if ( node instanceof Element ) {
treeWalk( (Element) node );}
else {
query=query+ rsmd.getTableName(i)+” Value(“+node.getNodeValue()+”,”);}
query=qurey+”)”;}
stmt.executeUpdate(query);} //数据库连接省略
5 结束语
本文通过XML实现异构数据库的集成、共享和利用,提高了信息系统的整体效能。解决了XML和数据库双向传输的瓶颈,在信息系统的集成中有着十分重要的现实意义。
参考文献:
[1]高春颖,陆捷,陈艳霞.基于XML的异构数据库信息集成技术研究[J].电脑知识与技术,2006,05.
[2]张晓东.等.Java数据库高级教程[M],清华大学出版社,2004.
[3]马淑娇,李晓,周俊林.异构数据库集成中的XML技术探讨[J].计算机应用研究,2004,(1):94-96,39-42.
本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。