2008. 10. 4. 13:32

XML DataBase

기본카테고리 2008. 10. 4. 13:32
11장 XML DataBase Ⅰ XML정복

2004/11/24 18:09

http://blog.naver.com/web28/60007869811

1. XML 데이터의 저장과 검색

1-1. 텍스트파일로 저장과 검색

확장자가 .xml인 파일 형태로 XML 데이터를 저장하여 검색 시스템 등으로 검색하는 방법이

다. 가장 단순한 방법이지만 트랜잭션이나 베타 제어 등과 같은 비교적 소규모인 웹 프로그램

에서 사용되는 방법이다. 하지만 데이터 양이 많은 경우에는 목적한 파일이나 요소를 검색하

는 것이 어렵고, 또한 다수의 사용자가 동시에 참조, 갱신하는 프로그램에는 적합하지 않다.

1) 모든 문서의 검색

워드프로세서의 '찾기' 기능과 같이 모든 문서에 대하여 검색하낟. 그런데 XML 문서의

논리구조를 유지하고 있는 파일을 검색하면 그 구조를 고려하지 않고 내용에 관계없는

정보까지 나타나게 된다는 문제점을 가지고 있다.

2) 구조를 의식한 검색

XML 문서에서 요소들 사이의 구조를 고려하여 검색한다. XML 구조는 그 정보의 의미를

반영하고 있는 것이 일반적이므로 구조를 사용한 검색은 비교적 검색결과가 정확하다.

1-2. 관계형 데이터베이스로의 저장과 검색

1) 관계형 데이터베이스에서의 저장

관계형 데이터베이스는 기본적으로 행과 열로 테이블을 구성하므로 트리 구조를 가진

XML을 그대로 저장하지 않는다. 그래서 XML의 구조나 내용을 복수의 테이블로 나누고

XML문서의 각 요소를 매핑하는 기법을 사용한다.

2) 관계형 데이터베이스의 검색

SELECT 컬럼이름 FROM 테이블 이름 WHERE 조건

3) 추출된 데이터의 XML로의 변환

⊙ 1단계 : SQL에서 정보를 추출한다.

⊙ 2단계 : 추출한 정보를 XML로 변환한다.

⊙ 3단계 : XML을 XSLT, DOM, SAX 등을 이용하여 HTML로 변환한다.

⊙ 4단계 : HTML을 클라이언트에 보낸다.

4) Excel 2000/97 데이터의 XML 변환

(1) 해당 Excel 파일을 열어 문서 작성을 하고 저장한다.

(2) 설정(S)제어판(C)에 있는 관리도구에서 데이터 원본(ODBC)을 실행시킨 후,

추가(D) 버튼을 클릭한다.

(3) 새 데이터 원본 만들기 대화 상자에서 Microsoft Excel Driver(*.xls) 를 선택한

마침 버튼을 클릭한다.

(4) ODBC Microsoft Excel 설정 대화 상자에서 데이터 원본 이름(N) 항목에 값을

입력하고 통합 문서 선택(S) 버튼을 클릭한다. 통합 문서 선택 대화 상자에서

(1) Excel 파일을 선택하고 확인버튼을 클릭한다.

(5) 확인 버튼 후, DB2XML Application 대화상자에서 DTD를 클릭한다.

(6) Specification of Output 대화상자가 나오면 Generate no Document Type

Definition, Generate data 항목을 선택하고 ok 버튼을 클릭한다.

(7) DB2XML Application 대화상자에서 Database 를 선택하면 Specification of

Database 대화상자가 나오면 해당 내용을 설정하고 ok 버튼을 클릭한다.

가. Driver class : sun.jdbc.odbc.jdbcOdbcDriver

나. Database URL : jdbc:odbc:ExcelOdbc

다. Parameters : encoding=UTF8,

(8) DB2XML Application 대화상자에서 XML Attribute를 선택하면 Specification

of XML Attributes 대화상자가 나오면 Type Attribute in all fields, NAME

Attribute in fields, URL Attribute in database element, QUERY Attribute

in table elements 항목을 선택하고 ok 버튼을 클릭한다.

(9) DB2XML Application 대화상자에서 XML Element를 선택하면 Specification

of XML Elements 대화상자가 나오면 Protect Strings as CDSect, Format

numeric values 항목을 선택하고해당 내용을 설정한 후ok 버튼을 클릭한다.

가. Character encoding scheme : EUC-KR

나. Language code : ko

다. Country code : KR

(10) Database query대부분에 검색할 질의문을 작성한다. 그리고File name 부분에

(1) Excel 파일을 선택하고 Generate XML 버튼을 클릭한다.

(11) XML 파일이 생성된다. 실행시키면 에러가 발생하는데, 문서의 내용 중 XML 선언

