2006년 09월 29일
XML 과 데이터베이스
XML데이터의 특성과 | |
| |
XML데이터의 효율적인 관리와 활용을 위해 XML데이터의 특성에 맞는 새로운 저장소의 필요성이 증가하면서 수많은 네이티브 XML데이터베이스 제품들이 빠른 속도로 시장에 등장했다. 네이티브 XML데이터베이스들은 공통적으로 XML데이터를 본래의 XML 포맷 그대로(native XML) 다루어 데이터의 분해 및 재조합이 필요없으며 XPath, XQuery, XML스키마(Schema) 등 XML표준을 광범위하게 지원한다. 또한 데이터베이스 내부적으로 XML데이터 내의 일부 노드에 대한 부분적 갱신(partial update)을 지원한다.
XML데이터의 저장 시점에 DTD
(Document Type Definition) 또는 XML스키마를 이용한 유효성 검증(validity check)을 할 수 있으나 스키마 없는 잘 정립된 도큐먼트 또한 저장할 수 있어 스키마 변경이 잦거나 스키마를 갖지 않는 임의의 XML문서까지 수용할 수 있는 유연성을 제공한다.
네이티브 XML데이터베이스의 주요 기능
네이티브 XML 데이터베이스에서 제공해주는 많은 기능 중 공통적으로 제공하는 주요 기능들은 다음과 같다.
△도큐먼트 컬렉션(Document Collection): 네이티브 XML데이터베이스는 도큐먼트들을 쿼리 또는 조작할 수 있는 일정단위로 관리한다. 이는 관계형 데이터베이스의 테이블 또는 파일시스템에서 디렉토리와 유사한 개념이다. 예를 들어 구매 주문서를 네이티브 XML데이터베이스에 저장하는 경우 구매 주문 컬렉션을 정의하면 해당 컬렉션(즉 구매주문 컬렉션)내의 도큐먼트로 쿼리를 제한할 수 있다.
△질의 언어(Query Languages): 대부분의 네이티브 XML 데이터베이스는 W3C XQuery 또는 XPath 기반의 쿼리 언어를 지원한다. 쿼리의 범위는 전문 검색·쿼리(full-text search·query)에서부터 다중 도큐먼트로부터 프레그먼트들을 재결합하는 쿼리까지 다양할 수 있다.
△갱신 및 삭제(Updates and Deletes): 네이티브 XML데이터베이스는 도큐먼트를 갱신하고 삭제하는데 대한 다양한 정책을 가지고 있으며 각 제품마다 자체적인 언어를 가지고 있거나 XMLDB 이니셔티브로부터 만들어진 XUpdate 언어를 지원한다.
△트랜잭션, 락킹, 동시성(Transac-tions, Locking, Concurrency): 거의 모든 XML 데이터베이스는 트랜잭션을 지원한다. 락킹은 보통 도큐먼트의 프레그먼트 레벨보다는 전체 도큐먼트 레벨에서 지원되고 있다.
△API(Application Programming Interfaces): 대부분의 네이티브 XML 데이터베이스는 프로그래밍 API를 제공한다. 이러한 API는 데이터베이스에 대한 연결, 메타데이터 탐색, 쿼리 수행, 결과 가져오기 등을 위한 메소드를 갖는다. 일반적으로 XML 문자열, DOM 트리, 또는 리턴된 도큐먼트에 대한 SAX 파서나 XMLReader 등으로 결과셋이 리턴된다. 만약 쿼리가 다중 도큐먼트를 리턴할 수 있다면 결과셋을 통해 반복적으로 작업하기 위한 메소드 역시 사용 가능하다. 대부분의 네이티브 XML데이터베이스에서는 HTTP를 통해서 쿼리를 수행하고 결과를 리턴해 주는 기능 역시 제공해 준다.
△라운드-트리핑(Round-Tripping): 네이티브 XML데이터베이스의 중요한 기능 중 하나는 XML도큐먼트를 라운드-트리핑 할 수 있다는 것이다. 즉, XML 도큐먼트를 네이티브 XML데이터베이스 내에 저장하고 도큐먼트를 저장할 때와 같은 상태로 그대로 복원하여 다시 가져올 수 있다. CDATA 섹션, 엔티티, 주석문, 그리고 프로세싱 명령어 등과 같은 것들이 도큐먼트를 형성하기 때문에 이는 도큐먼트-중심 애플리케이션에서는 중요하다. 또한 도큐먼트의 정확한 복사본을 유지해야 하는 법률 및 의학 또는 EDI 애플리케이션에서는 필수적인 기능이다. 모든 네이티브 XML데이터베이스는 엘리먼트, 어트리뷰트, PCDATA, 그리고 도큐먼트 순서 레벨에서 도큐먼트를 라운드-트립할 수 있다. 얼마나 많이 라운드-트립할 수 있는지는 데이터베이스에 따라 다르다.
[20051206192437].jpg)
[20051206192437].jpg)
<그림2> 컬렉션과 doctype, 도큐먼트
△리모트 데이터(Remote Data): 몇몇 네이티브 XML 데이터베이스는 데이터베이스 내에 저장되어 있는 도큐먼트 내에 리모트 데이터를 포함할 수 있다. 일반적으로 ODBC, OLE DB, 또는 JDBC 등을 이용하여 관계형 데이터베이스로부터 가져온 데이터이고 테이블-기반 매핑 또는 객체-관계형 매핑을 이용하여 모델링 된다.
△인덱스(Indexes): 대부분의 네이티브 XML 데이터베이스는 엘리먼트 및 어트리뷰트 값의 인덱싱을 지원한다. XML데이터베이스가 아닌 것처럼 인덱스는 쿼리의 속도를 빠르게 하기 위해 사용된다.
네이티브 XML데이터베이스의 아키텍처
네이티브 XML 데이터베이스 제품들은 데이터의 저장·관리를 위해 각각 다른 접근법을 사용했고, 따라서 다양한 스토리지 아키텍처를 채택하고 있다. 현재 주요 네이티브 XML데이터베이스들의 스토리지 아키텍처는 XML 데이터를 계층적인 트리 구조로 매핑하는 계층형(Hierarchical)과 XML 저장을 위해 OODBMS를 사용한 객체-지향(Object-oriented), 전체 XML 도큐먼트를 텍스트 형태로 저장하는 텍스트기반, 제품별 자신만의 바이너리 형태를 만들어서 사용하는 특정 바이너리(proprietary binary)형 등으로 분류할 수 있다.
네이티브 XML데이터베이스 제품
현재 시장에는 다양한 네이티브 XML데이터베이스 제품들이 나와있으며, 대표적인 네이티브 XML데이터베이스 제품에는 소프트웨어AG사의 Tamino XML Server를 들 수 있다. 또 IXIA의 TEXTML Server, NeoCore의 Neo
Core XMS, Ipedo의 Ipedo XML 데이터베이스, Sonic Software의 Sonic eXtensible Information Server, TeraText Solutions의 TeraText DBS, OpenLink Software의 Virtuoso 등이 시장에 나와 있다. 한편 eXist, Berkeley DB XML 등은 오픈 소스로 제공되는 네이티브 XML데이터베이스이다.
타미노 XML서버
네이티브 XML데이터베이스라는 용어는 1999년 소프트웨어AG사의 타미노(Tamino) XML 데이터베이스 제품 캠페인에서 처음으로 나온 말이다. 이후 네이티브 XML데이터베이스라는 용어가 널리 사용되게 되었으며, 같은 제품을 개발하는 업체들 사이에 공통적인 용어로서 자리잡게 된 것이다. 네이티브 XML데이터베이스에 대한 이해를 돕기 위해 대표적인 네이티브 XML 데이터베이스인 타미노 XML서버의 아키텍처와 저장 방식, 주요 기능을 XML 데이터 관리와 관계되는 기능 위주로 살펴본다. <그림 1>은 타미노 XML서버의 아키텍처를 보여주고 있다.
△네이티브 XML 스토리지: 타미노는 XML데이터를 네이티브 XML 스토리지에 저장한다. XML데이터는 스키마(DTD 또는 XML Schema)를 가지는 데이터와 스키마 없는 잘 정립된 도큐먼트 모두 저장 가능하다. 스키마가 있는 데이터의 경우 데이터가 저장될 때 미리 정의된 스키마에 의해 유효성 검증이 이루어진다. 디스크 공간을 절약하고 I/O를 줄여 성능을 향상하기 위해 데이터 압축(compression)기능을 제공한다.
△컬렉션(collection)과 Doctype, 도큐먼트(document): 타미노 데이터베이스는 여러 개의 컬렉션(collection)들로 이루어진다. 컬렉션은 XML 도큐먼트의 그룹들을 담고 있는 컨테이너이다. 컬렉션 내에는 여러 개의 doctype들이 담길 수 있는데, doctype은 XML데이터의 루트 엘리먼트(root element)로 선언된 엘리먼트로, 각 스키마별로 하나의 doctype이 정의된다. 실제 하나의 XML 도큐먼트는 doctype 내 하나의 인스턴스(instance)로 저장되게 된다. 관계형 데이터베이스의 테이블에 비유하자면 관계형 테이블은 doctype, 열(row)은 XML인스턴스(instance)에 비유될 수 있다. 즉, 데이터들이 테이블 내 열(row)로 저장되듯이 XML 데이터는 doctype 내 XML 인스턴스(instance)로 저장되는 것이다. 스키마의 정의는 GUI로 제공되는 타미노 스키마 편집기에서 DTD 또는 XML 스키마를 읽어들여 인덱스 등의 부가 정보를 입력한 후 정의한다.
[20051206192437].jpg)
<그림3> W3C XQuery기반 질의어
△XML데이터 질의: 계층적 구조의 XML 문서에 대한 질의는 문서의 구조에 따라 조건을 주는 구조적 검색이나 문서 트리의 일부분을 질의하는 등 XML의 특성에 따라 여러 가지 요구사항이 나타난다. RDBMS의 테이블에 대한 질의로 SQL을 사용하듯이 XML 데이터의 구조에 맞는 다양한 질의를 지원하는 강력한 메커니즘이 필요하다. Tamino는 W3C XPath를 확장한 질의 언어인 X-Query와 W3C XQuery 기반 질의어의 두 가지를 제공한다. X-Query는 직관적인 질의어로 하나의 doctype에 대한 질의에 적합하며 XQuery는 join, ordering, 질의 결과문서 재구성(element constructors) 등 보다 강력하며 다양한 기능을 지원한다.
△XML 데이터 갱신 및 삭제: XML 인스턴스 단위의 Insert·Update·Delete뿐 아니라 XQuery 문법과 개념을 차용한 노드단위 갱신(Node Level Update) 문장을 지원한다
△API(Application Programming Interfaces): 타미노에 접근하는 애플리케이션을 위해 Java, C, Jscript, ActiveX 등을 위한 클라이언트 API를 제공한다. DOM, SAX, JDOM, Stream 형태 등을 지원한다.
△X-Node: 관계형 데이터베이스에 저장된 데이터 소스를 타미노와 연계하여 XML형태로 활용하기 위한 기능을 제공한다. 관계형 테이블의 열(column)들은 타미노 스키마의 엘리먼트 또는 어트리뷰트에 매핑된다. X-Node는 클라이언트 애플리케이션에게 분산된 기업 데이터를 마치 하나의 데이터베이스로부터 조회된 정보처럼 보이게 하는 뷰(view)를 제공한다.
△기타 툴(Tool): 네이티브 XML 데이터베이스들은 XML데이터 저장 스토리지와 검색기능과 같은 기본적인 기능 외에도 XML과 관련 표준 기반 애플리케이션 개발과 관리 툴 등 위한 다양한 부가 기능들을 제공한다. 타미노 또한 이러한 부가 기능들을 제공한다. 즉, 타미노에 저장된 XML 자료를 손쉽게 접근하고 질의 등을 수행할 수 있는 윈도 탐색기와 같은 GUI를 제공하는 X-Plorer, W3C XML 스키마 기반의 타미노 스키마를 편집할 수 있는 스키마 편집기, 표준 웹 브라우저에서 사용 가능한 GUI를 통하여 웹 기반에서 데이터베이스 생성·서버의 시작과 종료·백업과 복구 등 시스템 관리의 모든 것을 수행할 수 있도록 하는 타미노 매니저, 웹기반 정보자원 공동저작을 위한 표준인 WebDAV를 구현한 타미노WebDAV Server, 애플리케이션 개발자들이 최소의 노력으로 XML기반 애플리케이션을 개발할 수 있는 X-Application 등이 그것이다
기명신 | 펜타시스템테크놀러지 부장
현재 XML이 데이터 포맷으로 채택되어 활용되고 있는 시스템의 종류는 매우 다양하다. 예를 들어 매뉴얼·법령 등 관계형 데이터베이스 내의 테이블에 정형화해 매핑하기 어려운 각종 문서·콘텐츠 관리를 위한 시스템, 주문서나 세금계산서 등 기업간 표준을 정의하여 데이터를 교환·공유해야 하는 시스템, 여러 개의 이질적인 레거시시스템 내에 데이터를 연계하여 활용해야 하는 시스템, 메타데이터·비즈니스 프로세스와 같이 데이터를 계층적 논리구조와 함께 관리해야 하는 시스템 등이 대표적으로 활용되는 분야이다.
네이티브 XML데이터베이스들은 이러한 시스템에 적용되어 XML의 장점을 극대화하고 시스템을 성공적으로 구축하는데 도움을 주고 있는 것이다. 네이티브 XML 데이터베이스가 적용된 대표적인 몇 가지 분야의 사례를 소개한다.
문서의 관리
기업들은 각종 매뉴얼, 보고서, 절차서, 법령과 규정집, 업무 자료 등 다양한 문서들을 보유하고 있다. 대부분 기업에서는 이러한 문서들을 책이나 바인더 형태로 출판하여 배포하기 때문에 문서의 관리나 개정에 따른 재배포가 어렵고 검색이 불가능하다. 이에 따라 문서들을 전자문서관리시스템(EDMS)이나 지식관리시스템(KMS)에 보관하기도 하나, 이들은 문서를 파일 단위로 보관할 뿐 장·절 단위로 세분화하여 조회·검색하거나 관련문서를 연결하여 조회하는 등 세부적인 기능 구현이 어렵다. 따라서 좀더 자유롭고 다양하게 내용을 검색, 활용해야 하는 문서의 경우에는 해당하는 문서 특성에 맞는 별도의 시스템을 필요로 하게 된다.
문서를 자유롭게 활용하기 위해서는 문서 내 표현에 관련된 정보(글자크기, 글꼴, 색 등)는 별도로 떼어내고 문서의 논리적 구조(예: 장·절·조)와 문서 내용 정보만을 보관·관리해 문서의 논리적 구조에 따른 다양한 검색이 가능해야 한다. 과거에는 이러한 요구사항에 맞는 시스템 구축이 불가능하거나 매우 많은 비용을 필요로 했는데, XML의 등장으로 좀 더 적은 비용으로 다양한 기능을 제공하는 문서관리 시스템을 구축할 수 있게 되었다.
<그림 1>은 XML 기반 문서관리시스템의 화면이다. 목차별 조회, 업무분류별 조회, 검색, 관련문서 하이퍼링크, 권한관리, 편집, 개정승인, 개정이력 조회, 개정본 조회, 서식 미리보기·다운로드 등 문서 관리와 조회·검색을 위한 좀 더 세분화되고 다양한 기능을 사용할 수 있다.
문서관리시스템 내의 XML데이터는 XML 데이터의 두 가지 유형, 즉 데이터 중심(Data-centric), 문서 중심(Document-centric) 중에서 문서 중심 분야에 속한다고 볼 수 있다. 또한 계층적 구조의 각 노드들이 반복 요소를 갖고 있고, 하위 계층들이 재귀적으로 반복될 수 있으며, 혼합 콘텐츠(mixed-content)를 포함하고 있는 등 여러 가지 면에서 관계형 데이터베이스에 매핑하기가 어렵고, 매핑을 한다고 해도 저장과 질의 성능을 보장하기가 어려운 구조이다.
이 시스템은 XDMS(XML-based Document Management System)라는 XML 기반 문서관리 패키지로, 네이티브 XML 데이터베이스를 기본 엔진으로 하여 개발되었다. 또 문서 중심 XML을 문서 구조의 손상 없이 완벽하게 지원하는 점 뿐 아니라 XQuery 기반의 XML 검색 등 네이티브 XML 데이테베이스의 기능을 충분히 활용한 시스템이라고 할 수 있다. 실제로 XDMS는 기업은행, 수협, 인천국제공항공사 등 10여 사이트에 공급되어 규정(법령), 업무방법서, 약관, 절차서, 시방서, 매뉴얼 등의 관리에 적용되고 있다. XML 기반 문서관리는 과거 XML이 활성화되기 이전에는 개발이 매우 어려웠던 만큼 최근에 활발하게 시스템이 구축되고 있으며, 구축 후 사용자로부터도 좋은 반응을 얻고 있다.

