임 순 범
숙명여대 정보과학부 멀티미디어학과
Overview : XML 과 Database
멀티미디어 데이터베이스
(2001.10.23~11.1)
목차
• 강의노트 (PPT 파일 ) : http://mm.sookmyung.ac.kr/~sblim 1. Overview
– XML 개요
– XML 문서 저장 / 검색 시스템 , – XML 데이터 모델링 ,
– XML 질의언어
2. XML 과 Database 연동
[ 교재 ] Beginning XML, David Hunter 외 5 인 공저 , 정보문화사 , 2001.
제 13 장 XML 과 데이터베이스 , pp.625-654.
3. XML 질의 언어 (XML Query Language)
[ 교재 ] XML-QL , XQL 사양 문서 [ 참고 ] Quilt , XQuery 1.0
1. XML 개요
• eXtensible Markup Language 의 약어 , W3C 의 표준
– XML 의 사양은 SGML 보다 훨씬 간략
• XML 은 메타 언어 (meta language)
– 마크업 언어를 만들기 위한 언어 : 문서 유형을 만드는 역할 , 즉 요소 (element) 를 선언하고 이 요소들의 관계를 기술하는 언어
• 문서의 구조 및 의미를 마크업으로 정의 .
– 문서의 표현 ( 스타일 ) 은 분리 : CSS, XSL 등의 스타일시 사용
• XML 의 구성 ( 관련된 기술 표준 http://www.w3.org/ )
– 문서 내용을 위한 XML, 스키마 정의를 위한 DTD, XML-data, XDL – 문서 구조 접근을 위한 DOM , SAX
– 문서 질의 등을 위한 XQL, XML-QL, XQuery
– 문서 변환 혹은 표시를 위한 CSS, XSL (XSLT, XSL-FO) – 문서의 링크를 위한 XLink, XPointer 등
XML 의 장점 및 응용 분야
• 범용성 및 확장성
– 문서의 내용에 관련된 독자적 tag 를 직접 만들어 사용 가능
– XML 파일은 구조와 의미에 관한 정보만 포함 , 출력 표현은 스타일시 트로 분리
• 태그가 문서의 내용과 밀접하게 관련
– XML 의 tag 가 검색에 효율적으로 사용 가능
– 데이터로써 취급 가능 , 즉 스스로 설명 가능한 데이터가 될 수 있다 .
=> 잘 설계된 데이터베이스 역할이 가능
• 웹 응용분야의 데이터 / 정보 교환 언어로 발전
– 전자상거래 , 전자도서관 , 검색엔진과 같은 분야에서 활발한 연구
• XML 은 다른 마크업 언어를 생성할 수 있음
– MathML, CML(Chemical Markup Language), WML(Wireless ML) – XHTML, SMIL(Synchronized Multimedia Integration Language) – ebXML, OEB(Open eBook), EBKS, …
XML 예제
• 문서형 선언부 (DTD: Data Type Definition): 문서구조 정의
<?xml version="1.0" encoding="EUC-KR"?>
<!DOCTYPE 방명록 [
<!ELEMENT 방명록 ( 성명 , 전자우편 , 내용 )>
<!ELEMENT 성명 ( 성 , 이름 )>
<!ELEMENT 성 (#PCDATA)>
<!ELEMENT 이름 (#PCDATA)>
<!ELEMENT 전자우편 (#PCDATA)>
<!ELEMENT 내용 (#PCDATA)>
<!ATTLIST 내용 종류 (TEXT|HTML) "HTML">
]>
• 문서부 (DI : Document Instance)
< 방명록 >
< 성명 >
< 성 > 홍 </ 성 > < 이름 > 길동 </ 이름 >
</성명 >
< 전자우편 >gildong@email.com</ 전자우편 >
< 내용 종류 ="HTML"> 안녕하세요 ? 만나서 반갑습니다 .</ 내용 >
</ 방명록 >
• 스타일시트 (Stylesheet)
– CSS(Cascading Style Sheet) 또는 XSL(eXtensible Stylesheet Language) – 문서의 배치 혹은 포맷을 표현
– XML 문서의 출력과정
– 문서의 논리적 구조 및 내용과 출력형식이 분리되는 것을 원칙
• 기타 표현 요소
– 시간적 배치 : SMIL (Synchronized Multimedia Integration Language) – 문서의 링크 : XLink, XPointer
– 문서의 위치 , 패턴 : XPath
– 문서 구조 접근 : DOM(Document Object Model) , SAX(Simple API for XML)
XML 문서의 특성
• 문서의 논리적 구조를 문서 내에 포함 => DTD
– DTD 예
<!ELEMENT book (author+, title, publisher)>
<!ATTLIST book type CDATA>
<!ELEMENT publisher (name, address)>
<!ELEMENT author (firstname?, lastname)> …
• 논리적 구조 위에 공간적 , 시간적 , 네트웍 ( 링크 ) 구조 표현
• DOM(Document Object Model) : 응용프로그램 API
book
author+ title publisher firstname? lastname name address
XSL, CSS SMIL
XLink, XPointer
. . .
+
2. XML 문서 저장 / 검색 시스템
• 특징
– XML 문서의 구조정보를 유지하면서 효율적으로 저장 및 검색 , 관리 할 수 있는 시스템
• Data-Centric XML 문서
– 정형적인 구조 로서 내용과 구조가 혼재되어 있는 양이 적다
– CALS/EC 등 대규모의 표준화된 데이터 , 비행 스케줄 , 메시지 등 – 엘리먼트를 저장 , 조작 , 변경하는 데 중요한 의미를 가진다
• Document-Centric XML 문서
– 비정형적인 구조로서 매우 혼재된 형태의 내용을 가진다 – 전자도서관 , 전자책 , 온라인 매뉴얼 , 논문 , 광고 등 – Intranet, WCMS(Web Contents Management System)
– 문서 단위의 저장 , 내용검색 , 문서단위 검색이 중요한 기능이 된다
• Data-Centric 과 Document-Centric XML 문서 혼재
– 정형 데이터 , 비정형 데이터 혼재 : 멀티미디어 데이터베이스
필요 기능
• XML 저장 기능
– DTD / XML Instance ( 문서 ) Loading 기능 – 파싱 / 검증 기능
• DTD / Instance 파싱 , Well-formed / Valid 검사
– 저장 기능
• DTD, XML Instance, External Entity / XLink 관련 문서
• XML 검색 기능
– 내용정보 검색
• 엘리먼트 내용 , XML Instance 내의 내용
• 같은 문서 타입 (DTD) 중의 내용 , 서로 다른 문서 타입 (DTD) 간의 내 용
– Attribute 검색 : 이름 / 값에 대한 검색 – 구조정보 검색
• 타입 / 순서 / 계층 정보 , 순환 (Traversing) 검색
• XML 삭제 기능
– XML Instance 삭제 기능
• Document ID 를 이용한 삭제
• DTD ID 를 이용한 문서 셋 삭제
• 검색된 엘리먼트를 포함하는 문서 , 검색된 문서에 대한 삭제
– DTD 삭제 기능
• DTD Name 을 이용한 DTD 삭제 , DTD 에 해당하는 문서 셋 삭제
• XML 수정 기능
– 엘리먼트 삭제 기능
• 특정 엘리먼트 삭제 , 특정 엘리먼트의 자식 / 자손 / 형제들 삭제
– 엘리먼트 추가 기능
• 특정 엘리먼트의 특정 위치로 엘리먼트 추가
– 엘리먼트 변경 기능
• 속성 추가 / 삭제 / 변경 기능 , 엘리먼트 내용의 변경
XML 저장 / 검색 시스템 사례
• 국외 개발 사례 (http://www.xmlsoftware.com/)
– XML Database System
• eXcelon – Object Design eXcelon Inc.
• Oracle 8i – Oracle
• Tamino – Software AG
– XML Content Management System
• Bladerunner – Interleaf
• POET CMS – POET
• 국내 개발 사례
– ReposiWare – 한국정보공학 ㈜ – XCMS – 한국지식웨어 ㈜
– XDMS – Techno2000 Project – BADA IV/XML – ETRI
– XD2M2 – 충남대 데이터베이스 연구실
3. XML 데이터 모델링
<DB 구현 방법에 따라 >
• 전용 데이터베이스 시스템 구현
– XML 데이터 모델은 트리형태 , 구조가 가변적 , 복합 데이터 형태 – 질의어가 정규 경로식 형태
=> 새로운 모델을 제대로 표현
=> 구현 완료성 및 시스템 안정성 불안 , 기존 연구 할용 부족
• 기존 데이터베이스 시스템 이용
– OODB, 또는 RDB 이용
– 문서 저장을 위한 적절한 테이블 또는 클래스 생성 – XML 에 대한 질의를 DB 질의어로 변환
=> Wrapping : 기존 시스템 이용
– Database 에 저장하기 위한 스키마 생성이 관건
• 엘리먼트 의미를 저장하는 방법 , XML 트리 구조를 저장하는 방법
< 저장방법에 따라 >
• XML 문서를 하나의 큰 객체로 저장
– 파일 형태 , RDB 의 BLOB(Binary Large Object) 또는 OODB 의 Lar geObject 에 저장
– 구현이 간단하다
– 원하는 정보 추출시 XML 문서 전체를 파싱해야 한다
• 적절한 크기의 객체로 나누어 저장
1) XML 문서의 의미를 보존하는 방법
– 예 ) <book> 태그 : book 에 관한 정보임
=> book 테이블 , 또는 book class 에 book 엘리먼트 저장
– XML DTD 로부터 스키마를 생성하므로 DB 구조가 가변적이어야 함 2) 구조적인 정보를 이용하여 저장
– 트리형태의 XML 데이터를 테이블 / 클래스에 매핑하여 저장 – XML 응용 프로그램에 적용할 때 편리
OODB vs RDB for XML DBMS
• RDBMS 상에 XML 데이터베이스 시스템 구현 이유
– 대부분의 기관에서 관계 데이터베이스 시스템 사용
– 기존 RDBMS 위에 개발된 여러 응용 시스템과 연동 필요
– XML 데이터 저장 / 검색 시스템을 위해 새로운 데이터베이스 시스템 구입은 비용적 부담
구분 OODB RDB
XML Model
Integrity XML Model 을 보전 XML Model 의 구조와 의 미를 쪼개어 Table 에 저 장
Large Data
Volumes Excellent scalability 조인의 필요성 때문에 scalability 가 좋지 못하다 Link Management
and Navigation 문서–엘리먼트등 다양
한 종류의 링크가 가능 링크는 primary key lookup 에 의해서만 가능
Full-text Queries 태그 영역까지의 full-t
ext 인덱싱 가능 제한적으로 가능
RDBMS 상의 XML 모델링
• Problem : XML 모델 Integrity 문제
– OODB 에서는 파싱된 객체를 바로 Complex object 형태로 저장 – RDB 는 객체를 여러 개의 테이블에 쪼개어 저장 : 검색시 조인 필요
• Solution
– 스키마 설계시 DTD 독립적 스키마 생성 : 객체 관련 테이블 최소화 – XML 구조의 의미를 유지하는 ID 부여 방법 :
• 계산만으로 구조 연산을 지원하여 DB 참조 최소화
• Decomposition 기법
– 해당객체가 실제 내용 (content,value) 을 저장 – 검색시 하위 객체의 내용을 취합 => 성능 저하
– 객체의 내용 변경시 다른 객체는 영향을 받지 않는다 .
• Virtual Fragmentation 기법
– 해당객체는 하위객체에 대한 오프셋과 길이 , 검색 시 취합과정 없음
4. XML 질의 언어
• XML Query Language
– W3C XML Query Working Group
– XML-QL, XPath, XQL, YATL, XSQL, etc.
• XML-QL (1998)
– Web 환경 하에서 다량의 XML 데이터 availability 를 높이기 위해
• XQL (1998)
– XML 문서의 패턴 검색 , XSL pattern syntax 에서 발전
• Quilt (2000) => Xquery (2001)
– XQL 과 XML-QL 의 특징을 통합
XQL
• 특징
– XSL pattern syntax 에서 확장
– XML 문서의 엘리먼트 / 텍스트를 접근하거나 필터링하기 위한 표기
• 절차적 (procedural) 보다는 선언적 (declarative)
– 출력 형식은 정의하지 않는다
• Syntax
– 특정 노드 또는 엘리먼트를 명시하는 정확한 표기가 가능
• URI directory navigation syntax 를 사용
• / : root context, // : descendent, * : collection of all children, @ : attribute
– 결과 : Context – Query 의 수행결과로 생성되는 set of node – 예제
• /book/author , ./author , author ,
• //author , author//first-name , bookstore/*/title, author/**/*
• @style
• Grouping
– 모든 괄호
• Filters : [ ] - filter clause
– collection 의 모든 엘리먼트에 대하여 조건 검색 – 예 )
• book[@style]
• book[/bookstore/@specialty = @style]
• Boolean Expressions & Equivalence
– $and$, $or$
– =, !=, $eq$, $ne$
XML-QL
• 특징
– Web 환경 하에서 다량의 XML 데이터 availability 를 높이기 위해 – 다량의 XML 문서에서 데이터 추출 , 데이터 변환 , 여러 장소의 XM
L 데이터의 통합 , 다량의 XML 데이터 전송을 위해 정의 – 결과 : well-formed XML 문서
• Syntax
– 패턴을 사용하여 데이터 매칭 – element pattern 을 사용
• ‘$’: variable indicator ( 예 $a)
• </> : end tag
– 결과로서 새로운 XML 데이터를 생성 – Grouping with Nested Queries
– Joining Elements by Value
• CONTENT_AS, ELEMENT_AS
20
• 예제
– Query 문서 =>
– bib.xml – 결과문서
WHERE <book>
<publisher><name> 숙명여대 </></>
<title> $t </>
<author> $a</>
</> IN "bib.xml"
CONSTRUCT <result>
<author> $a</>
<title> $t</>
</>
<bib>
<book year=“2000">
<title> 데이터베이스 시스템 </title>
<author> <lastname> 홍길동 </lastname>
</author>
<publisher> <name> 숙명여대 </name> </
publisher>
</book>
<book year=“2001">
<title> XML 데이터베이스 </title>
<author> <lastname> 홍길동 </lastname>
</author>
<author> <lastname> 고소영 </lastname>
</author>
<publisher> <name> 숙명여대 </name> </
publisher>
</book>
<result>
<author> <lastname> 홍길동 </lastname> </author>
<title> 데이터베이스 시스템 </title>
</result>
<result>
<author> <lastname> 홍길동 </lastname> </author>
<title> XML 데이터베이스 </title>
</result>
<result>
<author> <lastname> 고소영 </lastname> </author>
<title> XML 데이터베이스 </title>
</result>