바로 밑에 있는 스타일시트 처리명령 부분을 주석으로 만든 후 저장한다.

<!--<?xml-stylesheet href=http://sanfrancisco/xml/db2xml/test.xsl

type="text/xsl"?>-->

(12) 정상적인 실행 결과 화면이 출력된다.

5) Access2000/97 데이터의 XML 변환

(1) 해당 Access 파일을 열어 문서 작성을 하고 저장한다.

(2) 설정(S)제어판(C)에 있는 관리도구에서 데이터 원본(ODBC)을 실행시킨 후,

추가(D) 버튼을 클릭한다.

(3) 새 데이터 원본 만들기 대화 상자에서 Microsoft Access Driver(*.mdb)

선택한 뒤마침 버튼을 클릭한다.

(4) ODBC MicrosoftAccess 설정 대화 상자에서 데이터 원본 이름(N) 항목에

값을 입력하고 데이터베이스 항목의 선택(S) 버튼을 클릭한다. 디렉토리에서

(1) Access 파일을 선택하고 확인버튼을 클릭한다.

(5)Specification of Database 대화상자의 Database URL을 설정하고 ok 버튼을

클릭한다.

가. Driver class : sun.jdbc.odbc.jdbcOdbcDriver

나. Database URL : jdbc:odbc:AccessOdbc

다. Parameters : encoding=UTF8,

(6) DB2XML Application 대화상자에서 XML Element를 선택하면 Specification

of XML Elements 대화상자가 나오면 Protect Strings as CDSect, Format

numeric values 항목을 선택하고해당 내용을 설정한 후ok 버튼을 클릭한다.

가. Character encoding scheme : EUC-KR

나. Language code : ko

다. Country code : KR

(7) Database query대부분에 검색할 질의문을 작성한다. 그리고File name 부분에

(1) Access 파일을 선택하고 Generate XML 버튼을 클릭한다.

(8) XML 파일이 생성된다. 실행시키면 에러가 발생하는데, 문서의 내용 중 XML 선언

바로 밑에 있는 스타일시트 처리명령 부분을 주석으로 만든 후 저장한다.

<!--<?xml-stylesheet href=http://sanfrancisco/xml/db2xml/test.xsl

type="text/xsl"?>-->

(9) 정상적인 실행 결과 화면이 출력된다.

1-3.객체지향 데이터베이스로의 저장과 검색

XML 데이터를 객체지향 데이터베이스(OODB)에 저장할 경우 XML의 트리 구조를 객체지

향의 데이터모델에 맞추어 저장한다.

1) 객체지향 데이터베이스

(1) 객체지향 언어에서는 다양한 정보를 객체로서 관리하고 있다.

(2) 객체에 대한 정보를 파일시스템이나 관계형 데이터베이스에 저장하고 프로그램이

실행될 때마다 정보를 읽어내어 객체를 재구축 한다.

(3) 문자와 숫자 데이터의 처리와 저장을 중심으로 하는 관계형 데이터베이스보다 다양

한 데이터를 취급하는 것이 용이해진다.

(4) 복잡한 정보관리가 요구되는 분야를 중심으로 수요가 넓어지고 있다.

2) 객체지향 데이터베이스와 XML

(1) DOM형 데이터모델

DOM에서 사용되고 있는 객체를 그대로 객체지향 데이터베이스에 저장하는 형식이

다. 이때 사용하는 클래스는 Node 클래스와 이것을 계승한 Document 클래스 등으로

구성된다. 이미 작성된 XML을 아무러 제한 없이 취급하므로 다양한 형태의 XML을

객체지향언어로 조작하고 싶거나 또는 객체지향 데이터베이스에 저장할 때 매우 적합

한다.

(2) DTD형 데이터모델

XML문서의 구조는 DTD 정의에 의해 제약을 받을 수 있다. DTD 제약에 따라 XML

문서가 작성되었을 때 DTD와 XML 문서 내용은 객체지향의 클래스와 인스턴스 관계

에 대응된다. 보통의 경우 요소형 선언마다 클래스를 작성한다.

1-4.XML 전용 데이터베이스로의 저장과 검색

XML 전용 데이터베이스란 XML 구조를 그대로 저장할 수 있는 형태의 데이터베이스를 말

한다.

1) XML 전용 데이터베이스의 특징

(1) XML과 데이터베이스 데이터모델의 다른 점을 의식할 필요가 없다

(2) XML전용 DB의 장점

가.테이블이나 객체에서 XML을 재구축 할 필요가 없다.

나. 설계 변경 시 작업이편리해졌다.

다. 검색할 때는 XML의 다양한 질의어들을 이용하므로 융통성을가진다.

2) XML검색

