SQL Server 2000 XML 개요

주요 내용

down RDBMS에 XML을 통합하는 이유
down SQL Server 2000의 XML 기능
down Oracle 제품과의 비교 분석
down 결론

요약: 미션 크리티컬한(Mission-Critical) 데이터가 서로 다른 리소스에 저장되어 있는 상황에서 XML(Extensible Markup Language)은 표준화된 형식을 통해 서로 다른 응용 프로그램 간의 데이터 교환 및 서로 다른 시스템의 통합을 담당할 강력한 메커니즘을 제공합니다.

XML은 Microsoft® SQL Server™ 관계형 데이터베이스 관리 시스템(RDBMS)에 밀접하게 통합되어 있어 개발자가 차세대의 웹 및 엔터프라이즈 응용 프로그램을 구축하는 데 도움이 됩니다. 이 백서에서는 SQL Server 2000의 XML 기능을 소개하고 이러한 기능을 Oracle의 XML 기능과도 비교하여 설명합니다.

RDBMS에 XML을 통합하는 이유Back to Top

XML을 통해 다음 비즈니스 시나리오에서 정보를 교환할 수 있습니다.

B2B(기업간 거래)

서로 다른 공급업체의 공급망 통합

B2C(기업/소비자간 거래)

데이터베이스의 데이터가 필요한 브라우저 기반 응용 프로그램

기업 내(Intra-Business)

예를 들어, 서로 다른 공급업체의 전사적 자원 관리(ERP) 소프트웨어 및 고객 관계 관리(CRM) 소프트웨어의 통합

이러한 비즈니스 시나리오에는 정보 교환을 위해 다음 XML 기능이 필요합니다.

  • 결합이 비교적 느슨한(Loosely Coupled) 업무 시스템 매핑
  • SQL Server 2000은 XML View, XPath 쿼리 및 SELECT 문을 통해 관계형 데이터의 XML View를 제공합니다. XML 데이터와 관계형 테이블 간의 매핑은 OPENXML과 Annotated Schemas를 사용하여 제공됩니다.

  • 데이터베이스에 대한 안전한 HTTP 연결
  • 원래 위치와 관계 없이 XML 데이터를 쿼리, 업데이트 및 로드하는 기능
  • SQL Server 2000은 SQL Server 데이터베이스에 저장된 데이터에 대한 URL, Microsoft SQLOLEDB(OLE DB Provider for SQL Server) 및 Microsoft ActiveX® Data Object(ADO) 액세스를 제공합니다.


SQL Server 2000의 XML 기능Back to Top

Microsoft® SQL Server™ 2000은 XML 기반 응용 프로그램을 구축하기 위한 고도로 확장 가능하고 신뢰성 있는 플랫폼입니다. SQL Server 2000에서는 다음과 같은 XML 기능을 제공합니다.

  • HTTP 액세스
  • XML로 된 결과를 검색하기 위한 새로운 SELECT 문 옵션(FOR XML)
  • XML 모드
  • XML View
  • XPath 쿼리
  • OPENXML
  • OLE DB 및 ADO 액세스

HTTP 액세스

Microsoft® SQL Server™ 2000에서는 HTTP를 통해 다음 세 가지 방법으로 데이터에 액세스할 수 있습니다.

  • URL의 SQL 문
  • URL에서 직접 SQL 문과 저장 프로시저를 실행할 수 있습니다. 따라서 필요에 따라 데이터베이스의 데이터에 신속하게 액세스할 수 있습니다.

  • 템플릿
  • 템플릿이란 하나 이상의 embedded SQL 문을 포함하는 유효한 XML 문서를 말합니다. SQL 문처럼 템플릿도 URL이나 파일에서 지정할 수 있습니다. 템플릿은 요청자에 데이터베이스의 구조를 노출시키지 않고 템플릿 이름만 알려지게 해서 URL을 사용하여 SQL 데이터를 검색할 수 있게 합니다. 따라서 URL에서 긴 SQL 문을 입력하지 않아도 됩니다. SQL Server 2000은 템플릿 내에서 다음을 지원합니다.

    • SELECT 문 및 엔티티 참조
    • 저장 프로시저의 실행
    • 매개 변수 전달 및 기본 매개 변수의 지정
    • XPath 쿼리

  • HTML 게시 이벤트 통합
  • URL에서 지정한 템플릿에서 매개 변수로서 HTML 폼 입력 매개 변수를 프로그래밍 방식으로 전달할 수 있습니다. XSL(Extensible Stylesheet Language) 스타일 시트를 사용하여 클라이언트의 액세스 메커니즘이나 웹 서버의 액세스 메커니즘 중 하나의 출력을 처리할 수 있습니다.

