XML Views in SQL Server 2000 컴퓨터 언어연구실 석사 3학기 강 소 희
XML 및 인터넷 지원 개요 HTTP를 사용하여 SQL Server에 액세스가능. XDR(XML-Data Reduced) 스키마를 지원하고 이러한 스키마에 대해 XPath 쿼리를 지정할 수 있음. XML 데이터를 검색하고 쓸 수 있음. SELECT 문 및 FOR XML 절을 사용하여 XML 데이터를 검색. OpenXML 행 집합 공급자를 사용하여 XML 데이터를 씀. XPath 쿼리 언어를 사용하여 XML 데이터를 검색. Microsoft SQL Server 2000 OLE DB 공급자(SQLOLEDB)에 대한 향상된 기능으로 XML 문서를 명령 텍스트로 설정할 수 있고 결과 집합을 스트림으로 반환할 수 있음.
XDR 스키마 XDR 스키마 XML 문서와 동일한 구문을 사용하여 문서 구조를 설명 XDR 스키마에서는 <Schema> 요소가 전체 스키마를 둘러쌈. 스키마 이름과 그 스키마가 위치하는 이름 공간을 정의하는 특성을 <Schema> 요소의 속성으로 설명할 수 있음. XDR 언어에서는 모든 요소 선언이 <Schema> 요소 안에 포함.
XDR 스키마 최소한의 XDR 스키마 <Schema> 요소는 xml-data 이름 공간(urn:schemas-microsoft-com:xml-data)으로부터 파생됨. <?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data"> ... </Schema>
XDR 스키마에 대한 주석 데이터베이스에 대한 매핑을 설명하는 주석을 XDR 스키마와 함께 사용하면 데이터베이스를 쿼리하여 그 결과를 XML 문서 형식으로 반환할 수 있음. SQL Server 2000에서는 XDR 스키마를 데이터베이스 테이블과 열에 매핑하기 위해 사용할 수 있도록 많은 주석을 도입. XDR 스키마로 만들어진 XML 뷰에 대해 XPath 쿼리를 지정하여 데이터베이스를 쿼리하고 결과를 XML로 받을 수 있음.
XML View-BizTalk
매핑 스키마 관계형 데이터베이스의 맥락에서는 임의의 XDR 스키마를 관계형 저장소에 매핑하는 것이 유용. 주석이 지정된 XDR 스키마는 매핑 스키마라고 하며, XML 데이터가 관계형 저장소로 매핑되는 방법에 대한 정보를 제공. 실제로 매핑 스키마는 관계형 데이터의 XML 뷰. 이러한 매핑을 사용하여 관계형 데이터를 XML 문서로 검색할 수 있음.
매핑 스키마 Microsoft SQL Server 2000에서는 요소와 특성을 데이터베이스 테이블과 열에 매핑하기 위해 XDR 스키마에서 사용할 수 있도록 많은 주석을 도입. XPath(XML 경로)를 사용하여 매핑 스키마(XML 뷰)에 대해 쿼리 지정가능. 매핑 스키마는 결과 문서 구조를 설명.
주석을 위한 이름 공간 XDR 스키마에서는 urn:schemas-microsoft-com:xml-sql 이름 공간을 사용하여 주석을 지정. 주석에는 urn:schemas-microsoft-com:xml-sql 이름 공간에 대한 이름 공간이 지정되어야 함. <?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:sql="urn:schemas-microsoft-com:xml-sql" > ........... </Schema>
데이터 형식을 위한 이름 공간 XDR 스키마를 사용하면 요소 또는 특성의 데이터 형식을 지정할 수 있음. 데이터 형식은 다음에 있는 urn:schemas-microsoft-com:datatypes 이름 공간을 사용하여 지정. 이름 공간 선언이 있는 최소 XDR 스키마 <?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:sql="urn:schemas-microsoft-com:xml-sql" xmlns:dt="urn:schemas-microsoft-com:datatypes"> ... </Schema>
XDR 스키마의 예제 <?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <ElementType name="Employee" > <AttributeType name="EmpID" /> <AttributeType name="FName" /> <AttributeType name="LName" /> <attribute type="EmpID" /> <attribute type="FName" /> <attribute type="LName" /> </ElementType> </Schema>
XDR 스키마의 예제 <?xml version="1.0" ?> 주석은 이 XDR 스키마에 추가되어 해당 요소와 특성을 데이터베이스 테이블과 열에 매핑. 다음은 주석 XDR 스키마임. <?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data“ xmlns:dt="urn:schemas-microsoft-com:datatypes“ xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <ElementType name="Employee" sql:relation="Employees" > <AttributeType name="EmpID" /> <AttributeType name="FName" /> <AttributeType name="LName" /> <attribute type="EmpID" sql:field="EmployeeID" /> <attribute type="FName" sql:field="FirstName" /> <attribute type="LName" sql:field="LastName" /> </ElementType> </Schema>
XPath 쿼리 사용 주석 XDR 스키마를 위한 Microsoft® SQL Server™ 2000 지원 기능을 사용하면 데이터베이스에 저장된 관계형 데이터의 XML 뷰를 만들 수 있음. XPath 언어의 하위 집합을 사용하여 주석 XDR 스키마에서 만든 XML 뷰를 쿼리 가능. XPath 쿼리를 템플릿 안에 또는 URL의 일부로 지정가능. 매핑 스키마는 이러한 결과 조각의 구조를 결정하며 데이터베이스로부터 값이 검색. 이 과정은 CREATE VIEW 문을 사용하여 뷰를 만들고 뷰에 대해 SQL 쿼리를 작성하는 과정과 개념상 비슷.
XPath 쿼리 사용 XPath 쿼리 지정 XPath 쿼리는 URL에 지정된 템플릿이나 URL에서 직접 지정할 수 있음. 매개 변수는 XPath 변수를 사용하여 템플릿이나 URL에서 직접 지정한 XPath 쿼리에 전달될 수 있음. URL의 XPath 쿼리 XPath 쿼리를 URL에서 직접 지정할 수 있음. http://IISServer/VirtualRoot/SchemaVirtualName/SchemaFile/XPathQuery[?root=ROOT]
지원되는 기능 기능 항목 단순 쿼리에 대한 링크 축 attribute, child, parent, self 축 Xpath 쿼리에서 축 지정 부울 값의 조건자(연속 및 중첩 조건자 포함) XPath 쿼리에서 산술 연산자 지정 모든 관계 연산자 =, !=, <, <=, >, >= XPath 쿼리에서 관계 연산자 지정 산술 연산자 +, -, *, div XPath에서 산술 연산자 지정 명시적 변환 함수 number(), string(), Boolean() XPath 쿼리에서 명시적 변환 함수 지정 부울 연산자 AND, OR XPath 쿼리에서 부울 연산자 지정 부울 함수 true(), false(), not() XPath 쿼리에서 부울 함수 지정 XPath 변수 XPath 쿼리에서 XPath 변수 지정
XPath 쿼리 사용 예제 <root> <Customer cid= "C1" name="Janine" city="Issaquah"> <Order oid="O1" date="1/20/1996" amount="3.5" /> <Order oid="O2" date="4/30/1997" amount="13.4">Customer was very satisfied</Order> </Customer> <Customer cid="C2" name="Ursula" city="Oelde" > <Order oid="O3" date="7/14/1999" amount="100" note="Wrap it blue white red"> <Urgency>Important</Urgency> </Order> <Order oid="O4" date="1/20/1996" amount="10000"/> </root>
쿼리에서 주석 XDR 스키마 사용 XDR 스키마에 대해 템플릿에서 XPath 쿼리를 지정. 인라인 매핑 스키마 주석 스키마는 템플릿에 직접 포함될 수 있음. sql:is-mapping-schema 주석을 사용하여 인라인 주석 스키마를 지정. sql:is-mapping-schema는 부울 형식 값(0 = FALSE, 1 = TRUE). sql:is-mapping-schema는 템플릿의 <Schema> 요소에 지정. sql:id 특성은 그것이 포함된 요소를 고유하게 식별. sql:id는 ID 유형 특성으로 <Schema> 요소에 지정. 그런 다음, <sql:xpath-query>의 mapping-schema 특성을 사용하여 인라인 주석 스키마를 참조하기 위해 sql:id에 할당된 값을 사용.
인라인 주석 스키마가 지정된 템플릿 <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <Schema xmlns="urn:schemas-microsoft-com:xml-data" sql:id="MyMappingSchema" sql:is-mapping-schema="1"> <ElementType name="Employees" > <AttributeType name="EmployeeID" /> <AttributeType name="FirstName" /> <AttributeType name="LastName" /> <attribute type="EmployeeID" /> <attribute type="FirstName" /> <attribute type="LastName" /> </ElementType> </Schema> <sql:xpath-query mapping-schema="#MyMappingSchema"> Employees </sql:xpath-query> </ROOT>
인라인 주석 스키마가 지정된 템플릿 이 템플릿은 가상 루트 디렉터리의 템플릿 하위 디렉터리에 파일 이름 InlineSchemaTemplate.xml로 저장. 다음 URL이 템플릿을 실행. http://IISServer/VirtualRoot/template/InlineSchemaTemplate.xml
URL의 매핑 스키마 XPath 쿼리를 URL에서 주석 스키마에 대해 직접 지정할 수 있음. 이것은 schema 유형의 가상 이름을 만들고 URL에 주석 스키마와 XPath 쿼리를 지정하는 방식으로 수행. <?xml version="1.0" ?> <Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes" xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <ElementType name="Customer" sql:relation="Customers" > <AttributeType name="CustomerID" /> <AttributeType name="ContactName" /> <AttributeType name="Phone" /> <attribute type="CustomerID" /> <attribute type="ContactName" /> <attribute type="Phone" /> </ElementType> </Schema>
URL의 매핑 스키마 http://IISServer/VirtualRoot/schema/Schema2.xml/ 이 XDR 스키마는 가상 루트 디렉터리의 스키마 하위 디렉터리에 파일 이름 Schema2.xml로 저장. 주석 스키마에 대한 XPath 쿼리는 URL에 직접 지정. http://IISServer/VirtualRoot/schema/Schema2.xml/ Customer[@CustomerID="ALFKI"]
템플릿의 XPath 쿼리 템플릿에 XPath 쿼리를 작성하고 URL에 템플릿을 지정할 수 있음. 다음 URL이 템플릿을 실행. <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="FilePath/AnnotatedSchemaFile.xml"> Specify the XPath query </sql:xpath-query> </ROOT> http://IISServer/VirtualRoot/VirtualName/TemplateFile.xml
HTTP를 사용하여 템플릿 파일 실행 템플릿의 사용 SQL 쿼리 또는 XPath 쿼리를 지정. XPath 쿼리가 템플릿에 지정될 경우, 실행될 쿼리에 대한 매핑 XML Data-Reduced(XDR) 스키마 파일도 템플릿에서 확인됨. SQL 또는 XPath 쿼리를 실행하여 반환된 XML 단편에 대해 최상위 수준 요소를 지정. 따라서 URL에서 템플릿을 실행한 결과를 유효한 XML 문서로 만듬. SQL 문 또는 XPath 쿼리에 전달할 수 있는 매개 변수를 정의. 이름 공간을 선언. Extensible Stylesheet Language(XSL) 스타일시트를 결과 문서에 적용하도록 지정.
XML 템플릿 사용 <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql" sql:xsl='XSL FileName' > <sql:header> <sql:param>..</sql:param> <sql:param>..</sql:param>...n </sql:header> <sql:query> sql statement(s) </sql:query> <sql:xpath-query mapping-schema="SchemaFileName.xml"> XPath query </sql:xpath-query> </ROOT>
XML 템플릿 사용 <ROOT>:이 태그를 지정하여 결과 XML 문서에 대해 단일 최상위 수준 요소(루트 태그라고도 함)를 제공. <ROOT> 태그는 어떤 이름도 가질 수 있음. <sql:header>:이 태그를 사용하여 헤더 값을 보유. 현재 구현에서 <sql:param> 요소만 이 태그에 지정할 수 있음. <sql:header> 태그는 상위 태그로 사용되며, 이 태그를 사용하여 여러 매개 변수를 정의할 수 있음. 모든 매개 변수를 한 곳에서 정의하면 매개 변수 정의를 보다 효율적으로 처리할 수 있음. <sql:param>:이 요소를 사용하여 템플릿 내 쿼리에 전달될 매개 변수를 정의. 각 <param> 요소는 하나의 매개 변수를 정의. 여러 <param> 요소를 <sql:header> 태그 안에 지정할 수 있음. <sql:query>:이 요소를 사용하여 SQL 쿼리를 지정합니다. 템플릿에 여러 <sql:query> 요소를 지정. <sql:xpath-query>:이 요소를 사용하여 XPath 쿼리를 지정. XPath 쿼리는 주석 XML Data-Reduced(XDR) 스카마에 대해 실행되기 때문에, mapping-schema 특성을 사용하여 스키마 파일 이름을 지정해야 함. sql:xsl:이 특성을 사용하여 결과 XML 문서에 적용할 Extensible Stylesheet Language(XSL) 스타일시트를 지정. XLS 파일을 지정할 경우 상대 또는 절대 경로를 지정할 수 있음. 지정된 이 상대 경로는 template 유형의 가상 이름과 연관된 디렉터리를 기준으로 함. 예를 들어, template 유형의 가상 이름과 연관된 디렉터리가 C:\Template이면 sql:xsl에 대해 지정된 상대 경로인 Xyz/MyXSL.xml은 C:\Template\Xyz\MyXSL.xml로 매핑. mapping-schema:이 특성을 사용하여 주석 XDR 스키마를 확인. 이 특성은 템플릿에 XPath 쿼리를 실행하고 있을 경우에만 지정됨. XPath 쿼리는 주석 XDR 스키마에 대해 실행. 매핑 스키마 파일을 지정할 경우 상대 경로나 절대 경로를 지정할 수 있음. 지정된 이 상대 경로는 template 유형의 가상 이름과 연결된 디렉터리를 기준으로 함. 예를 들어, template 유형의 가상 이름과 연관된 디렉터리가 C:\Template이면 mapping-schema에 대해 지정된 상대 경로인 Schema/MSchema.xml이 C:\Template\Schema\MSchema.xml로 매핑.
템플릿 저장 템플릿은 template 유형의 가상 이름과 연관된 디렉터리 또는 그 하위 디렉터리 중 하나에 저장. 템플릿이 template 유형의 가상 이름과 연결된 디렉터리에 저장될 경우, URL 쿼리임. http://IISServer/nwind/TemplateVirtualName/TemplateFile.xml 템플릿이 template 유형의 가상 이름과 연관된 하위 디렉터리에 저장될 경우(xyz), URL 쿼리임. http://IISServer/nwind/TemplateVirtualName/xyz/TemplateFile.xml
UPDATEGRAM 업데이트그램은 XML 문서의 구조를 정의하는 것. 다른 XML 문서에 대한 변경을 설명하는 데 사용.이 변경은 문서 단편(fragment)이 변경 전에 보이는 것과 변경 후에 보이는 것을 제시함으로써 표시. 이전 데이터는 변경되어야 하는 문서 내 해당 부분의 위치를 찾기 위해 사용. 문서에서 일치되는 하나의 단편을 찾기 위해서는 데이터를 명확히 지정해야 함. 이전 데이터와 일치하는 문서의 부분이 발견된 경우, 이 부분은 업데이트그램의 이후 데이터 단편에서 지정된 데이터와 일치시키기 위해 변경됨. 이 메커니즘은 다른 사용자가 문서의 같은 부분을 변경했을 경우 이후 데이터가 일치하지 않으며 따라서 업데이트가 되지 않기 때문에, 최적 병행성을 지원하기도 함.
UPDATEGRAM의 예제 <ROOT xmlns:updg="urn:schemas-microsoft-com:xml-updategram"> <updg:sync mapping-schema=" CustOrdOd.xml" > <updg:before> <Customer CustomerID="AROUT"> <Order OrderID="10383" EmployeeID="4" OrderDate="1999-08-08 14:35:00"> <OrderDetail ProductID="42" UnitPrice="$9.80" Quantity="3" /> </Order> </Customer> </updg:before> <updg:after> <Order OrderID="10383" EmployeeID="6" OrderDate="1999-09-18 09:15:00"> <OrderDetail ProductID="42" UnitPrice="$9.80" Quantity="30" /> <OrderDetail ProductID="14" UnitPrice="$18.60" Quantity="100" /> </updg:after> </updg:sync> </ROOT>
XDR 예제
XDR 예제
Xpath query 예제
Xpath query 예제
참고사이트 XML website SQL Server 2000 and IIS http://msdn.microsoft.com/xml SQL Server 2000 and IIS http://msdn.microsoft.com/msdnmag/issues/0300/sql/sql.asp SQL Server 2000 http://www.microsoft.com/sql