데이터베이스에 저장된 XML 데이터를 검색하는 경우에 관계형 데이터베이스에서는 주

로 SQL을 사용한다. 하지만 XML 전용 데이터베이스 등에서는 XML 전용의 질의 언어가

많이 사용되고 있으며 XML의 계층구조로 검색하는 특징이 있다.

3) XML-QL

DTD간의 XML 데이터변환이나 다수의 XML 데이터를 통합하기 위한 목적으로 설계된

XML 질의언어이다. 그리고 SQL과 비슷한 WHERE-IN-CONSTRUCT 구조로 중첩된

질의를 지원해준다.

(1) WHERE : 검색할 XML 패턴을 기술

(2) IN : 검색할 정보를 지정

(3) CONSTRUCT : 얻고자 하는 XML 결과

4) XQL(XML Query Language)

(1)XML문서나 프로그래밍 언어 안에 삽입하여 사용하는 간단한 질의언어이다.

(2)XQL식이라 하는 문법에 따라 기술되며 패턴이 XPath와 같고 노드가 기준이 된다.

(3) 1998년 2월 문서계 XML 연구자 사이에서 처음 초안 말들어져 같은 해 9월에 W3C에

제안되었고 Xquery라고도 불리며 사용시스템으로는 Tamino(Software AG)와

eXcelon(excelon Corp.)이 있다.

< XML-QL과 XQL의 비교 >

구분

XML-QL

XQL

주요특징

질의어가 XML형식과 유사

질의결과 포맷팅 가능

질의어가 디렉토리 표시방식과 유사

질의결과 포맷팅 불가능

상용화

주로 학계에서 사용

주로 산업체에서 사용

표준화 동향

1998년에 제안

아직 표준화 되지 않음

아직 제안되지 않음

2. 관계형 데이터베이스와 XML

< XML데이터를 관계형 데이터베이스로 옮기는 이유 >

① XML로 저장된 많은 양의 데이터로부터 질의를 처리해야 할 경우

② 기존의 데이터베이스에 저장되어 있는 데이터를 사용하기 위해서이다.

2-1. 관계형 데이터베이스의 XML 표현

1) 요소로의 데이터베이스 표현

관계형 데이터베이스에는 큰 개념을 기술하는 데이터 포인트들이 컬럼으로 구성된 테이

블로 표현된다.

2) 속성으로의 데이터베이스 표현

XML 문서내의 데이터 포인트를 표현하는 또 다른 방법은 속성을 이용하는 것이다.

2-2. 데이터 포인트

< 컬럼을 XML 구조로 표현하는 방법>

① 정보의 그룹을 XML 문서의 요소들로 표현하는 방법으로 최상위 요소와 최상위요소의

하위요소로 표현한다.

② 정보의 그룹을 XML문서의 요소로 표현하고 각각의 요소의 속성으로 구성으로 표현한다.

1) 데이터베이스 호환성

관계형 데이터베이스에서는 구조가 테이블과 관계성으로 표현되고 데이터 포인트는 컬

럼으로 표현되므로 내용과 구조가 명백하다.

(1) 데이터포인트를 표현하기 위해 텍스트만 있는 요소를 사용하게 되면 명백한 차이를

잃을 수도 있다. 어떤 요소가 데이터를 표현하며 어떤 요소가 구조를 표현하는지 알

아야 하며 각각에 맞게 처리해야 한다.

(2) 데이터 포인트를 속성으로 표현하였다면 구조는 요소로 표현되고 내용은 속성으로

표현되어 있어서 구조와 내용을 분리할 수 있게 된다.

(3) 요소의 문서는 문서에서 의미를 가지는 반면에 데이터를 표현함에 있어서 순서는 중

요하지 않게 된다. 따라서 요소의 순서는 불필요한 복잡성을 증가시키게 된다. 그러나

속성은 순서를 가지지 않으므로 복잡성을 감소시키게 된다.

2) 데이터 타입의 제한

XML 구조의 내용을 정의하기 위해 DTD를 사용할 때, 데이터 타입을 엄격히 정의할 방법

이 없다. 그러나 속성의 값이 사용 가능한 값 중의 하나를 취할 수 있도록 하는 예외가 있

다.

3) 프로그램의 복잡성

(1) DOM을 사용하였을 경우 텍스트만 사용한 요소의 값을 추출해 내는 것보다 속성의

값을 얻어내는 데 더 적은 단계가 필요하다.

(2) SAX를 사용하는 경우에도 요소의 텍스트 값을 얻을 때가 속성에서 값을 얻을 때보다

필요한 단계가 더 추가된다. 속성을 사용하여 데이터 포인트를 표현할 경우에 더 적은

이벤트 핸들러를 사용하게 되어 더 간단한 코드를 작성할 수 있다.