HTTP 액세스 사용 시 사용할 수 있는 옵션

HTTP 액세스 메서드는 다음 옵션을 지원합니다.

contenttype

이 키워드는 반환되는 문서의 컨텐트 유형을 지정합니다. 문서의 기본 컨텐트 유형은 text/XML입니다.

xsl

이 옵션을 사용하면 XSL 파일을 사용하여 쿼리 결과를 처리할 수 있습니다.

Security

Security는 가상 루트마다 설정되며, 사용 권한도 SQL Server에서 설정됩니다. ISAPI 동적 링크 라이브러리(DLL)에는 세 가지 인증 옵션이 있습니다.

    Anonymous Access 가상 루트에서 직접 설정되고 모든 사용자에 사용되는 Microsoft Windows® 또는 SQL Server 로그인/암호

    Basic Authentication 이 옵션을 사용하면 네트워크를 통해 일반 텍스트 SQL Server 로그인/암호가 보내지므로 SSL(Secure Sockets Layer)과 함께 사용해야 합니다.

    Integrated Security

    Windows 액세스 제어 목록(ACL)을 사용합니다.

XML로 된 결과를 검색하기 위한 새로운 SELECT 문 옵션(FOR XML)

기존 관계형 데이터베이스에 대해 SQL 쿼리를 실행하면 표준 행 집합보다는 XML 형식으로 결과를 반환할 수 있습니다. 이러한 쿼리는 직접 또는 저장 프로시저 내에서 실행할 수 있습니다. XML 결과를 검색하려면 SELECT 문의 FOR XML 절을 사용하고 RAW, AUTO 또는 EXPLICIT의 XML 모드를 지정하십시오.

XML 모드

반환되는 XML 문서의 모양은 지정한 XML 모드에 의해 결정됩니다. 다음과 같은 XML 모드를 지정할 수 있습니다.

RAW

RAW 모드는 쿼리 결과를 가져와서 일반 ID 행을 요소 태그로 사용하고 SELECT의 열을 특성으로 사용하여 결과 집합의 각 행을 XML 요소로 변환합니다.

AUTO

AUTO 모드는 쿼리 결과를 간단하고 중첩된 XML 트리 형식으로 반환합니다. SELECT 절에 나열된 하나 이상의 열에 대한 FROM 절의 각 테이블은 XML 요소로 나타납니다. SELECT 절에 나열된 열은 해당 요소의 특성으로 매핑됩니다. 열을 하위 요소로 선택해서 매핑할 수도 있습니다. 결과 집합에 있는 요소나 계층 구조의 중첩은 SELECT 절에 지정된 열로 식별되는 테이블의 순서를 기준으로 합니다. 즉, 가장 왼쪽의 테이블이 최상위 요소가 됩니다. SELECT 문의 열로 식별되는 왼쪽에서 두 번째 테이블은 최상위 요소 내에 중첩됩니다.

EXPLICIT

EXPLICIT 모드에서는 결과 XML 트리의 모양을 명시적으로 정의할 수 있습니다. 이 모드를 사용하려면 원하는 중첩에 대한 추가 정보가 쿼리의 일부로 명시적으로 지정되도록 쿼리를 특정한 방식으로 작성해야 합니다.

다음 그림(그림 1)은 AUTO 모드에서 URL의 가상 경로와 SQL 문자열을 사용했을 때의 결과 출력을 보여 줍니다.


현재 사용하는 브라우저가 인라인 프레임을 지원하지 않을 경우 여기를 누르면 새 창에서 볼 수 있습니다.

그림 1 AUTO 모드에서 URL의 가상 경로와 SQL 문자열을 사용했을 떄의 예제 출력

XML 모드에서 사용할 수 있는 옵션

