|
2. XML의 생성과 사용 |
이번에 소개해 드릴 내용은 XML을 생성하고 한번 사용해 볼 것입니다. 역시나 아직까지는 SQL서버와 관련된 이야기 보다는.. XML을 조금더 소개해 드리는 시간입니다.
간단한 XML문서를 하나 생성해 보겠습니다.
압축을 푸시면.. xml_start.xml 이라는 화일이 있을 것입니다. 이 화일을 인터넷 익스플로러에서 여시면..
이러한 화면을 보실 수 있을 것입니다. 보시는 바와 같이 XML문서는인터넷 익스플로러5.0이상에서 열어 보실 수 있으며 XML문서는 이렇게 계층형데이터 구조로 생성이 되게 됩니다. 물론 메모장 같은 툴로 열어 보셔도 됩니다. 뭐 좋습니다. 조금더 문서를 봐 보도록 할까요? XML의 여러 태그들은.. 반드시 중첩 구조가 완벽해야 합니다. ^_^ 닫는 태그와 여는 태그가 정확해야 하지요. 그리고, 보시는 바와 같이 태그 이름이 특이합니다. J스크립이나.. VB스크립.. HTML에서 사용되는 각각의 태그명들이 사용 되었으나.. 저 태느는 코난이의 것입니다.- HTML이나 그외 스크립트로 해석되지 않으며.. 저 태그명은 코난이가 정의하고 생성한 것이라는 겁니다. 이점이 상당히 중요한 부분이 됩니다. 또한 SQL서버와 관련되는 부분이지요. 나머지 이야기들은 자신이 조금더 시간을 XML에 투자해 보시면 될듯하며... 좀더 건너 뛰어서.. 저 XML문서를 우리가 익히 보는 웹페이지처럼 봐 보도록 하지요. 이때는 XSL이라는 화일과 연계시켜 보면 됩니다.
압축을 풀면 나오는 xml_start_1.xml 화일을 인터넷 익스플로러에서 열어 보시면
대충 이런 화면이 보일 것입니다. 으음.. 심플한 HTML화일 처럼 보일지 모르겠으나.. 마우스 우버튼 -> 소스보기를 봐 보시면? 분명히 XML문서 입니다. - 그렇습니다. XML문서는 데이터와 보여지는 부분이 별개로 되어 있습니다. 이는 XML문서에서 보이는.. XSL링크에서 보여집니다. <?xml:stylesheet type="text/xsl" href="xml_start_1.xsl"?> 게 되어 있는 문자열로 해당하는 XSL화일에 연결되어 XML문서가 우리에게 적절하게 보여 진다는 것이지요. 해당하는 XSL화일을 열어 보시면? 대단히 난해한듯한 방식으로 되어 있습니다. 화면에 보여주는 부분이 어렵지요. 아마 이부분이 어려워서.. XML 웹 저작 도구가 나오기 힘든 건지도... 물론 XSL화일 대신 CSS화일을 연결해서 적절하게 XML문서가 보여지게 할 수도 있지만.. 저희는 XML은 바로 데이터!!! 라는 부분에 초점을 맞추므로.. 이정도만 하겠습니다. 그렇다면 여기서 하나만 더... 저 XSL화일을 약간 더 수정해서 조금 더 이쁜 화면으로 만들어 보는 것은 어떨지요? 압축을 풀면 나오는 화일의 xml_start2.xml 화일을 열어 보면?
대략 이렇게 변화해 있습니다. 1번 문서와 2번 문서의 차이는 무엇일까요? ^_^ XML문서에서는? 연결되는 XSL화일이 틀릴 뿐입니다. XML문서를 메모장으로 각각 열고 확인해 보세요. XSL화일은 무엇이 틀리냐? 2번 XSL화일에서 추가된 것은 단 두줄입니다. <SPAN style="font-weight:bold"> message 태그에 대해서.. 1em만큼의 여백을 주고 글꼴을 두껍게 / 돋움체로 보이도록 처리했습니다. - 조금만 더 생각해 본다면? 하나의 XML문서를 여러개의 XSL화일과 연결.. 사용자에게 적절하게 보여 줄 수 있다는 것이지요. ^_^ 조금더 바꿔서 말씀을 드리자면??? 약간 오버하는 것처럼 보일수도 있지만..
1. XML데이터로 일반 데스크탑 사용자에게 서비스할 XSL화일을 생성하여 아래와 같은 화면을 데스크탑 사용자에게 뿌려준다.
2. 물론 같은 XML문서이지만.. 모바일 사용자들에게 서비스를 하기 위해 좀더 모바일 사용자에게 적절한 처리를 해서.. -빠른 속도, 가독성을 주는 페이지를 생성해야 겠다.. 라고 한다면?
(참고 - 예시화면이며 실제 서비스와는 차이가 있습니다. 이런 식의 화면을 XSL과 함께 사용해 무선 모바일 사용자에게 뿌려 줄 수도 있을 것입니다. - 하지만 현재까지 저녀석!!! 바로 XSL화일을 가지고 사용자 인터페이스를 생성하는 것이 대단히 어렵습니다. T.T 이렇게 여러가지 방식으로 사용이 가능하지요. 잊지 마세요. 데이터는 하나!!! 보여주는 화면이 틀려질 뿐입니다.!!!
음.. XML은 참 어렵습니다. - 기본적으로 이해하셔야 할 부분만을 언급해 드렸으며.. 상세한 이야기는 다른 XML과 관련된 책을 참고해 보시길 바랍니다. 맛보기도 안되는 내용만 설명을 해 드렸네요. ^_^;;;
자.. 이정도로 XML에 대한 소개를 접고.. 다음부터는 본격적으로 SQL 서버와 붙는 부분에 대해서 상세히 봐 보도록 하겠습니다. 수고하셨습니다. ^_^ |
***************************************************************************
3. SQL서버와 XML문서 | |||||||||||||||||||||||||||||||||||||||||||
SQL서버와 이 XML이 과연 무슨 관계가 있는지 알아 보도록 하지요..
XML은 보여 드린바와 같이 데이터 입니다. SQL 서버와 비슷한 점이 생각 나시나요? 맞습니다. 둘다 데이터를 다룬다는 것입니다. XML은 데이터로 사용하기 힘들것 같다구요? 아닙니다. SQL서버 이상으로 완벽하게 모든 데이터를 표현할 수 있습니다.
이렇게 SQL서버에 데이터가 저장 되어 있다고 생각해 보겠습니다. 그렇다면 저런 간단한 데이터는 어떻게 XML로 표현될까요?
이렇게 표현이 가능합니다. - 이런 표현을 속성중심적(Attribute-Centric)표현이라고 하며 또는...
이렇게 역시 표현 가능하며 이는 요소중심적(Element-Centric) 표현이라고 합니다. 허허.. 단순히 표현 방식이 틀려서.. 속성으로 값을 표현하는 것인가? 아니면 요소로 값을 표현하는 것인가의 차이일 뿐이지요. 하지만 분명히 데이터를 저렇게 표현 가능합니다. 2차원 관계형 데이터 -> XML 계층형 데이터로 변환이 가능한 것이며 물론 XML 계층형 데이터 -> 2차원 관계형 데이터로 변환 역시 가능한 것이지요.
"음.. 이렇게 단순히 2차원 데이터를 XML로 표현은 쉬운것 같지만.. SQL에서 대단히 많이 사용하는 JOIN 데이터는 어떻게 XML로 표현 하나요?" 네.. 역시나 불가능하다면 말이 안되며.. Orders 테이블
Items테이블
이 이렇게 구성되어 있을때.. 양측을 OrderNo로 조인할 수 있겠지요. 이때 XML데이터는?
이렇게 표현될 수 있습니다. - 속성 중심적 표현이며 다르게 얼마든지 가능합니다. 못할게 없다는 것이지요.. 초점을 맞출 그림을 보여드리면? 바로 이것입니다.
이렇게 보시는 바와 같이.. 관계형 데이터 -> XML -> 관계형 데이터로 처리한다는 것이지요. 그리고 이 작업을 수월하게 해주는 것이 바로 SQL2000의 XML 통합 기능입니다. 한발자국 정도 핵심에 다가 섰네요. "에고고.. 저게 다 인가요?? 너무 단순하네요..?!!?!!" 처음에도 말씀드렸지만 XML은 만만한 녀석이 아닙니다. 이러한 단순함이 실제 비지니스 프로세스와 엮여서 다양한 작업이 일어난다는 것이죠. 예를들면..
(출처 - MS의 홍영준님의 PT중 일부 입니다.) 이렇게.. 비지니스 프로세스에서 데이터를 주고 받을 경우 사용이 가능하지요. 조금더 생각해 보면 다양한 비지니스 프로세스로 이용이 가능합니다. 또한 MS의 BizTalk서버는 이를 이용 다양한 데이터 통합을 지원하는 비지니스 프로세스를 구축할 수 있도록 도움을 줍니다. 특히 국내의 적용 사례는.. 일종의 완전한 Web-EDI솔루션으로 비즈톡과 XML을 이용하는 좋은 사례를 보여주니 많은 도움 되시길 바랍니다. 그뿐아니라.. XML은 순수한 텍스트 형태의 데이터이기 때문에 얼마든지 Firewall을 넘어 데이터를 주고 받을 수 있습니다. 모든 데이터의 XML처리를 위해서.. SOAP(Simple Object Access Protocol) UDDI(Universal Description, Discovery and Integration) WSDL(Web Services Description Language) 을 이용해 기존의 시스템을 뭉개고 새로 구축할 필요가 없는 완전한 데이터 통합을 얻어낼 수 있지요. 이 데이터 통합이라는 것이 바로 XML의 큰 매력이라는 것입니다. - 위의 세가지는 .NET에서 사용될 녀석들입니다.
여러가지 XML과 관련된 이야기를 들었으며.. 그외 SQL서버의 XML통합기능에서 사용되는 몇몇 키워드를 조금더 알아 보면...
SELECT ... FOR ... XML 간단히 일반 SQL의 SELECT구문 뒤에 FOR XML 이라고 붙이면? XML 형식의 데이터가 리턴 됩니다. - SQL서버 엔진 자체에 XML처리 기능이 붙어 있는 것이지요.
ADO에서 XML데이터 접근 XML역시 데이터입니다. - 누누히 말씀 드렸지요. 어플리케이션에서 생성된.. 또는 이미 존재하는 XML데이터에 연결후 이 데이터를 적절히 처리하는 부분도 있습니다. ^_^
IIS에 SQLXML 지원 구성 많은 분들이 알고 계실 것입니다. IIS에 가상 디렉토리를 하나 구성해.. 이 가상디렉토리에서 SQL서버의 데이터를 쉽게 XML로 처리하거나.. 등등의 여러 작업을 하는 것이지요.
XML 템플릿(Template) 사실 가장 많이 사용되는 부분으로.. IIS에 SQLXML지원 구성에.. Template을 생성하고 이곳에 XML화일을 두는 것입니다. XML 화일 내부에는 SQL쿼리가 들어가며.. ASP나 PHP처럼 원본 쿼리를 숨길 수 있지요. 아마도.. 개발하시는 분들은 많이 이부분을 사용하게 될 것입니다. ^_^
XSD(XML Schema Definition) 이녀석은 2001년 5월 표준안이 지정된 것으로.. 그전까지는 DTD / XDR으로 사용 되었습니다. 간단히 XML데이터에 제약을 가하여 정확한 데이터를 항상 유지하게 도움을 주는 녀석이라고 보시면 좋습니다. 기존에 사용하던 DTD는 XML과 DTD문법을 모두 알아야 한다는 단점이 있었지요.. XDR은 MS에서 제안한 것으로 XML문법으로 XML데이터를 정의하는 방식이었으며 이 XDR과 XSD는 대단히 유사합니다.- W3C가 MS의 XDR을 많이 참고해 생성했기 때문입니다... 뭐 이제는 XSD가 확실하니 이녀석을 많이 공부하시길 바랍니다. 아.. 참고로..이미 XDR을 사용하신 분들이 XSD로 변환을 위해서..... XDR스키마를 XSD스키마로변환문서(MS링크) 또한 XSD는 MSXML4.0버젼부터 완벽하게 지원합니다. MSXML4.0(MS링크) MSXML은 IE에 포함되는 XML파서로 XML구문 규칙을 판별하게 되는 녀석이며.. 2002년 1월 현재 4.0버젼이 릴리즈 되어 있습니다.
OpenXML 이녀석도.. 주요한 SQL2000의 XML지원 기능의 일부로.. 데이터 수정에 가끔 사용됩니다. - XML데이터 수정에 사용되는 것으로.. 이는 또한 Updategram이라고 하는 녀석으로 많이 옮겨가는 상황이니.. Updategram을 주로 참고해 보시길 바랍니다.
Updategram 데이터 삽입 / 수정 / 삭제시 사용하게 되며.. Before와 After라는 태그 이미지를 이용해.. 이 변경 작업을 수행합니다. 참고로 이 updategram은.. SQLXML이라고 하며 SQLServer2000 Web Release2 For XML(MS링크) 또는 웹릴리즈 1 이상을 설치해야만 사용이 가능 하며 SQL2000의 버젼에 따라 한글 / 영문 릴리즈를 정확히 설치 하셔야 합니다. (제가 이전에 영문만 나온걸 보고 영문 설치했다가 SQL서버를 다시 밀었습니다. T.T) 2002년 1월 현재 SQLXML은 릴리즈 버젼2 까지 나와 있으며 3는 베타 중입니다.
간단한 updategram의 샘플을 보여 드리면?
이렇게 사용이 됩니다. Before이미지에 조건을 주고.. After이미지에 변환할 값을 지정하면 되는 것이지요.
Bulk XML 컴퍼넌트 SQL서버에는 Bulk Insert나 BCP가 있는 것처럼... 대용량의 XML데이터를 다루기 위한 Bulk XML역시 있습니다. - DTS강좌를 참고하시길 바랍니다. updategram이 대단히 많은 데이터를 처리하기에는 부적적하기 때문입니다. ^_^ 이 Bulk XML은 컴퍼넌트로 VB등에서 호출해 사용하셔야만 합니다. 사용되는 예제는
식으로 사용이 되며 자세한 샘플은 다른 책이나 MS사이트를 참고 하시면 도움 되실 겁니다. ^_^
Biztalk Server 으음.. 2002년 1월 현재 Biztalk에 대한 정보는 많지 않습니다만.. 제가 몰라서... -_-;; 제가 알고있는 지식한도 내에서 약간 적어 보겠습니다. 비즈톡의 서비스는 크게 두가지로 나뉘어집니다. 1. 오케스트레이션 2. 메세징 오케스트레이션은 구성요소 / 비즈톡 시스템의 통합을 구성하는 그림을 말하며 비지오라는 툴로 이 구성도를 작성할 수 있습니다.
비즈톡 오케스트레이션 디자이너로 구성된 승인 화면 출처 : Microsoft - MSDN 또한 메세징 서비스로.. 일종의 큐시스템처럼.. 들어오는 데이터 조절 / 들어온 데이터 (EDI문서)를 XML데이터로 변환 / 여러가지 처리 작업 / 적절한 문서로 변환후 / 문서 전송 이러한 작업이 가능합니다. 중요한것은.. 비즈톡은 현존하는 모든 문서를 다룰 수 있으며 내부적으로 이 현존하는 모든 문서들을 XML로 변환후 다양한 매핑 / 전처리 / 후처리를 해서.. 목표 문서(EDI)로 생성후 필요한 장소에 전송할 수 있다는 점이지요. 자세한 사항은 MS의 비즈톡 사이트를 참고해 보시길 바랍니다.
자.. 뭐 이렇게 여러가지 키워드 들에 대해서.. 간단간단하게 알아는 보았습니다. 대충 느낌이 오실 겁니다... XML.. 쉽지 않습니다. 계속 준비하시고 공부하셔야 합니다. 자.. 이정도로 맛보기를 그치도록 하구요.. 실제 SQL서버에 이를 구축하고 사용하는 여러 예제들을 조금더 살펴 보도록 하겠습니다. ^_^ |
***************************************************************************
4. SQLXML사용을 위한 IIS설정 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
많은 SQLXML의 내용을 보셨네요. 이번에는 실제로 SQLXML을 구성해보고.. 여러가지 방식의 실제 XML데이터를 불러 보는 테스트를 해 보도록 하겠습니다. 미리 조금더 말씀 드리자면... 이 IIS에 XML지원 구성을 설정한후.. 데이터를 불러 보고.. 자시고 하는 것이.. 전부는 아닙니다. 잊지 마시길 바랍니다. ^_^
먼저 자료실 이곳에서.. SQLXML2.0을 받아 설치 하세요. ^_^ 그리고.. Nwind 샘플코드 를 받으세요. 그리고 c:\nwind에 압축을 풀어 두세요.
자신의 SQL서버가 한글버젼이면.. 한글(KOR)을.. 영문이면 영문(ENG)를 설치 하세요. 그러면? 다음처럼 프로그램에 SQLXML2.0이 추가되어 있을 것입니다.
네.. 수행하시고.. IIS에서 SQLXML 지원을 위한 설정을 해 보겠습니다.
이렇게 가상 디렉터리를 선택합니다.
일반 설정 화면입니다. 가상디렉토리 이름은 저처럼 nwind라고 하시고.. 로컬 경로를 코난이처럼.. 적절하게.. 하나의 디렉토리를 생성 하시고.. 해당하는 디렉토리를 지정해 주세요. - 코난이는 C:\에 nwind라는 폴더를 생성후 이 폴더를 지정했습니다. - 여기에 저희의 샘플 폴더를 둘 것입니다. ^_^
적절한 보안 옵션으로.. 코난이는 저렇게.. 다음으로 로그온 하게 했습니다. 실제 프러덕션 서버에서는 적절한 보안 권한을 줘야 하겠지요. 보시기엔 단순한듯 하지만 여기서 적절히 조합하여.. 트러스트된 모델 / 가장 / 위임 모델을 사용할 수 있으니 적절히 자신의 프러덕션 서버에 맞게 보안을 설정 하시면 됩니다.
데이터 원본을 지정 하셔야 합니다. - 코난이의 경우는 이렇게.. 서버명이 KONAN입니다. - 자신에게 맞게 넣으시고.. 사용할 데이터베이스는.. 이렇게 Northwind 데이터베이스를 선택 했습니다.
설정탭의 지정 입니다. 먼저.. 첫번째 sql = .. 이녀석은.. URL쿼리를 의미합니다. 간단히 설명 드리면.. 인터넷 익스플로러의 URL주소 넣는 곳에다가..
이런식의 ?sql=SELECT ... 구문을 이용하는 것을 말합니다. - 수행안됩니다. ^_^;; 따악~~~ 보시기에도? 사용 안하게 될것 같다는 느낌을 받으실 겁니다. 테이블이름 / 컬럼 이름 등의 DB구조가 그대로 보이게 되기 때문이지요. ^_^ 보통 이 가상디렉토리 구성이 절적하게 잘 되었는지 확인할 경우에만 사용하는 테스트용도 입니다. 앞에서도 언급 드렸지만.. 주로 사용하게 될 녀석은 template 이라는 녀석이지요.
아래. updategram에 대해서.. 라는 녀석은 비활성화가 되어 있는데요. 데이터 수정작업을 하는 녀석이며 바로 뒤에서 상세히 보실 것입니다. 이때 URL쿼리 허용을 체크하면 자동으로 비활성화 됩니다. 이녀석은.. 데이터 수정에 종종 사용되는 updategram 역시.. URL입력을 통해서 처리할 수 있는데요.. 이녀석을 가능하게 / 불가하게 설정하는 것입니다. 역시나 거의 사용하실 일 없을 것입니다. ^_^ 대부분 파라미터를 보내서 템플릿으로 처리하게 될 테니까요. ^_^
템플릿 쿼리 허용인데요.. 이녀석이 재미난 녀석이지요.. 예를들어..
이렇게 하나의 XML 문서를 생성합니다. 여기서는 MyTemplate.xml 이라고 생성했다라고 가정합니다. 분명히 XML문서이며.. 보시는 바와 같이.. 내부에는 Query라는 이름공간과 함께 SELECT 구문으로 이루어진 쿼리가 되어 있지요. 이XML을 호출할 경우는?
이렇게 적절히 자신에게 맞게 적어 주면? 해당하는 템플릿 내부에 있는 SQL질의가 수행되어서 그 결과만!!! 사용자에게 리턴 됩니다. 이때
URL쿼리는 사용자에게 테이블 / 컬럼 등을 숨길 수 없지만.. 이 템플릿은? URL은 단지 호출의 용도이므로 해당하는 쿼리를 숨길 수 있는 장점이 있지요. 물론 파라미터를 적절하게 이용 하셔서 이 템플릿에 전달 할 수도 있으며 저장 프로시져로 구성된 템플릿 XML문서를 호출할수도 있습니다.
XPath허용이라고 된 녀석은.. XML데이터를 조회하는 하나의 쿼리이며 계층형 구조로 된 XML문서의 데이터를 추출할 수 있다. 주로 스키마(Schema)와 함께 사용되게 되며 파라미터를 넘겨받은 후 템플릿에서도 해당하는 값의 리턴을 위해 종종 사용하게 될 것이다. 예를들어 본다면.. 다음과 같은 XML데이터가 있다고 가정해 보겠슴당.
이렇게 된 데이터의 XML 계층 모식도를 그려 본다면?
대충 이런 XML 노드 트리를 볼 수 있습니당... 이렇게 계층화된 구조에서.. 만약 Customer 노드를 포인팅(선택) 하고 싶다면?
이렇게 하면? 선택이 가능해지며.. 이는 또한 약식 표현이 가능하고..
게 약식으로 표현할 수 있어 집니다. 물론 대부분의 경우 약식 표현을 주로 사용하게 될겁니다. 자.. XPath에대한 상세한 사항은? 부분을 조금더 참고해 보시길 바랍니다. - 다른 책을 보시는 것도 도움 되실 겁니다. ^_^
POST는 넘어오는 값에 대한 설정이며 KByte단위로 값을 설정 가능합니다.
클라이언트에서 실행은 SQLXML2.0의 새로운 기능으로 XML문서의 형식화(Formatting)을 클라이언트에서 처리되게 합니다.
런타임 오류를 HTTP오류로 노출 은.. 체크가 되었다면 템플릿과 같은 처리 수행시의 오류를 HTTP에러 코드로 리턴하게 됩니다. 만약 체크가 안되었다면.. HTTP 성공 코드가 리턴되며 에러는.. 클라이언트가 XML 문서를 내부적으로 처리하는 도중에 발생하게 됩니다. - 체크 안된게 기본값입니다.
dbobject를 생성합니다. 이름은 dbobject로.. 형식과 같게 잡았습니다. 이 dbobject는 주로 바이너리 데이터를 추출할 경우에 사용되며 XPath와 함께 사용 됩니다... 흠흠.. 잠시후 약간 뒤에서 샘플로 확인해 보도록 하지용. ^_^ Northwind DB의 낸시의 얼굴을 보신적 있으신가요? ^_^ - 곧 보게 되실 겁니다. ^_^ 바로 Northwind데이터베이스의 Image형으로 된 Bitmap이미지 형식으로 되어 있지요. 여기의 내용을 XML의 dbobject로 호출해 볼 것입니다.
이스키마와 템플릿이라고 하는 녀석은 해당하는 폴더에 이 화일들을 처리할 수 있도록 설정하는 것입니다. 잠시후에 템플릿과 스키마를 찬찬히 이용해 볼 것입니다. ^_^ 이렇게 각각의 형식으로 형식과 같은 이름의 현재 폴더를 참조하는 . 경로로 가상 이름들을 생성했습니다.
으음.. 다음으로 고급 탭입니다. ^_^ 주로 개발단계에서 사용될 캐싱을 끄거나.. 만약에 서드파티 업체에서 제공하는 ISAPI 필터를 이용하실 경우에는 해당하는 DLL을 재링크 하도록 할 수 있지요.
자!! 작업을 마치시고!!! 확인을 누르시면?
대충 이런 화면과 함께~~ 하나의 가상 디렉토리가 잘 구성된 것을 보실 수 있을 것입니다. - 가상디렉토리 하나 생성하기 힘들지요? 만약 이 가상디렉토리를 고객사에 세팅해야 하는데.. 고객 사이트가 100군데입니다. 어떻게 하면 될까요? ^_^
이런 고민을 해결하기 위해 제공하는 프로그래밍 개체가 있으며.. IIS Virtual Directory Management for SQL Server Object Model 이라는 이름의 거창한 녀석입니다. 지금 설정한.. 이 가상디렉의 이름 / 경로 / 설정옵션 / 보안.. 이런 것들을.. 마우스로 할 필요 없이.. VB로 다가닥~~ 해서 끝낼 수 있지요.
자 보시는 바와 같은 여러 개체들이 있습니다. ^_^ 뭐.. 상세한 부분은 MSDN을 살펴 보시고.. 저는 제공되는 아주 유용한 풀소스 하나를 보여 드리지요. ^_^
지금까지.. 설정하신 내용의 이름들과.. 값을 주의깊게 봐 오셨다면? 대강 감이 오실 겁니다. ^_^ 이상한 상수값이나 속성은 MSDN을 직접 봐 보세요. ^_^ 많은 도움 되시길 바라며.. 계속 이야기를 진행하겠습니다.
자.. 이제 이것저것 다 보셨으니.. 샘플을 돌려 보도록 합지요 ^_^ 조금 지루하셨죠? ^_^ 쿠쿠.. 먼저 URL쿼리 입니다. ^_^ URL 쿼리 수행하시기 전에.. IIS가 수행중인지 확인해 보시길 바라구요.
이렇게 URL쿼리를 한번 던져 보는 것입니당 ^_^
기분좋게 이런 화면이 잘 나오시나요? ^_^ 잘 안나온다면.. 에러메시지를 잘 봐 보시공.. 적절한 조치를 취하신후 다시 시도해 보시길 바랍니다. ^_^
자. URL쿼리를 수행해 보셨으며.. 하나만 더 해보겠습니다. nwind 폴더의 catalog.xsl화일을 확인하시고...
을 수행해 보시면? 다음처럼 테이블형태로 XSL화일이 적용된 결과를 보실 수 있습니다.
음... 열심히 URL쿼리를 설명 드렸으나. -_-;;; 사실 그리 많이 사용하지 않기 때문에.. 이정도로만 하겠습니다. ^_^
Template 쿼리 수행 다음으로 드릴 이야기는 Template라는 부분인데요.. 이 템플릿이라는 부분은.. 바로 이어서.!!!! 부분을 꼭 봐 보시구요.. 사실 이 템플릿이 가장 중요하다고 볼 수 있습니다. 템플릿에 대한 이 강좌로 대신하고 넘어가도록 ~~~ 하겠습니다. ^_^;;
XSD - XML 스키마 이번에는 XML의 스키마라는 부분입니다. 음.. 스키마라는 것은 데이터를 정확히 제약하는 것이라고 설명 드렸습니다. XML은 그 범용성이 큰 강점입니다. A사에서 B사로 XML문서를 전달해 B사는 이 XML문서를 적절하게 처리하여 DBMS에 넣거나 어플리케이션에서 처리합니다. 이때 만약 A사에서 전달해준 문서에 반드시 B사에서는 필요한 값이 빠져 있거나.. XML요소의 일부 값이 반드시 숫자로 '100' 이라고 와야 하는데.. '100원' 이라는 문자열로 오게 되었습니다. 이럴때 큰 문제가 될 수 있을 것입니다. 이때 만약 XML스키마를 이용해.. 양쪽 회사가 정확하게 XML문서의 여러 요소, 속성을 정의한 스키마를 공유해서 이 스키마를 이용해 XML문서의 유효성을 검사해서 적절하게 각 회사에 맞게 사용가능할 것입니다. 이런 목적으로 사용하는 것이.. XSD - XML스키마 이며 XML공부를 일찍부터 해 오신분은? DTD나.. MS에서 사용했던 XDR이 생각 나실 것입니다. 이제 XSD가 표준이니.. 이 XSD를 보시면 되며.. 간단히 몇몇 XSD샘플을 봐 보도록 하겠습니다. 간단히 이번에는 디폴트 스키마라고 하는.. 기본이 되는 스키마를 봐 보실 겁니다. MySchemaT.XML 템플릿 XML화일
이렇게 간단한 XPath쿼리를 수행하는 XML화일을 생성했습니다. 이 템플릿으로 생성되는 XML문서에 이렇게 스키마 화일을 연결했으며 아래와 같이 스키마 화일을 생성합니다. MySchema.XML 화일
스키마를 포함하는 XML템플릿을 호출 하려면? 아래와 같이 호출합니다.
현재는 서버측 스키마화일을 적용 하였으나.. 만약 클라이언트측에서 IE를 통한 스키마 화일을 다루실 경우에는 반드시 IE6.0이거나. 파서가 적절한 버젼이어야 합니다. .XSD를 지원하는 파서는 MSXML3.0버젼 이상부터 지원하며.. 현재 MSXML4.0버젼 까지 나와 있습니다.
이 스키마는 대단히 난해합니다. ^_^;; 저야 단순히 제약을 강화한다고.. 만 말씀 드렸지만.. 모든 일이 그렇듯이.. 쉽지만은 않겠지요? 이곳에 여러 XSD 주석에 대한 설명이 있으며.. 기존 XDR스키마와 매칭되는 부분에 대한 간단한 소개 글이 있으니 참고 하시길 바랍니다.
그리고 추가적으로.. XSD의 자료형과.. SQL서버간 자료형 매칭 테이블 정보를 보여 드리니.. 참고 하시길 바랍니다. - 종종 참고하게 되실 겁니다. ^_^
간단히 XSD에 대한 부분을 맛을 보았습니다. 뭐.. 사실 관계정의를 XML로 가져가거나.. 반드시 하나 이상의 요소나 속성이 오게하는 제약등도 다뤄 보고 싶었으나.. 많이 오버하는 부분이 될테니.. 이정도만 하겠습니다. ^_^
DBObject 쿼리 아.. 깜빡하고 소개를 안드렸군요.. dbobject에 대한 소개로.. Nancy의 얼굴을 보여 드린다고 했었지요.. - DBObject는 이렇게 이진 데이터를 다룰때 유용합니다.
이렇게.. 수행하시면? 이 URL의 XPath쿼리는...
이렇게 해석이 되는 것이지요. ^_^
이렇게 낸시의 얼굴을 봐 보실 수 있답니다. - 만약 다운로드가 된다면? BMP화일로 저장하신후 해당 이미지를 열어보시면 됩니다.
Updategram 다음으로는.. 간단히.. updategram에 대해서 봐 보도록 하지요. 소개에서 말씀 드렸지만.. 데이터의 수정에 종종 사용됩니다. 수행되는 방식을 간략히 소개해드리면.. 적절한 스키마와 연결을 시키고 이어서.. Sync라는 이름공간 사이에.. Before와 After를 두어서.. Before는 이전값 / After는 변환후값을 적절히 처리하는 것이지요. 예를들어 insert라면? After에만 값이 있고 Before에는 값이 없겠지요. Delete라면? Before에만 있으며 After에 값이 없을 것입니다. 또한 적절하게 Before를 이용해 XML의 고유한 동시성 처리 역시 가능해지지요. 간단히 Updategram을 위한 스키마를 생성합니다. SampleSchema.xml
또한 데이터를 하나 삽입하는.. SampleUpdategram.xml 화일을 생성합니다.
네... 그리고 이어서 다음처럼 URL을 사용합니다.
이렇게 수행하면? 이러한 수행화면을 보실 수 있습니다.
이렇게 Updategram의 수행 결과 역시 XML로 리턴되지요.
만약 실패라면?
이렇게 해당하는 에러를 역시나 XML로 리턴 받을 수 있습니다. 만약 이렇게 수행되는 화면이 안나온다면? SQLXML의 구성중에서 세팅 부분의 updategram관련 부분을 살펴 보시면 됩니다.
OpenXML을 이용한 데이터의 수정보다는... 이 updategram이 어느정도의 대세인듯하니.. 많은 수행을 쌓아서 자신만의 모듈을 만들어 보시길 바라구요...
Bulk XML 자.. 마지막으로 소개해드릴 내용은? Bulk XML이라고 하는... 많은 XML데이터를 SQL서버로 부어야 할 경우에는 이 updategram이나 OpenXML은 적절하지 않습니다. 이럴 경우 Bulk XML이 유용하지요. ^_^ 많은 분들이 잘 모르고 계시는데요.. 이 Bulk XML역시 Minimal Logged Operation을 이용해 최고 속도로 데이터를 부을 수 있으며.. 이는.. http://sqler.pe.kr/sql2k/1205.asp 에서 상세히 보실 수 있습니다. ^_^ Bulk XML은 특정한 명령이 아닌.. 컴퍼넌트로 제공됩니다. VB등에서 적절하게 바인딩을 한후 객체를 생성후 처리하시면 되지요. ^_^ 여기서 간단히 Bulk XML샘플을 하나 알아보도록 하겠습니다. SampleSchema.xml
SampleXMLData.xml
다음과 같은 VB프로젝트를 생성합니다.(nwind폴더에 있습니다.)
이어서.. 다음과 같은 SQL구문과 함께.. VB프로젝트를 수행합니다.
그러면 데이터가 조회된 것이 보일 것입니다. ^_^
대단히 많은 내용이었군요.. ^_^;; 오늘은 열심히 .NET 엔터프라이즈 아키텍트를 설치해 보려 했으나.. 안되어.. 시간만 날린 하루였군요.. ^_^ 냠.. 그래도 어려운 강좌 하나를 마무리 하니 홀가분 하네요. ^_^ 당연히 이 강좌의 모든 소스는 제공되니 차근차근 공부해 보시길 바라구요. ^_^ 그럼 마지막 XML에 대한 이야기를 조금 더 적어 보도록 하겠습니다. |
******************************************************************************
5. SQLXML을 위한 참고자료 |
제가 드리고 싶었던.. 스킬과 관련된 이야기는 대부분 드렸습니다. 하지만 제가 보여드린 부분은 말그대로 맛뵈기중의 맛뵈기이며.. 프로젝트에서 이 SQLXML기능을 적용하기 위해서는 대단히 많은 시간과 노력이 필요할 것입니다.
자 먼저 참고자료 입니다. ^_^
참고자료 SQL서버 온라인 도움말. - 마찬가지로 설명이 잘 되어 있습니다. 많이 참고 하시길 바랍니다.
SQLXML도움말 - SQLXML을 설치하시면 함께 등록되는 도움말 입니다. 이번에 제 강좌의 샘플 코드들이 있는 곳이기도 하지요. ^_^ 찬찬히 봐 보시구요. XSD에 대한 상세한 소개가 잘되어 있으므로 도움 되시길 바랍니다.
SQL2000 프로그래밍 With XML - 정보문화사의 번역서로 허접 번역을 제가 수행했답니다. -_-;; 많은 도움 받으실 수 있을 것이며.. 완전하게 수행 가능한 풀소스가 포함되어 있으니 빠르게 소스 적용이 가능하실 겁니다. ^_^;; 참고 하세요. 또한 XML에 대한 기본설명이 약간 부록으로 포함 되어 있으니 도움 되시길 바랍니다.
XML기초책 - Step by step XML - MS Press - 정보문화사 - 스탭바이스탭XML책으로.. 대단히 좋은 구성, 깔끔한 설명이 돋보입니다. XML을 처음 공부하는 분에게 바이블격으로 좋은 책이라 생각합니다만.. -_-;; 워낙 옛날책이라.. 많은 표준안이 변화가 되었지요.. 그래도 개념적인 소개 및 정의가 좋으며 번역 정도 역시 대단히 좋으니 처음 XML을 공부하는 분이라면? 많은 도움 되실 겁니다. ^_^
자.. 이정도면 SQLXML에 대한 소개와 맛보기는 어느정도 된듯 하네요. ^_^ 자 수고하셨구요. 다음 강좌인 SQL2000의 프로그래밍이라고 하는.. 코난이의 밥벌이에 대해서 좀더 알아 보도록 하겠습니다. ^_^ |