<그림 1>XML 기반 문서관리시스템
기업간의 데이터 교환
기업간 전자상거래가 활성화되면서 주문서·세금계산서·출고의뢰서·납품서·보증서 등 기업간의 전자상거래에 수반되는 각종 문서에 대한 전자적 데이터 교환의 수요도 증가하고 있다.
XML은 기존의 EDI(Electronic Data Interchange)에 비하여 매우 저렴한 비용으로 표준화된 문서를 교환할 수 있도록 하기 때문에 데이터 교환의 표준 포맷으로 채택하는 경우가 증가하고 있다.
<그림 2>는 전자상거래에 따른 마켓플레이스, 은행과 같은 거래 상대방간 데이터 교환의 사례를 보여주고 있다. 은행·마켓플레이스와 중계시스템간에 교환되는 데이터는 XML이며, 레거시시스템까지 연계되어 처리된다. 중계시스템에서 송·수신되는 모든 메시지(XML 데이터)는 로깅(logging)이 되는데 여기에 네이티브 XML 데이터베이스가 사용된다. 관리시스템에서는 이렇게 보관된 원본 메시지를 조회하거나 메시지 송수신 내역, 송수신 통계 등을 조회한다.
B2B 데이터 교환에서는 XML데이터가 수신되는 즉시, 또 송신 직전에 원본 그대로 저장되어야 한다. XML데이터를 분해하여 관계형 데이터베이스에 저장하게 되면 XML데이터를 테이블에 저장하기 위해 분해하는 순간 원본이 손상된다고 볼 수 있기 때문에 원본을 그대로 저장한다는 취지에 맞지 않는다. 그렇다고 BLOB(Binary Large Object)이나 CLOB(Character Large Object) 형태로 저장하면 로깅된 XML 데이터에 대한 검색과 활용이 어렵다. 예를 들어 업무별 메시지 송·수신 내역을 조회하거나 송·수신 통계를 내기 위해서는 메시지 헤더와 본문의 일부 노드만을 추출해 내야 하는데 BLOB이나 CLOB은 부분범위 추출이 불가능하다. 네이티브 XML 데이터베이스는 원본을 손상 없이 저장하고, 이 데이터에 대한 검색과 부분 범위추출 또한 가능하며 엘리먼트·어트리뷰트에 대한 변경이 유연하여 기업 간 데이터 교환에서 데이터 로깅 및 관리 용도에 적합하다고 할 수 있다.
백엔드(back-end) 데이터 통합
기업 내에는 다양한 언어와 시스템 환경의 애플리케이션들, ERP·CRM과 같은 패키지 시스템 등 여러 이질적인 시스템들이 함께 운영되고 있다. 신규로 인터넷을 통해 서비스될 시스템을 구축하기 위해서는 레거시 시스템이나 패키지 시스템의 데이터를 연계할 필요가 있다. 이질적인 백엔드 시스템들을 연계하기 위한 표준 포맷 또한 XML의 활용 분야 가운데 하나이다.
<그림 3>은 백엔드 시스템을 XML 포맷을 이용해 연계한 사례를 보여준다. 영국의 전기제품 유통업체인 A사는 온라인 상점 시스템을 신규로 개발하며 XML을 도입하였다. 온라인 상점의 제품 카탈로그는 XML 형태로 관리된다. 카탈로그 가격정보는 백엔드 시스템에서 변경될 때마다 가져오며, 재고 정보는 주문할 때 실시간으로 확인·변경된다.
백엔드 시스템과의 연계는 웹서비스(Web Services) 기반으로 이루어진다. 백엔드 시스템과 온라인 상점간의 통신은 SOAP(Simple Object Access Protocol) 메시지로 이루어지며, EntireX라는 미들웨어가 사용된다. EntireX는 레거시 시스템을 SOAP 메시지로 통신할 수 있도록 한다. 이 시스템에서 네이티브 XML 데이터베이스는 스테이징 서버(staging server)로서 활용된다. 백엔드 시스템에서 상품정보를 XML 형태로 미리 가져와서 보관하고 있다가 온라인 상점에 전자 카탈로그로 서비스를 하기 때문에 요청이 있을 때마다 백엔드시스템에서 직접 상품정보를 가져오는 것보다 빠른 응답속도를 제공할 수 있다.
<그림 4>는 RDBMS 연계모듈을 통한 백엔드 시스템 통합 사례이다. 국내 모 제조업체의 사례로, 자재수급·생산진도관리·검품·출고 등 기존에 수작업으로 이뤄지던 협력업체와의 정보교환을 전자화하기 위해 XML이 도입되었다. 협력업체는 웹을 통해 서비스되는 협력업체용 공유시스템을 이용하여 정보를 입력하거나 조회할 수 있고, 이 공유시스템은 XML 기반으로 구축되었다. 백엔드 시스템의 데이터는 실시간으로 XML로 변환되어 공유시스템 내 네이티브 XML 데이터베이스에 보관된다. 협력업체에서 변경한 XML 데이터 역시 실시간으로 변환되어 백엔드 시스템의 관계형 데이터베이스에 저장되도록 구성되었다.
이밖에도 네이티브 XML 데이터베이스의 활용분야는 다양하다. 국내 모 교육관련 업체에서는 교육관련기관 및 학교간에 교육용 콘텐츠의 메타정보를 교환하는데 XML 포맷을 채택하였으며 수집된 XML 메타정보는 네이티브 XML데이터베이스에 저장되어 검색·조회되고 있다.
또한 국내외의 금융관련 보고서, 병원의 환자 기록, 설비데이터관리, 비즈니스 프로세스 관리 등 다양한 분야의 시스템들이 XML 기반으로 구축되고, 저장소로서 네이티브 XML데이터베이스가 사용된 사례가 있다. 앞으로도 XML의 적용분야는 점점 늘어날 것이며, 이에 따라 네이티브 XML 데이터베이스도 그 역할이 확대되어 갈 것으로 예상된다.