XML 모드는 다음 옵션을 지원합니다.

XMLDATA

이 옵션은 XML 문서와 함께 해당 문서의 스키마를 반환합니다.

BINARY base64

이 옵션을 쿼리에서 지정하면 이진 데이터가 기수 64 인코드 형식으로 반환됩니다. RAW 및 EXPLICIT 모드에서 이 옵션을 지정하지 않고 이진 데이터를 검색하면 오류가 발생합니다.

ELEMENTS

이 옵션을 지정하면 다음 그림(그림 2)에 나타난 것처럼 열이 하위 요소 형태로 반환됩니다. 옵션이 지정하지 않으면 열이 XML 특성으로 매핑됩니다. 이 옵션은 AUTO 모드에서만 지원됩니다.


현재 사용하는 브라우저가 인라인 프레임을 지원하지 않을 경우 여기를 누르면 새 창에서 볼 수 있습니다.

그림 2 요소 옵션을 사용했을 때의 예제 출력

XML View

Microsoft® SQL Server™ 2000은 데이터베이스의 XML View를 제공하기 위해 XML 데이터 스키마 언어에 Annotation을 도입합니다. 이러한 Annotation을 XML 데이터 스키마 내에 사용하면 양방향 XML 대 관계형 매핑을 지정할 수 있습니다. 이러한 양방향 XML 데이터 스키마는 XML 데이터 스키마의 요소 및 특성 대 데이터베이스의 테이블 및 열 간의 매핑과 그 반대의 매핑을 포함합니다. 기본적으로 Annotated 스키마의 열 이름은 지정된 데이터베이스에서 같은 이름을 가진 테이블(View)로 매핑되고 특성은 같은 이름의 열로 매핑됩니다. XML에서 계층 구조 관계를 지정할 때도 이러한 Annotation을 사용할 수 있습니다.

XPath 쿼리

SQL Server 2000에서는 데이터베이스에서 XML 결과를 얻기 위해 앞에서 설명한 XML View 기술과 함께 사용할 수 있는 XPath 언어 중 일부를 지원합니다.

OPENXML

OPENXML은 메모리 내 XML 문서를 통해 관계형/Rowset View를 제공하는 transact-SQL 키워드입니다. OPENXML은 테이블이나 보기와 비슷한 행 집합을 제공합니다. OPENXML을 사용하면 데이터를 XML 문서에서 관계형 테이블로 전송하여 transact-SQL 컨텍스트 내의 XML 데이터에 액세스할 수 있습니다. 따라서, OPENXML을 사용하면 XML 문서와 XML 문서의 관계형 환경과의 상호 작용을 관리할 수 있습니다.

OPENXML은 SELECT, INSERT, UPDATE 및 DELETE 같은 문 내에서 사용할 수 있습니다. 원본 테이블이나 보기를 지정하는 대신 OPENXML을 지정할 수 있습니다.

XML 문은 텍스트 매개 변수(char, nchar, varchar, nvarchar, text, ntext)로서 저장 프로시저에 전달될 수 있습니다. 다른 transact-SQL 문과 함께 OPENXML 문을 사용하면 XML 문을 원본으로 사용하여 삽입, 업데이트, 삭제 및 조인 같은 관계형 작업을 수행할 수 있도록 XML 데이터의 Rowset View를 제공할 수 있습니다. 단일 저장 프로시저 호출을 사용하여 데이터베이스에 복수 행, 복수 테이블 업데이트를 수행할 때도 OPENXML을 사용할 수 있습니다.

OLE DB 및 ADO 액세스

XML 및 XPath에 맞게 SQLOLEDB가 확장되었습니다. 처리를 위해 템플릿을 OLE DB에 전달하기 위해 새로운 ICommandStream 인터페이스가 추가되었습니다. 또한, OLE-DB 공급자에 대한 속성 집합이 확장되어 XML 결과를 반환하기 위한 IStream을 지원하는 개체를 지정할 수 있고 매핑 스키마를 사용하여 정의한 XML View를 사용한 XPath 쿼리를 지원합니다. 스트림 개체는 ADO 2.5부터 도입되었으며 현재 새로 도입된 통용어와 함께 사용하면 템플릿과 XPath 쿼리를 데이터베이스에 보내고 데이터베이스에서 XML 결과를 받을 수 있습니다.

