XML을 관계형 데이터베이스와 매핑시키기
Download
Report
Transcript XML을 관계형 데이터베이스와 매핑시키기
작성일자
2001년 07월 25일
작성자
전민주
문서번호
DAI01-0710-SNM-XML-16
관리자
정목동 교수님
제목
Java 2 를 이용한 XML 활용
변경코드
00
페이지
검토
승인
문서종류
세미나 자료
제 10 장 XML과 데이터베이스
DISTRIBUTED ARTIFICIAL INTELLIGENCE LAB.
ETRI Proprietary
내용
▣ XML을 관계형 데이터베이스와 매핑시키기
▣ XML 질의
◈ XML 질의어의 필요 조건
◈ 관계형 DB 질의어의 속성
▣ XML 질의어
◈ XML-QL
◈ DB2XML
◈ DB2XML을 이용한 Program
◈ 오라클과 XML
▣ JDBC
◈ 드라이버의 종류와 JDBC 구조
◈ 간단한 JDBC 애플리케이션
◈ 메타데이터
DAI LAB.
Proprietary
ETRI
2
R&B Lab
XML을 관계형 데이터베이스와 매핑시키기
▣ XML을 관계형 데이터베이스와 매핑시키기
◈ 관계형 데이터베이스를 XML로 변환
• 모든 부분을 일일이 직접 변환
– 많은 시간과 노력이 필요
• 데이터 덤퍼를 통해 테이블을 읽어서 출력
◈ XML을 관계형 데이터 베이스 테이블에 매핑시키기
• 데이터 종류와 정밀도(precision)
• 기본 키(Primary Key) 정보
• 외래 키(Foreign Key) 정보
• 테이블과 관련된 특정 정보
◈ 변환 시 사용되는 규칙
• 테이블은 <!Element…>로 매핑, 테이블 안의 필드들은 부원소로 매핑
• 데이터베이스, 정밀도, 열 제목 같은 제목 같은 필드 정보들은 속성으로 매핑
• 기본 키는 필수 원소로 부모의 속성으로 매핑
• 외래 키는 선택적인 속성으로서 적절한 키 원소로 매핑
• 모델의 데이터 타입은 단정도, 배정도 실수형, 문자열, 정수형 등 간단한 값으
로 매핑
• 정밀도(precision) 속성으로 정의
DAI LAB.
Proprietary
ETRI
3
R&B Lab
XML을 관계형 데이터베이스와 매핑시키기
<REListings>
<ReListing ID = "1">
<BROKER ID = "1000">
<NAME>RE is Us</NAME>
<ADDR>200 Some Street, Anytown, USA</ADDR>
</BROKER>
<TYPE> Residential</TYPE>
<LISTPRICE>100000</LISTPRICE>
<ADDR>100 farm lane</ADDR>
<DESCRIPTION>A Wonderful 4 bedroom farm</DESCRIPTION>
</REListing>
...
<ReListing ID = "43214">
<BROKER ID = "012">
<NAME>Better Homes Inc</NAME>
<ADDR>12 Pleasant Lane, Somewhere, USA</ADDR>
</BROKER>
<TYPE>Commercial</TYPE>
<LISTPRICE>100000</LISTPRICE>
<ADDR>1 Ind. Way</ADDR>
<DESCRIPTION>100000sq warehouse!</DESCRIPTION>
</REListing>
</REListings>
CREATE DATABASE RELISTINGS;
CREATE TABLE RELISTING (
KEY INT PRIMARY KEY,
BROKER INT,
TYPE CHAR(20),
LISTPRICE INT,
ADDR CHAR(50),
DESCRIPTION CHAR(100) );
CREATE TABLE BROKERS (
BROKERKEY INT PRIMARY KEY
FOREIGN KEY,
NAME CHAR(30),
ADDR CHAR(124) );
SQL 문법을 통한 데이터베이스 테이블 생성
<!ELEMENT RELISTING (BROKER, TYPE,
LISTPRICE, ADDR, DESCRIPTION>
<!ATTRLIST RELISTING pkey ID #required>
<!ELEMENT BROKER (NAME, ADDR)>
<!ATTRLIST BROKER pkey ID #REQUIRED>
……
XML 테이블 생성
DTD 파일
DAI LAB.
Proprietary
ETRI
4
R&B Lab
XML 질의
▣ 질의
◈ 데이터베이스의 주요 기능 중 하나
◈ 사용자가 원하는 데이터 추출, 그 결과를 사용자에게 보여줌
◈ XML 질의어
• 수많은 문서들 가운데 사용자가 원하는 원소를 추출하는 것을 쉽게 함.
• XML 구조가 갖는 장점을 그대로 이용하여 질의의 정확성을 높임
▣ XML 질의어의 필요 조건
◈ 현재 W3C 표준 XML 기본 조건
• 질의어는 수많은 XML 문서에 질의를 수행할 수 있어야 하며, 결과를 문서
형태로 출력할 수 있어야 한다.
• 원래의 문서 순서와 계층 구조에 어떠한 영향을 주어서도 안된다.
• 결과나 질의 안에서 NULL 값을 표현하거나 식별할 수 있어야 한다.
• 질의어는 XSL 등을 통해 결과 구조를 변화시킬 수 있어야 하며, 새로운 구
조를 생성할 수도 있어야 한다.
• 질의어는 환경에 독립적이어야 하며, 프로그래밍 언어와 독립적이어야 하
고, 프로토콜과도 독립적이어야 한다
• 질의어는 XML 문서에서 제공하는 정보에 기반해야 한다.
DAI LAB.
Proprietary
ETRI
5
R&B Lab
XML 질의
▣ 관계형 데이터베이스 질의어 속성
◈ 데이터베이스 질의어의 특징
• 질의는 패턴, 필터, 구성의 세 부분으로 이루어진다.
– 패턴 : 어떤 데이터를 추출할 것인지를 나타내는 조건
– 필터 : 질의로부터 원하지 않는 결과를 제거하기 위한 조건
– 구성 : 최종적으로 결과가 어떤 형식을 취할 것인지를 결정하는 조건
• 구성에는 결과 데이터의 순서를 정할 수 있도록 하는 기능 제공
– 기능 : 인덱스, 정렬, 중첩된 질의 등의 포함
• 데이터베이스에서는 여러 개의 테이블을 입력으로 받아서 질의를 수행할
수 있도록 해주는 JOIN 기능 제공
• 데이터베이스에서는 질의의 결과를 임시적으로 보관하는 변수 기능 제공
DAI LAB.
Proprietary
ETRI
6
R&B Lab
XML 질의어
▣ XML-QL
◈ XML-QL 이란?
• 마이크로 소프트, 텍셀, 웹 메소드 사에서 W3C에 제출한 질의어
• XSL의 상위 개념
• XML-QL 질의문
– WHERE XML-QL pattern CONSTRUCT output
– Pattern : 선택하고자 하는 조건
– Output : 어떻게 결과를 구성할 것인지 명시
▣ DB2XML
◈ DB2XML 이란?
• 데이터베이스 테이블을 XML 문서로 변환시켜 주는 도구
• http://www.informatik.fh-wiesbaden.de/~turau/DB2XML 에서 다운
• 순수 자바로 만들어 졌으며, 자바 API 외에 많은 수의 서블릿을 포함
• DB2XML은 자동적으로 테이블로부터 XML을 생성하기 위해 주어진 데이터
베이스에 JDBC를 통해 접근한다.
DAI LAB.
Proprietary
ETRI
7
R&B Lab
XML 질의어
▣ DB2XML
◈ 기능
• 데이터베이스를 XML로 변환
• JDBC에 의해 제공되는 메타데이터로부터 DTD 생성
• XML 문서를 XSL 스타일시트를 통해 변환
◈ DB2XML
• 각각의 테이블과 필드들을 하나의 원소로 변환
• 부동산 목록 데이터베이스의 경우, REListing 테이블에 price 필드
– <!ELEMENT REListing.price>로 매핑
• 질의 실행→질의로부터 결과 레코드들은 하나로 묶여서 하나의 결과 원소
• 기본 키와 외래 키 : PKEY, FORKEY 지원
• 데이터베이스에 대한 간단한 질의 지원
– [tablePrefix]select * from orders when ORDERID > 1000
» tablePrifix가 필드로 표현되는 자식 원소들을 가진 루트원소로 사용
• 조인 연산자를 지원하지 않는다
• XSLT 외에는 어떠한 변환도 불가능하다
• JDBC에 기반을 두고 있기 때문에 JDBC 드라이버를 가진 데이터베이스에
서는 항상 사용 가능
DAI LAB.
Proprietary
ETRI
8
R&B Lab
XML 질의어
▣ DB2XML을 이용한 프로그래밍
◈ 자바 기반의 DB2XML 애플리 케이션을 위한 완벽한 애플리케이션 제공
• Db2xml.xml.JDBCXML 클래스
• JDBCXML은 다섯 가지 생성자 지원
– public JDBCXML(Database db,JDBCXMLProperties props) throws
DB2XMLException
– Public JDBCXML(Database db,JDBCXMLProperties props,
org.w3c.dom.Documentempty) throws DB2XMLException
– Public JDBCXML(JDBCXMLProperties props,
org.w3c.dom.Document empty) throws DB2XMLException
– Public JDBCXML(Database db,JDBCXMLProperties props,
db2xml.xml.XMLDocument empty) throws DB2XMLException
– Public JDBCXML(JDBCXMLProperties props) throws
DB2XMLException
DAI LAB.
Proprietary
ETRI
9
R&B Lab
XML 질의어
▣ DB2XML을 이용한 프로그래밍
◈ 기본 속성 파일에 명시된 속성→DB2XML이 어떻게 동작할 지를 제어
◈ 가장 일반적으로 사용되는 속성
속성
설명
driverClass
JDBC를 위한 드라이버 클래스
dbURL
데이터베이스 URL
dbQuery
가장 중요한 속성이며, 결과 생성시 사용되는 데이터베이스 질의를
정의. 질의간은 | 로 구분
stylesheetURL
생성된 XML에 적용되는 스타일시트의 URL 명시
applyStylesheet
스타일시트를 적용할 것인지를 결정(true/false)
defaultStyleSheet
stylesheetURL이 존재하지 않을때 적용할 기본 스타일시트 URL 명
시
• DB2XML은 아직 완전하진 않지만 JDBC 데이터베이스에서 xml을 생성하기
에 적합한 도구.
DAI LAB.
Proprietary
ETRI
10
R&B Lab
XML 질의어
▣ 오라클과 XML
◈ 오라클 질의
• XSQL 서블릿을 통해 처리된다.
◈ 오라클 질의 처리 과정
• 질의문이 브라우저에서 폼의 형식이나 아니면 그와 유사한 형식으로 XSQL
서블릿으로 전달
• 서블릿은 XML을 파서, 그 질의문을 오라클 XML 질의 프로세서에게 줌
• 질의 프로세서는 결과를 생성한다.
• 결과는 스타일시트가 존재시, XSL 처리 과정을 거침
• 결과는 XML 그 자체나 또는 HTML로 변환되어 브라우저로 전달
◈ 오라클 데이터베이스의 특징
• 관계형 데이터에 대한 질의를 통해 well-formed XML 결과를 생성
• XML 문서의 인덱싱과 검색 지원, XSL 같은 질의 이용하여 기본 문서 구조
에 따르는 검색을 지원
• 오라클은 표준 JDBC 기능 확장→추가, 삭제, 갱신 의 질의 수행
• C/C++, JAVA 등의 XML파서나 XSLT 변환 엔진 클래스 생성기 등 XML을
개발하기 위한 수많은 도구들을 지원
DAI LAB.
Proprietary
ETRI
11
R&B Lab
JDBC
▣ 드라이버 종류와 JDBC 구조
◈ JDBC 구조
Java Application
JDBC API
ODBC-JDBC Bridge
(type 1 driver)
Native C/C++
(type 2 driver)
Network
(type 3 driver)
Native ODBC Driver
Native C/C++ or
Other language API
Network interface
All java
(type 4 driver)
Database
DAI LAB.
Proprietary
ETRI
12
R&B Lab
JDBC
▣ 드라이버 종류와 JDBC 구조
◈ 드라이버의 종류
• 타입 1 : 브리지 드라이버. C/C++ 등으로 쓰여진 네이티브 드라이버 위에
구현. 단순히 ODBC 드라이버 호출
• 타입 2 : ODBC 계층 제거하고 네이티브 드라이버 위에서 직접 구현한 형태.
네이티브 드라이버 필요
• 타입 3 : 원격 데이터베이스를 위한 네트워크 인터페이스 제공.
• 타입 4 : 데이터베이스에 접근하기 위하여 특별한 계층을 필요로 하지 않음
→최소한의 오버헤드 발생으로 최고의 성능, 플랫폼에 독립적
DAI LAB.
Proprietary
ETRI
13
R&B Lab
JDBC
▣ 메타데이터
◈ JDBC의 특징으로 메타데이타의 정보를 알아 낼 수 있다
▶▶테이블 이름만 가지면 XML 데이터와 DTD 생성 가능
◈ 메타데이타 클래스의 정보
• ResultSet에 몇 개의 열로 구성되어 있는가?
• 열 제목은 무엇이며, 대소문자를 구분하는가?
• NULL은 유효한 값인가?
• 출력을 위한 컬럼 제목이 있는가?
• 출력을 위한 컬럼 제목이 있는가?
• 결과는 어느 테이블에서 나오는가?
• 주어진 필드의 데이타 타입은 무엇인가?
DAI LAB.
Proprietary
ETRI
14
R&B Lab
※ 참조 (1)
▣ DB2XML 실행 화면
• Down : http://www.informatik.fh-wiesbaden.de/~turau/DB2XML/download.html
• 환경 설정 : db2xml.jar를 classpath에 추가
DAI LAB.
Proprietary
ETRI
15
R&B Lab
※ 참조 (2)
▣ XML 문서에서 데이터베이스에 테이블 작성하기
• ORACLE에 XML을 저장, 갱신, 삭제하기 위해서는 ORACLE에서 제공하는 XSU(XML
SQL UTILITY)가 필요
• Down : HTTP://WWW.ORACLE.COM
• 설치 : XSU 압축해제→ LIB 폴더 아래 XSU12.JAR , XMLPARSERV2.JAR
CLASSPATH 설치
◈
◈
◈
◈
◈
XML화일에서 ORACLE로.. insertPerson.java 실행
TABLE에서 XML로 QUERY.. QueryXML.java 실행
XML DATA를 이용하여 UPDATE.. updatePerson.java. 실행
XML DATA를 이용한 삭제.. deletePerson.java. 실행
실행 결과
◈ TEST 하기
DAI LAB.
Proprietary
ETRI
16
R&B Lab