<그림 3> 벡엔드 데이터의 통합

====>
XML이 하는 일은 무엇일까요? 간단히 말하자면, (사실 XML에 대해 설명하려고 하면 복잡하게 설명하려 하는 경향이 많이 있습니다.) XML은 인터넷을 통해 통용되는 되는 서비스, 제품, 비즈니스 거래에 관련된 정보를 다루면서 사용하기 쉽고 공유되는 데이터 구조를 만드는 것을 가능하게 합니다. 서비스에 지장을 주지 않으면서 여러 가지를 할 수 있는 장점이 있는 것입니다. 더 간단히 말해서 XML은 어떤 과정을 정의하고 데이터를 완전하게 옮기면서 특정한 고객 층에 더 적합하도록 정보를 관리할 수 있게 합니다.
작은 기업의 경우 XML을 통해 완벽한 EDI를 구현할 수 있게 됩니다. 다른 이들에게는 여태까지는 상상할 수 없었던 다양한 정보 처리의 방식들을 볼 수 있습니다. XML로 인해 자료 관리 시스템, 검색 엔진, 이메일 시스템, 온라인 비즈니스가 완전히 변하게 될 것으로 예상됩니다.
# by | 2006/09/29 16:10 | DigitalWorld.. | 트랙백 | 덧글(0)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]