Oracle 제품과의 비교 분석Back to Top

SQL Server 2000과 Oracle의 XML 기능은 비슷합니다. Oracle에서는 일반 XML 프레임워크를 구축했고, Microsoft에서는 SQL Server 2000에 특정 XML 지원을 구축했다는 점이 가장 큰 차이입니다. SQL Server 2000은 Loosely Coupled 비즈니스 시스템 간의 매핑을 제공하기 위해 간단한 "플러그 엔 플레이" 방식의 선언적 메커니즘(XML View)을 지원합니다. 예를 들어, XML 데이터의 검색(FOR XML)과 저장(OPENXML)이 직접 지원됩니다. Oracle의 XML 기술은 간단한 XML 작업을 수행하는 데도 복잡한 프로그래밍이 필요합니다. Oracle의 솔루션과 달리 SQL Server 2000은 XSL 변환을 수행하지 않고도 다른 형식으로 XML 문서를 생성할 수 있는 기본 구조를 제공합니다.

기능 매트릭스

기능
SQL Server 2000
Oracle
Loosely Coupled 비즈니스 시스템의 선언적 매핑
이러한 기능은 XML과 관계형 데이터 View 사이의 양방향 매핑을 제공합니다.
SQL Server 2000에는 최소의 프로그래밍으로 시스템을 사용할 수 있는 통합 XML 기능이 있습니다.
Oracle에는 통합 XML 고유 기능이 없습니다.



XML View
XPath 지원
transact-SQL FOR XML 확장
transact-SQL OPENXML 확장



특정 기능 없음. 사용자 지정 프로그램을 작성해야 함.
SQL의 기본 XML 확장
사용자는 이 기능을 사용하여 자신의 SQL 기술을 이용해서 추가 프로그래밍 없이도 응용 프로그램을 신속하게 사용할 수 있습니다.
SQL Server 2000은 표준 SQL 쿼리에서 직접 XML 데이터를 반환하는 데 사용할 수 있는 SQL 언어의 기본 확장을 제공합니다.
Oracle은 표준 SQL을 확장하지 않는 서버쪽 유틸리티를 제공하므로 XML 데이터를 반환하려면 추가 프로그래밍이 필요합니다.


transact-SQL FOR XML 확장
transact-SQL OPENXML 확장


특정 기능 없음. XSQL 유틸리티를 사용하여 사용자 지정 프로그램을 작성해야 함.
다양한 XML 액세스 메서드
이러한 메서드를 사용하면 프로그래머가 유연성 있게 네트워크 연결 전체에 걸쳐 있는 XML 데이터에 액세스할 수 있습니다.
SQL Server 2000과 Oracle 모두 데이터베이스의 XML 데이터에 액세스하기 위한 다양한 메서드를 지원합니다.


HTTP 액세스
OLE DB/ADO 액세스
JDBC


HTTP 액세스
OLE DB/ADO 액세스
JDBC
XML 템플릿
XML 템플릿을 사용하면 XML 비즈니스 논리가 서버 중간 계층에 저장될 수 있습니다.
SQL Server와 Oracle이 모두 선택적 매개 변수를 사용하여 서버에 XML 쿼리 템플릿에 저장할 수 있습니다.

URL/HTTP 액세스
XML 템플릿

URL/HTTP 액세스
XSQL 템플릿
XML 데이터에 대한
웹 액세스 보호

네트워크로 연결된 인터넷 응용 프로그램에 안전한 액세스가 필요합니다.
SQL Server 2000은 개별 테이블 수준에서 관리할 수 있는 보안을 제공합니다.
Oracle은 제한된 수준의 보안만을 제공합니다. 즉, 전체 데이터베이스 소유자의 보호는 지원하지만, 개별 테이블 수준의 보안은 지원하지 않습니다.


데이터베이스 사용자 수준의 보안
데이터베이스 개체 수준의 보안


데이터베이스 사용자 수준의 보안
복잡한 XML 문서의 고급 검색 옵션
SQL Server 2000과 Oracle 모두 XML을 포함하여 복잡한 텍스트 문서를 검색하기 위한 기본 데이터베이스 지원을 제공합니다.


