CN105550176A - 一种关系数据库与xml的基本映射方法 - Google Patents
一种关系数据库与xml的基本映射方法 Download PDFInfo
- Publication number
- CN105550176A CN105550176A CN201410591275.7A CN201410591275A CN105550176A CN 105550176 A CN105550176 A CN 105550176A CN 201410591275 A CN201410591275 A CN 201410591275A CN 105550176 A CN105550176 A CN 105550176A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- mapping
- xml
- xml document
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种关系数据库与XML的基本映射方法通过使用XML作为数据的载体,运用XSL样式表对XML进行转换,并使用反射机制调用EJB中的业务逻辑以使得数据交换节点之间方便地通信。
Description
技术领域
一种关系数据库与XML的基本映射方法主要涉及计算机数据库开发方面领域。
背景技术
数据交换问题的解决使得企业不同的异构系统之间可以实现最大限度的协同,并能扩展现有数据交换应用,使得孤立的应用系统各业务环节有机地结合起来,建立基于Internet的协作模式,从根本上提高了工作效率。从更深远的角度来说,对数据交换技术的研究将有助于数掘集成的发展,同时它还将促进数据库、数据仓库、虚拟数据库及其它一些相关领域的发展,加速我国的信息化建设。
在数据交换过程中,针对XML的优势,使用XML作为中间数据,用XML在源数据库和目标数据库之间进行数据传递,通过对XML进行解析和转换来完成数据交换。
发明内容
通过国家专利检索没有发现关于此系统方面的申请资料。
关系数据库与XML的基本映射方法有两种:基于模板驱动的映射和基于模型驱动的映射。
一.基于模板驱动的映射:基于模板驱动的映射是在一个模板中嵌入带参数的SQL命令,用数据传输如中间件等实体软件进行处理。基于模板驱动的映射是浅层次映射,以XML文档内嵌的SQL执行的数据结果集合为依据,不涉及数据库赖以存在的关系模式或对象模式,当前MicrosoftSQL2000等大多数的产品都属于模板映射,只能应用于在关系数据库和XML文档之间传递数据,不足之处在于它只适合将其它类型的数据转换为XML文档,对于反向的转换就无能为力了,也不支持面向对象数据库之间或关系数据库与对象数据库之间的信息交互。此外,基于模板的转换方法关键是要生成大量合理的模板,为此系统要为用户提供一套生产模板的工具以及相应的指令执行程序。
考虑下面的模板:
<?xmlversion=”1.0”?>
<Studentlnfo>
<Intro>Thestudent’Sinformation</Intro>
<SelectStmt>
SelectSno,Sname,Ssex,Sage,SdeptfromStudent
</SelectStmt>
<Conclude>thatiSall</Conclude>
</StudentInfo>
在文档中嵌入Select语句,当对其进行处理时,每一个Select语句都会被它的结果所代替,用XML形式表现出来:
<?xmlversion=”1.0”?>
<Studentlnfo>
<Intro>Thestudent’Sinformation</Intro>
<Students>
<Row>
<Sno>9500I</Sno>
<Sname>李勇</Sname>
<Ssex>男</Ssex>
<Sage>20</Sage>
<Sdept>CS</Sdept>
</Row>
<Row>
<Sno>95002</Sno>
<Sname>RIJ晨</Sname>
<Ssex>女</Ssex>
<Sage>21</Sage>
<Sdept>MA</Sdept>
</Row>
</Students>
<Conclude>thatisall</Conclude>
</Studentlnfo>
二.基于模型驱动的映射:在基于模型驱动的映射中,当把数据从数据库传送到XML文档或者把数据从XML文档传送到数据库时,用一个具体模型来实现,而不是仅仅依赖内嵌SQL命令,关系数据库依赖关系模型,面向对象数据库依赖对象模型,而XML文档依据Schema或DTD。
基于模型驱动实现数据在数据库和XML文档间的双向传输的关键是在数据库模式和XMLSchema/DTD之间建立双向映射。具体思路是把一个XML文档表示为由数据对象构成的树,每一个元素类型和对象模式中的对象相对应,主要在面向对象数据库中使用,当然,传统的关系.对象模型也可以映射到关系模式中。基于模型驱动的映射是一种深层次的映射,是模式与模式之间的映射。
数据库和XML之问的映射机制大致有两种,分别是基于表格的映射和基于对象的映射,这两种映射都可以在XML文档和数据库之间转换数据。它们的主要区别在于基于表格映射比较简单,转换出来的XML文档格式比较单一,类似于关系表,需要利用XSLT转换语言将单一的XML格式转换成复杂丰富的格式;而基于对象的转换功能比较强大,转换比较丰富,可以根据需要转换成格式多样的XML文档。
(1)表格映射:许多中间件软件包用表格模型在.XML文档和关系数据库之间传递数据。它把XML文档表示为一个单一的表格或者是表格的集合。这样,一个XML文档的结构可以用如下的形式表示:
<database>
<table>
<row>
<columnl>?</columnl>
<column2>?</column2>
</row>
</table>
</database>
这里关键字“table’’在把数据从数据库传递到XML文档的时候,表示一个单一的结果集,把数据从XML文档传递到数据库的时候,表示一个单一的表格或视图。但是,当结果集合不只一个的时候,或者当XML文档包括多个复杂嵌套的时候,这个传递方式就不适用了。
(2)基于对象的映射方法将数据库中的数据映射为一棵对象树,根据规则将文档的层次结构映射为树状结构(通常把文档中的元素定义为树的节点)。然后把这些对象转换到XML文档中,或者相反。这种模型对于XML文档与面向对象数据库和层次数据库之间的映射非常便利。当需要与关系数据库进行映射时,可以利用传统的“对象一关系"映射技术来实现。
基于模型的映射方法由于有了数据模型的支持,可以完成关系数据库和XML数据之间的双向映射。但是模型的引入也使得XML文档的结构受到了限制,一个XML文档必须符合模型所规定的结构才能将XML文档映射成其它类型的数据,而从其它类型数据转换得到的XML文档也具有某种结构特点。所以基于模型的映射方法的关键在于设计一个灵活的映射模型,而为了更好的支持其双向映射的特点,这个映射模型又必须是易于读懂、易于操纵并能很好的表达关系数据库的各种约束。
JDOM旨是构建一个完整的、基于Java的解决方案,以便从Java代码访问、操作和输出XML数据时就像使用Java语言本身一样简单。
JDOM无缝地整合了现有的XMLAPI标准(如SAX和DOM),并为基本文档操作(使用元素、属性和文本)创建了一套新的类和接I:1。JDOM可以从现有的DOM和SAX数据源读取数据,并且可输出为DOM和SAX可以接受的数据;但它自身不包含解析器。它通常使用SAX解析器来解析和验证输入XML文档(尽管它还可以将以前构造的DOM表示作为输入1;它还包含一些转换器,以将JDOM表示输出成SAX事件流,DOM模型或XML文档。
JDOM将DOM和SAX的优点整合到一起,成为一个设计轻量、速度快、占用内存少的API。JDOM还提供了足够的文件视图供随机访问XML数据,但它并不要求将整个文件都放迸内存;它允许轻量的实现只在需要时将信息装入内存。JDOM很好地整合了现有的XMLAPI标准,但它并不仅仅是对这些API的一种简单抽象;它汲取了现有的一些API的优秀设计理念,创建了一套新的类和接口,形成了新的设计特色。
(1)JDOM作为Java平台专用的XMLAPI,它尽量利用了Java2平台的类集及内建的一些支持,为Java程序员提供一个组件丰富并且和Java语言类似的编程环境,让Java程序员用起来感到得心应手。
(2)JDOM没有层次。在JDOM中,XML元素就是Element类的实例,XML属性就是Attribute类的实例,XML文档本身就是Document类的实例。它们总是作为自己的类型被应用,而不是作为一个意义不明确的“节点"。
(3)JDOM是类驱动的。因为JDOM对象就像Document,Element和Attribute这些类的实例,因此创建一个新的JDOM对象就像在Java语言中使用new操作符一样简单。JDOM采用标准的Java编码模式,尽可能使用new操作符而不用复杂的工厂化模式,其对象操作即使对初学者也很方便。
(4)JDOM与JAXP、DOM和SAX紧密地整合在一起,和XMLAPI有很好的互操作性。用JDOM不仅能把文档输出到数据流或阅读器,还可以将文档作为SAX流或者作为DOM文档输出。这种灵活性允许JDOM能在多种环境下使用,或者被添加到已经在使用另一种方法处理XML的系统中去。
(5')JDOM还包括对程序行为的相当广泛的检查机制,以防止用户在XML中做任何没有意义的事情。
综上所述,由于JDOM是基于Java的特定文档模型。因而利用JDOMAPI操作XML文档能够充分发挥Java的平台无关性,便于应用程序在不同计算机平台上进行移植,从而很好的实现Java与XML优点的综合,是一款很优秀的操作XML文档的工具,本文选用JDOM来解析XML文档。
三.数据库中的数据类型大致分为两大类:普通类型和大对象类型。普通类型是指数据库系统中的一些常见的数据类型,如整型、字符型、布尔型等。大对象类型是指存储大文本(超过2000个字符)、图片、音频等的类型。
LOB数据基本有两大类:CLOB(字符大对象)与BLOB(Z-迸制大对象)。CLOB主要用于存储大文本数据;BLOB用于存储二进制数据,如图像、视频、音频等。LOB数据由于容量太大,一般其存储比较特殊,它并不跟其它数据库存储在同一个数据库表中,而是可以单独存放在不同的表空间里,由一个定位符指向实际的LOB。
(1)基于JDBC的LOB数据的存取技术
一般可以通过各种数据库访问接口(如ODBC、JDBC等)实现对LOB数据的存取。与普通类型数据一样,LOB数据也可以使用各种SOL命令。本文讨论通过JDBC来实现LOB数据的存取。下面以Oracle数据库为例来说明LOB数据的存取过程。
对LOB数据读取一般采用流操作的方法:
Statementstmt=con.createStatement0;
Stringsql=”selectzpfromjswhereid=l”;
ResultSetrs=stmt.executeOuery(sql);
oracle.sql.BLOBblob=(oracle.sql.BLOB)rs.getBlob(“zp”);
BufferedOutputStreamout=newBufferedOutputStream(newFileOutputStream(outfile));
BufferedlnputStreamin=newBufferedlnputStream(blob.getBinaryStream0);
写入LOB数据
Stmt.executeUpdate(“INSERTINTOJS(Jno,zp)VALUES(‘A0101’,EMPTY—BLOBO)”)
ResultSetrs=stmt.executeOuery(“SELECTzpFROMjSWHEREJno=’A0101’FORUPDATE”);
oracle.sql.BLOBblob=(oracle.sql.BLOB)rs.getBlob(“zp”);
BufferedOutputStreamout=newBufferedOutputStream(blob.getBinaryOutputStream0);
BufferedlutputStreamin=newBufferedlnputStream(newFilelnputStream(infile));
向数据表中写LOB对象数据不能直接使用INSERT命令,必须先写入一个空的LOB对象,然后进行更新。当需要在异构数据库之间进行大对象数据交换时,可以先使用以上方法将LOB数据从数据库中读出,然后将其随其它数据一起转换到XML文档,最后再用以上方法写入到目标数据库中。
(2)LOB数据在XML文档中的存取当大对象数据从源数据库读取后会形成一个二进制数据文件,这些二进制数据文件不能直接存放到XML文档中,必须要经过适当的转换。因为XML文档中的数据都是文本类型的,它不能识别二进制格式的数据。因此,要将二进制数据嵌入到XML文件中,首先必须将二进制数据编码成合法的字符集才能嵌入到XML文档中。
能够实现二进制数据编码的方法最常用的是Base.64编码法。Base.64编码是一种MIME(MultipurposeIntemetMailExtensionprotocol,多用途的网际邮件扩充协议)编码方法。Base.64编码使用一个64个字符的子集(包括A-Z、a.z、0.9、+和/)来表示二进制数据,并使用“="进行填充。这种编码算法每次处理3个字节序列的字符流,每3个字节序列被解析为4个6位的数据单元。每个6位数据的十进制值作为Base.64字母表的索引,以获得相应数据的编码字符,Base.64字母表。
Claims (7)
1.一种关系数据库与XML的基本映射方法主要特征是基于模板驱动的映射和基于模型驱动的映射。
2.根据权利要求1中的基于模板驱动的映射是在一个模板中嵌入带参数的SQL命令,用数据传输如中间件等实体软件进行处理。
3.根据权利要求2中的浅层次映射,以XML文档内嵌的SQL执行的数据结果集合为依据,不涉及数据库赖以存在的关系模式或对象模式。
4.根据权利要求1中基于模型驱动的映射是数据库和XML文档间的双向传输的关键是在数据库模式和XMLSchema/DTD之间建立双向映射。
5.根据权利要求4中的数据库模式主要是基于表格的映射和基于对象的映射,这两种映射都可以在XML文档和数据库之间转换数据。
6.根据权利要求5中的基于表格的映射是指XML文档表示为一个单一的表格或者是表格的集合。
7.根据权利要求5中的基于对象的映射方法将数据库中的数据映射为一棵对象树,根据规则将文档的层次结构映射为树状结构。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410591275.7A CN105550176A (zh) | 2014-10-29 | 2014-10-29 | 一种关系数据库与xml的基本映射方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410591275.7A CN105550176A (zh) | 2014-10-29 | 2014-10-29 | 一种关系数据库与xml的基本映射方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105550176A true CN105550176A (zh) | 2016-05-04 |
Family
ID=55829365
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410591275.7A Pending CN105550176A (zh) | 2014-10-29 | 2014-10-29 | 一种关系数据库与xml的基本映射方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550176A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407302A (zh) * | 2016-08-30 | 2017-02-15 | 东华大学 | 支持通过简单sql调用中间件数据库特有功能的方法 |
CN107943763A (zh) * | 2017-11-29 | 2018-04-20 | 广州迈安信息科技有限公司 | 一种大文本数据处理方法 |
CN111061917A (zh) * | 2019-12-04 | 2020-04-24 | 西安鼎蓝通信技术有限公司 | 一种数据驱动映射转换方法 |
CN113254983A (zh) * | 2021-07-13 | 2021-08-13 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法及装置 |
-
2014
- 2014-10-29 CN CN201410591275.7A patent/CN105550176A/zh active Pending
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407302A (zh) * | 2016-08-30 | 2017-02-15 | 东华大学 | 支持通过简单sql调用中间件数据库特有功能的方法 |
CN107943763A (zh) * | 2017-11-29 | 2018-04-20 | 广州迈安信息科技有限公司 | 一种大文本数据处理方法 |
CN111061917A (zh) * | 2019-12-04 | 2020-04-24 | 西安鼎蓝通信技术有限公司 | 一种数据驱动映射转换方法 |
CN113254983A (zh) * | 2021-07-13 | 2021-08-13 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法及装置 |
CN113254983B (zh) * | 2021-07-13 | 2021-10-01 | 卓尔智联(武汉)研究院有限公司 | 一种数据处理方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7630993B2 (en) | Generating database schemas for relational and markup language data from a conceptual model | |
Erl | Service-oriented architecture | |
CN100468396C (zh) | 用于任意数据模型的映射体系结构 | |
Astrova et al. | Storing OWL ontologies in SQL relational databases | |
US8516011B2 (en) | Generating data models | |
CN102609255B (zh) | 一种Spring IOC配置文件的生成方法 | |
US20050228728A1 (en) | Extraction, transformation and loading designer module of a computerized financial system | |
CN102426582B (zh) | 数据操作管理装置和数据操作管理方法 | |
CN102646039A (zh) | 基于XML Schema的软件界面生成系统及方法 | |
CN101008952A (zh) | 一种持久层生成方法及装置 | |
CN107491476B (zh) | 一种适用于多种大数据管理系统的数据模型转换及查询分析方法 | |
CN106547841A (zh) | 一种Excel XML映射的数据自动转换方法 | |
CN102314647A (zh) | 一种利用xbrl进行的企业数据存储的方法 | |
CN102214243A (zh) | Xbrl分类标准版本管理系统 | |
CN103927385A (zh) | 数据模型的统一方法及装置 | |
CN105550176A (zh) | 一种关系数据库与xml的基本映射方法 | |
CN105468793A (zh) | 一种仿真模型数据的自动化管理方法 | |
Alalfi et al. | SQL2XMI: Reverse engineering of UML-ER diagrams from relational database schemas | |
US20060010106A1 (en) | SMO scripting optimization | |
US20100088685A1 (en) | System and method for mapping a domain modeling language to a relational store | |
CN101916260A (zh) | 一种灾害本体和关系数据库间语义映射构建的方法 | |
CN100565519C (zh) | 基于统一数据标识的数据库业务处理方法 | |
US20070073765A1 (en) | Metadata-based schema generator | |
CN106560802A (zh) | 一种关系数据库与web数据的映射方法 | |
CN114281331A (zh) | 一种用于访问数据库的前后端代码文件的生成方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20160504 |
|
WD01 | Invention patent application deemed withdrawn after publication |