XML 데이터베이스
IT위키
더 많은 작업
XML 데이터베이스(XML Database)는 XML 문서를 저장하고 XPath·XQuery 같은 XML 질의 언어로 검색·수정할 수 있게 한 데이터베이스로, 관계형 DBMS 에 XML 기능을 더한 XML 지원 데이터베이스와 XML 문서 자체를 저장 단위로 삼는 네이티브 XML 데이터베이스로 나뉜다.
2000년대 들어 웹 서비스(SOAP), 전자문서, 기업 간 데이터 교환이 XML 로 이루어지면서 XML 을 그대로 저장하고 질의할 필요가 커졌다. XML 은 계층 구조에 순서가 있고 구조가 문서마다 조금씩 다른 반구조적 데이터라, 표 하나에 담기 어렵다. 이를 관계형 DB 에 맞춰 넣을지, XML 에 맞는 저장소를 따로 둘지에 따라 두 계열이 생겼다.
| 구분 | XML 지원(XML-enabled) DB | 네이티브 XML(Native XML) DB |
|---|---|---|
| 저장 단위 | 테이블·행·컬럼. XML 은 쪼개 넣거나(분해 저장) XML 타입 컬럼에 넣는다 | XML 문서가 논리적 저장 단위다. 트리 구조를 그대로 저장한다 |
| 내부 모델 | 관계 모델 | XML 데이터 모델(노드 트리) |
| 질의 언어 | SQL, SQL/XML, 컬럼 안에서는 XQuery | XPath, XQuery, XQuery Update |
| 알맞은 데이터 | 구조가 일정한 데이터 중심 XML(주문서, 거래 내역) | 구조가 들쭉날쭉한 문서 중심 XML(계약서, 기술 문서, 출판물) |
| 장점 | 기존 DB 의 트랜잭션·보안·백업을 그대로 쓰고 관계형 데이터와 조인할 수 있다 | 문서 순서·혼합 콘텐츠·주석이 보존되고 경로 질의가 빠르다 |
| 단점 | 매핑 설계가 필요하고 재조립 비용이 든다 | 관계형 데이터와 함께 쓰기 어렵고, 범용 DBMS 만큼 성숙하지 않다 |
| 예 | Oracle XML DB, IBM Db2 pureXML, SQL Server 의 xml 타입 | eXist-db, BaseX, MarkLogic |
- 분해 저장(shredding) : 요소·속성을 테이블 컬럼에 나눠 넣는다. 구조(스키마) 기반 매핑과 모델(노드) 기반 매핑이 있다
- 통째 저장 : 문서 전체를 CLOB 또는 XML 타입 컬럼에 넣는다
- XML 타입 : DBMS 가 XML 을 파싱한 이진 트리 형태로 보관하고, XML 인덱스(경로·값 인덱스)를 둔다. SQL/XML 의 XMLQUERY·XMLTABLE 로 질의한다
- 매핑 방식의 자세한 비교는 XML 질의 언어 문서의 '관계형 데이터베이스와의 매핑' 절에 있다