전체 텍스트 검색



구획화 기능을 갖춘 미디어간 텍스트 검색

XML 파서
이 도구는 XML 응용 프로그램 설계 시 가장 큰 권한과 유연성을 필요로 하는 프로그래머를 위한 것입니다.

복수 언어를 지원하는 MSXML COM 기반 파서

복수 언어를 지원하는 Oracle 파서

SQL Server 2000 및 Oracle XML 기능의 비교

Oracle이 일반 XML 프레임워크를 제공하지만 대부분의 XML 기능을 사용할 때 사용자 지정 프로그램을 작성해야 합니다. Oracle은 XML 태그를 인식하기 위해 확장될 수 있는 XML 텍스트 검색 기능을 제공합니다.

다음과 같은 SQL Server 2000 및 Oracle XML 기능이 비교됩니다.

XML View

SQL Server 2000에는 관계형 데이터의 XML View를 제공하는 기술이 포함되어 있습니다. 현재 Oracle에서는 사용자 지정 프로그램을 작성해야 매핑을 제공할 수 있습니다.

데이터베이스의 기본 확장

데이터베이스에 기능을 통합하면 외부적으로 구현되는 기능보다 높은 성능을 제공할 수 있습니다. SQL Server 2000 XML 기능을 기본 내장시킬지 여부는 이러한 성능 고려 사항을 고려하여 결정했습니다. Oracle에는 기본 XML 지원이 없습니다.

동적 XML 형식 검색

Oracle 쿼리는 요소 중심의 RAW 형식과 유사한 고정된 XML 형식을 생성합니다. 보다 유용한 형식을 얻으려면 프로그래머는 XSL 변환이나 Java 코드를 작성해야 합니다. SQL Server 2000은 유사한 모델에 RAW를 제공할 뿐만 아니라 XML View와 FOR XML AUTO 및 EXPLICIT를 사용하여 보다 "유용한" XML을 직접 생성할 수 있습니다. 또한, SQL Server 2000은 쿼리의 결과로 XML 스트림을 반환하기 위한 스트림 인터페이스를 제공합니다.

XML 업데이트

Oracle과 SQL Server 2000(웹 릴리스 포함) 모두 대량 로드를 지원합니다. SQL Server에는 XML을 통해 행 집합을 제공하기 위한 OPENXML과 XML 구문을 사용하여 업데이트를 제공하기 위한 updategrams(웹 릴리스 포함)가 있습니다. Oracle에는 유사한 기능을 수행하기 위한 Java 패키지가 있습니다.

Oracle XSQL 템플릿 대 SQL Server 2000 XML 템플릿

Oracle은 템플릿 파일을 실행할 때 XML SQL Utility for Java(데이터 형식을 XML로 지정하기 위한)와 XSQL Servlet(URL 액세스용)을 사용합니다. SQL Server 2000은 XML 데이터를 검색하기 위한 기본 지원(FOR XML)을 제공하여 템플릿 파일을 실행하기 위한 통합 솔루션을 제공합니다. Oracle의 XSQL 템플릿 파일은 XSQL Servlet을 통해서만 실행될 수 있습니다. Oracle 템플릿을 다른 방법으로 실행하려면 사용자 지정 Java 프로그래밍이 필요합니다. SQL Server 2000 템플릿은 URL에서 또는 ADO 프로그램에서 직접 실행될 수 있습니다.

XPath 쿼리

Oracle은 XPath의 일부를 SQL로 매핑하는 방법에 관한 초본 수준의 데모를 제공하고 있습니다. SQL Server 2000에는 이미 Xpath의 일부가 제공되어 있습니다.

전체 텍스트 검색 및 인덱싱

SQL Server 2000은 문서에서 인덱스 정보를 추출하는 데 사용될 수 있는 OPENXML에 대한 오버플로 열 구문을 제공합니다. Oracle도 유사한 방법으로 문서에서 데이터를 추출하여 인덱스를 구축합니다. Oracle에는 계층 구조(WITHIN 절)에서 작동하는 텍스트 검색 구성 요소이 있습니다. Oracle은 상관 관계를 수행할 수 없지만 복수 수준 중첩을 통한 쿼리를 지원합니다. SQL Server 2000의 전체 텍스트 검색 시스템은 현재 계층적 인덱스를 제공하지 않고 순수 텍스트 형식으로 XML을 검색합니다. 태그와 특성 이름을 식별하기 위한 특정 구성은 포함되어 있지 않습니다.

