XML on HTTP, Part 2: XML 문서의 대용량 처리 기법(1)
|
 |


[오픈 디벨로퍼웍스]는 여러분이 직접 필자로 참가하는 코너입니다. 이번 연재에서는 XML 문서 대용량 처리 기법에 대해 알아봅니다.
가상의 ‘3K 은행 ' 에서 고객이 웹 또는 모바일 장치 (PDA, 휴대전화 등 ) 를 통해 자금이체 처리를 하는 상황을 가정해 보자 . 고객은 다음과 같은 ‘ 자금이체 정보입력 ' 이라는 웹 폼을 통해 데이터를 입력한다 . 물론 ‘ 자금이체 정보입력 ' 폼은 3K 은행에서 인터넷 뱅킹을 위해 개발한 웹 폼이다 . 이 글에서 소개하는 개발 방법론이 일반적인 정보시스템 개발 방법론과 다른 점은 이 ‘ 자금이체 정보입력 ' 폼에서 입력된 정보가 데이터베이스에 직접 생성되지 않고 먼저 XML 파일로 생성된다는 점이다 ( 물론 XML 파일과 데이터베이스에 동시에 데이터를 생성할 수도 있다 ).

위 그림에서 ①의 방법은 웹에서 사용자로부터 데이터를 입력받아 데이터베이스에 데이터를 생성하고 웹 프로그래밍을 통해 입력된 결과를 조회하는 방법이다 . ② 의 방법은 웹에서 사용자로부터 데이터를 입력받아 XML 을 생성하는 방법으로 이 XML 파일은 XSL 과 결합하여 웹에서 조회가 된다 . 지금부터 설명하는 방법은 ② 의 방법으로 대용량 데이터를 처리하는 방법이다 . 그럼 다음과 같은 웹 폼이 있다고 가정해 보자 .
웹 폼의 소스는 다음과 같다.
위의 웹 폼은 일반적인 웹 폼과 다를 바가 없다 . 하지만 다른 점이 있다면 아래 소스가 추가되어 있다는 것이다 .
각 행을 자세히 설명하자면 다음과 같다 .
* 웹에서 XML 을 생성하기 위해 원본 XML 파일을 선언하는 부분
* 폼의 이름을 "BaseXML" 로 하고 [Save] 버튼을 클릭하였을 때 "bxfXmlSaveEx()" 함수를 실행
* 웹에서 원본 XML 을 참조하여 입력된 데이터를 받아 복제 XML 을 생성하기 위한 XML 생성 엔진 선언
위에 선언된 소스를 일반 웹 폼에 추가함으로써 XML 을 웹에서 생성하여 타깃 서버로 파일을 전송할 수 있다 . 위의 ‘ 자금이체 정보입력 ' 웹 폼에서 참조하는 원본 XML(account_sample.xml) 파일의 구조는 다음과 같다.
만약 사용자가 다음과 같은 정보를 입력하고 저장을 했다고 하자 .

타깃 서버에는 위의 원본 XML 을 참조하여 복제한 인스턴스 XML 파일이 다음과 같이 생성될 것이다.
123-45-67890
****
우리은행
123-456-02-789
200000
2008-04-15
|
위의 인스턴스 XML 파일은 이미 "account_sample.xsl" 이라는 양식이 연결되어 있으므로 웹 브라우저에서 파일을 열면 다음과 같이 표현될 것이다 .

웹 폼에서 XML 파일을 HTTP 프로토콜 상에서 생성하려면 DOM(Document Object Model) 을 사용하거나 XForm 을 사용하는 것이 현재까지 나와 있는 방법이다 . 하지만 DOM 기술은 난해하고 XForm 또한 일반 개발자들이 새로 배우기에는 장벽이 존재한다 ( 한국 developerWorks 의 XML 의 미래 ( 한글 ) 기사를 참고하라 ). 설사 두 기술을 모두 배우더라도 DOM 에는 메모리 문제가 존재하고 XForm 을 사용하여 XML 을 생성하려고 하더라도 추가적인 애플리케이션이 필요하다 .
XML 은 N 차원의 데이터 속성을 가지고 있다 . 이로 인해 혼합에 의한 복잡성 (combination complexity) 이 존재한다 . 이것이 XML 기술의 실체를 접근하는 데 있어 가장 중요한 키워드다 . 많은 개발자들이 범하기 쉬운 오류는 2 차원적인 정보를 다루는 기술 (DB, HTML, DOM 등 ) 로 N 차원의 XML 문서를 만들려는 것이다 . 아래 그림에서 보듯이 XML 문서가 element(Root 는 제외 ) 세 개를 가지고 있다면 만들 수 있는 XML 문서는 18 개다 .

이것을 공식으로 표현하면 N*N! 이다 (N: XML 의 element 개수 ). 세 개의 element 를 순서와 계층 (hierarchy) 을 변경하면 완전히 다른 문서가 된다는 것이다 . DOM 을 사용한다면 세 개의 element 를 가지고 18 가지의 다른 종류의 XML 로 생성하기 위해 18 가지 프로그래밍이 필요하다 .
XML on HTTP(ActivaXML 방법론 ) 를 사용한다면 개발자들이 해야 할 18 가지의 프로그래밍 개발 노력을 XML 생성 엔진이 자동으로 처리하게 된다 . 또한 XML 을 생성하기 위한 웹 폼을 기존의 웹 폼 개발자들이 늘 사용하는 방법을 그대로 사용하고 복제 / 치환이라는 방법을 사용함으로써 대용량 데이터 처리를 위한 개발 생산성을 높이고 비용을 절감하는 효과를 누릴 수 있다 .
다음 회에는 웹에서 생성된 XML 파일을 대용량 트랜잭션 처리가 필수적인 은행 업무에 적용하는 경우를 설명하고 이에 대한 장단점을 설명하겠다 .
이 문서 북마킹 하기

|
| 이제 전문가의 글을 단순히 ‘보는 것’에서, 직접 여러분이 developerWorks의 필자가 될 수 있습니다. IBM developerWorks를 통해 공유하고 싶은 지식이 있으신 분들은 원고 기획안을 접수해주세요. 채택되신 분께는 소정의 원고료를 드립니다. |
|
|
|
[지난 Open dW 보기] |
|