 |
예제로 배우는 XMLTABLE |
 |


본론에 들어가기에 앞서 XML에 대해 생각해보면 필자가 생각하기에 꽤 오래 전부터 문서표준화의 기준으로 금방 자리매김할 것처럼 대두되었던 기술인데, 국내에서 XML 활용 현황을 보면 작성되는 문서 포맷상으로도 HTML이나 일반 문서 포맷들보다 그 사용 범위가 아직 체감적으로도 느끼지 못할 만큼 제한적으로 쓰이는 편이고, 많은 데이터베이스 환경에서는 그보다 더 훨씬 열악해 일반 텍스트와 같은 수준으로 데이터가 처리되는 실정입니다. 그렇다면 XML 왜 이렇게 기술이 시장에서 성장하지 못하고 머물러 있는 것일까요?
역사적으로 봐도 10년이 훌쩍 넘은 이 기술이 겪어온 그 동안의 문제점이라면 XML 생성 자체로만 보면 어렵지 않지만 이 문서를 구조화하고 처리하는 데 추가 기술이 요구되고, 표준화된 한 가지 방법으로 제공되지 못한 점, 특히 데이터베이스 레벨에서 기존 관계형 데이터와 함께 XML을 생성, 저장하고 처리해주는 표준화된 기능이 제대로 제공되지 못한 점을 들 수 있습니다.
그럼에도 불구하고 근래 들어 표준화된 데이터 메시지 교환 목적을 위해 XML의 필요성이 요구되고, 기존 텍스트 형식으로 저장하고 처리하던 XML 문서가 점차 많아지고 대형화되면서 더 이상 텍스트 처리 방식으로는 XML 처리 성능을 보장받을 수 없는 문제로 인해 네이티브 XML 처리 방식에 대한 요구가 생겼습니다. 그러나 그렇게 되면 위에서 열거된 문제를 겪게 될 수도 있는 어려움이 있습니다. 그렇다면 이 문제를 처리할 방법은 없을까요?
그 동안 네이티브 XML을 처리하는 데이터베이스가 시장에 출시되어 네이티브 XML 방식으로 처리할 수는 있었지만, 기존 RDBMS와 연계하기 위해서는 추가 인터페이스가 필요하고 관계형 데이터와 통합 SQL 레벨에서 처리하기 힘든 것이 단점이었습니다. 그러나 IBM DB2 9에서 제공하는 pureXML 기술을 이용하면 이 문제를 해결할 수 있습니다.
DB2 9은 pureXML 기술로 DB2 쿼리 엔진 기반에서 XML을 완전히 지원하도록 SQL 문장 수준에서 xquery, xpath 표현식이 통합 사용되어 XML 생성, 조회, 수정, 삭제가 쉬우며 효율적인 처리와 성능 보장을 위한 각종 함수 및 XML 인덱싱, 분할과 같은 기능을 제공하고 이클립스와 완전히 통합되는 개발 환경과 도구들을 같이 제공함으로써 기존 DBA와 애플리케이션 개발자들이 XML을 이용한 빠른 애플리케이션 개발에 용이성을 제공합니다.
이 글에서는 SQL/XML 표준에 근거하여 DB2 9에서 지원하는 XML 처리 기능 중 하나인 XMLTABLE 함수 기능 활용에 대한 내용을 소개하려 합니다.
pureXML에서 제공하는 XMLTABLE 함수를 이용하면 XML 문서를 관계형 테이블 혹은 XML과 관계형 데이터가 혼합된 하이브리드형 관계형 테이블로 변환할 수 있습니다, 또한 처리 성능을 높이거나 관리 또는 가독성을 위해 대형 XML을 분할할 수도 있습니다. XML 인덱스를 생성해 XML 처리 성능을 향상시킬 수 있습니다.
어떻게 할 수 있는지는 아래의 XMLTABLE 예제들을 통해 그 해답을 확인하기 바랍니다. 또한, developerWorks 내에 그 밖에 XML 처리 기능에 대한 기사가 무궁무진하므로 XMLTABLE 기사 내용을 습득하면서 한번쯤 둘러보는 것도 좋은 시간이 될 것입니다.
-
1회: 관계형 포맷으로 XML 데이터 가져오기
XMLTABLE 함수의 주요 기능인 XML을 관계형 테이블 형태로 변환하는 기능에 대한 내용으로 쿼리상에서 관계형 테이블로 변환 시 XML 소실 또는 중복 엘리먼트 처리에 대한 내용과 XML 네임스페이스를 사용해 필요한 특정 네임스페이스에 해당하는 엘리먼트만을 추출하거나 전체 네임스페이스 레벨에서 추출하는 것에 대한 예제를 제공합니다.
-
2회: DB2와 XMLTABLE을 사용하는 일반 시나리오
XMLTABLE 함수를 이용해 XML 문서를 엘리먼트 단위로 분할하거나 XML 문서를 관계형 데이터로 나눠 다른 관계형 테이블로 저장하는 예제를 제공합니다. 또한, XML을 관계형 데이터와 XML 데이터로 분할하여 하이브리드형으로 관계형 테이블로 저장하는 예제와 XML을 관계형 뷰로 저장하고 XML 인덱스 기능과 연계하여 처리 성능을 효율화하는 방안을 제시합니다.
|
 |
|
 |