XML 스트림

SQL Server 2000은 ADO의 XML 스트림 인터페이스뿐 아니라 행 집합 구문도 제공합니다. Oracle은 행 집합 구문만 지원합니다.

확장성 및 성능

SQL Server 2000은 OPENXML 및 FOR XML 쿼리를 사용하여 중간 계층에서 서버로 일부 작업 로드를 푸시할 수 있습니다.

이러한 제품의 성능과 확장성을 비교하는 것은 어렵지만 SQL Server는 XSLT 또는 Java 프로그램을 사용하여 변환하지 않고도 쿼리를 사용하여 직접 XML을 생성할 수 있는 장점이 있습니다.

개체 보기

Oracle에는 개체 관계형 지원이 있어 이 기능을 사용하여 데이터베이스에 저장된 데이터의 XML 개체 보기를 제공합니다. SQL Server 2000에는 ADO를 사용한 개체 지원이 포함된 다른 모델도 있습니다.

XML 파서, Schema Processor 및 XML 개발 구성 요소

Oracle에는 다른 언어용 transviewer bean, Schema Processor 및 XML 파서가 있습니다. 이러한 기능은 데이터베이스와 관련이 없습니다. MSXML과 타사 유틸리티도 똑같은 기능을 제공합니다.

XML Class 생성기

Oracle transviewer Bean과 XML 파서처럼 이 기능도 데이터베이스 기술과 관련이 없습니다.

결론Back to Top

Microsoft SQL Server 2000은 웹 및 데이터베이스 개발자용으로 특별히 고안된 XML 기능을 제공합니다. SQL Server 2000이 XPath 같은 표준 XML 구조를 지원하여 데이터베이스와 상호 작용할 수 있게 해주므로 웹 개발자가 SQL Server 2000 XML 기능을 사용하기 위해 데이터베이스 프로그래밍을 배우지 않아도 됩니다. 마찬가지로 데이터베이스 개발자도 XML 프로그래밍을 배우지 않아도 FOR XML 절을 사용하여 XML 쿼리 결과를 얻고 OPENXML을 사용하여 XML 데이터를 조작할 수 있습니다. 마지막으로 SQL Server 2000은 B2B 거래를 위한 스키마 매핑을 정의하기 위해 간단한 선언적 메커니즘, XML View를 제공합니다.

이 문서에 포함된 정보는 문서를 발행할 때 논의된 문제들에 대한 Microsoft Corporation의 당시 관점을 나타냅니다. Microsoft는 변화하는 시장 환경에 대처해야 하므로 이를 Microsoft 측의 책임으로 해석해서는 안되며 발행일 이후 소개된 어떠한 정보에 대해서도 Microsoft는 그 정확성을 보증하지 않습니다.

이 문서는 오직 정보를 제공하기 위한 것입니다. MICROSOFT는 이 문서에서 명시적이든 묵시적이든 막론하고 여하한 보증도 하지 않습니다.

해당 저작권법을 준수하는 것은 사용자의 책임입니다. 저작권의 권리와 별도로, 이 설명서의 어떠한 부분도 Microsoft의 명시적인 서면 승인 없이는 어떠한 형식이나 수단(전기적, 기계적, 복사기에 의한 복사, 디스크 복사 또는 다른 방법)으로 또는 어떠한 목적으로도 복제하거나, 검색 시스템에 저장 또는 도입하거나, 전송할 수 없습니다.

Microsoft는 본 설명서 내용과 관련된 특허권, 상표권, 저작권 또는 기타 지적 소유권을 보유할 수 있습니다. 서면 사용권 계약에 따라 Microsoft에서 귀하에게 명시적으로 권리를 제공하지 않으면, 이 설명서 제공으로는 이러한 특허권, 저작권 또는 기타 지적 소유권 등에 대한 어떠한 사용권도 귀하에게 부여되지 않습니다.


 

최종 수정일 : 2001년 11월 12일