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 <!ELEMENT book (author+, title, publisher)> <!ATTLIST book type CDATA> <!ELEMENT publisher (name, address)> <!ELEMENT author (firstname?, lastname)> … 논리적 구조 위에 공간적, 시간적, 네트웍(링크) 구조 표현 DOM(Document Object Model) : 응용프로그램 API book XSL, CSS SMIL XLink, XPointer author+ title publisher + firstname? lastname name address . . .
2. XML문서 저장 /검색 시스템 특징 Data-Centric XML 문서 Document-Centric XML 문서 정형적인 구조 로서 내용과 구조가 혼재되어 있는 양이 적다 CALS/EC 등 대규모의 표준화된 데이터, 비행 스케줄 , 메시지 등 엘리먼트를 저장 , 조작 , 변경하는 데 중요한 의미를 가진다 Document-Centric XML 문서 비정형적인 구조로서 매우 혼재된 형태의 내용을 가진다 전자도서관, 전자책, 온라인 매뉴얼, 논문 , 광고 등 Intranet, WCMS(Web Contents Management System) 문서 단위의 저장, 내용검색, 문서단위 검색이 중요한 기능이 된다 Data-Centric 과 Document-Centric XML 문서 혼재 정형 데이터, 비정형 데이터 혼재 : 멀티미디어 데이터베이스
필요 기능 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 수정 기능 XML Instance 삭제 기능 DTD 삭제 기능 엘리먼트 삭제 기능 엘리먼트 추가 기능 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 구현 방법에 따라> 질의어가 정규 경로식 형태 => 새로운 모델을 제대로 표현 => 구현 완료성 및 시스템 안정성 불안, 기존 연구 할용 부족 기존 데이터베이스 시스템 이용 OODB, 또는 RDB 이용 문서 저장을 위한 적절한 테이블 또는 클래스 생성 XML에 대한 질의를 DB 질의어로 변환 => Wrapping : 기존 시스템 이용 Database에 저장하기 위한 스키마 생성이 관건 엘리먼트 의미를 저장하는 방법, XML 트리 구조를 저장하는 방법
XML 문서를 하나의 큰 객체로 저장 적절한 크기의 객체로 나누어 저장 <저장방법에 따라> 파일 형태, RDB의 BLOB(Binary Large Object) 또는 OODB의 LargeObject에 저장 구현이 간단하다 원하는 정보 추출시 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-text 인덱싱 가능 제한적으로 가능
RDBMS 상의 XML 모델링 Problem : XML 모델 Integrity 문제 Solution OODB 에서는 파싱된 객체를 바로 Complex object 형태로 저장 RDB는 객체를 여러 개의 테이블에 쪼개어 저장 : 검색시 조인 필요 Solution 스키마 설계시 DTD 독립적 스키마 생성 : 객체 관련 테이블 최소화 XML 구조의 의미를 유지하는 ID 부여 방법 : 계산만으로 구조 연산을 지원하여 DB 참조 최소화 Decomposition 기법 해당객체가 실제 내용 (content,value)을 저장 검색시 하위 객체의 내용을 취합 => 성능 저하 객체의 내용 변경시 다른 객체는 영향을 받지 않는다 . Virtual Fragmentation 기법 해당객체는 하위객체에 대한 오프셋과 길이, 검색 시 취합과정 없음 객체의 변경 시 다른 객체의 관련정보도 영향을 받음
4. XML 질의 언어 XML Query Language XML-QL (1998) XQL (1998) 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 특징 Syntax 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
Filters : [ ] - filter clause Grouping 모든 괄호 Filters : [ ] - filter clause collection의 모든 엘리먼트에 대하여 조건 검색 예) book[@style] book[/bookstore/@specialty = @style] Boolean Expressions & Equivalence $and$, $or$ =, !=, $eq$, $ne$
XML-QL 특징 Syntax Web 환경 하에서 다량의 XML 데이터 availability 를 높이기 위해 다량의 XML 문서에서 데이터 추출, 데이터 변환, 여러 장소의 XML 데이터의 통합, 다량의 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
예제 Query 문서 => bib.xml 결과문서 <bib> <book year=“2000"> WHERE <book> <publisher><name> 숙명여대 </></> <title> $t </> <author> $a</> </> IN "bib.xml" CONSTRUCT <result> <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> <publisher> <name> 숙명여대</name> </publisher> </bib> <result> <author> <lastname> 홍길동 </lastname> </author> <title> 데이터베이스 시스템 </title> </result> <title> XML 데이터베이스 </title> <author> <lastname> 고소영 </lastname> </author>