• 검색 결과가 없습니다.

II. XML 과 Database 연동

N/A
N/A
Protected

Academic year: 2022

Share "II. XML 과 Database 연동"

Copied!
18
0
0

로드 중.... (전체 텍스트 보기)

전체 글

(1)

임 순 범

숙명여대 정보과학부 멀티미디어학과

II. XML 과 Database 연동

[Beginning XML, 제 13 장 ]

멀티미디어 데이터베이스

(2001.10.23~11.1)

(2)

목차

[ 교재 ] Beginning XML, David Hunter 외 5 인 공저 , 정보문화사 , 2001.

제 13 장 XML 과 데이터베이스 , pp.625-654.

1. 관계형 Database 예제

2. 기존의 Database 사용하기 3. XML 을 Database 에 통합하기 4. Database 제작사와 XML

1) Microsoft SQL Server

2) Oracle XDK

(3)

1. 관계형 Database 예제

• RDB 의 특징

– 테이블을 사용하여 데이터를 구조화 : Field, Record – 초점은 Application 이 아니라 데이터 그 자체

• 예제

– Parts table, – Customer table

– Order table

item description

E16-25A 책상

E25-25A 소파

account_no name home_phone work_phone 125692 홍길동 02)555-1212 02)555-2121 125693 고소영 02)555-1111 02)555-1112 125694 이몽룡 043)854-9919 02)555-1010

order_no account_no item quantity date

123587 125692 E16-25A 16 2001/9/1

123588 125692 E16-25A 1 2001/10/1

123589 125694 E16-25A 20 2001/10/1

(4)

• SQL (Structured Query Language)

SELECT name FROM Customer WHERE account_no = ‘125692’

• 결과 :

SELECT Order.order_no, Order.account_no, Customer.name, Order.item, Parts.description, Order.quantity, Order.date

FROM Order, Customer, Parts

WHERE Order.order_no = ‘123587’

AND Customer.account_no = Order.account_no AND Parts.item = Order.item

– Recordset : ADO(Active Data Objects) 기능 – Uniqueness (Database Integrity) : Primary key

description 책상 order_no account_no item quantity date

123587 125692 E16-25A 16 2001/9/1

name 홍길동 name

홍길동

(5)

• SQL Join

– SELECT o.order_no, o.account_no, c.name, o.item, p.description, o.quantity, o.date

FROM Parts p INNER JOIN Order o ON p.item = o.item

INNER JOIN Customer c ON o.account_no = c.account_no

WHERE o.order_no = ‘123587’

• Normalization

– Database Integrity, easy to application, but speed (need to join) – vs. Denormalization

o.order_no o.account_n

o c.name o.item p.description o.quantity o.date

123587 125692 홍길동 E16-25A 책상 16 2001/9/1

(6)

2. 기존의 Database 사용하기

• N- 계층 구조

모든 데이터 저장 , 보통 경우는 Database

( 경우에 따라 stored procedure 사용 )

Database 와 Business Objects 가 서로 통신

( 예 , ADO Recordset)

application 논리에 따라 presentation 과 data 층 통신

사용자와 의사소통

• N- 계층 구조의 장점

– 개발자 역할이 단순화 : 각 계층 별로 – 변경이 용이하고 , 재사용성 증가

– 분산 시스템의 확장성 및 보안이 좋다 .

• N- 계층 구조에 XML 적용 => 어느 계층 ?

Data services Data Objects Business Objects

Presentation

(7)

• 이기종 분산 환경의 예

• XML 을 사용한 분산 환경 구축

– BizTalk, SOAP, XML-RPC 등 DB2

DB2 data object

Business Object

Presentation

SQL server Oracle

SQL server data object

Oracle data object

Business Object

Presentation

 SQL

 COM 표준 인터페이스 (Component Object Model) 예 , ADO VB, JDBC

 XML 언어 사용 저장 - 서버에 독립적 ,

- HTTP 프로토콜 통신

 서버 독립적 XML 표 현

ASP, CGI, VB, Java => XML, HTML, etc.

. . .

(8)

예제 코드

• Data Object 로부터 XML 결과 받기

– Data Object 생성하고 , 결과 XML 문서를 작성하는 VB 코드

– Database 에 접속하기 위하여 ADO(ActiveX Data Object) 객체 사용 – MSXML 파서를 사용하여 XML 문서 생성

• 예제 코드

– ADO 의 Connection 객체 사용하여 DB 에 접속 – DB 를 작동하기 위한 SQL 구문 준비

=> SQL 실행 & 결과 XML 문서 생성

Dim cnnDatabaseConnection AS ADODB.Connection Set cnnDatabaseConnection = New ADODB.Connection

…Dim strSQL As String

strSQL = “SELECT name FROM Customer WHERE account_no = ‘125692’

(9)

– Connection 객체의 Execute() 메소드가 SQL 구문 호출 – 결과는 ADO 의 Recordset 객체로

– 문서 생성 : MSMXL 의 DOM 객체 사용

– 결과

Dim objXML As MSXML.DOMDocument Set objXML = New MSXML.DOMDocument objXML.loadXML “<root> <name/> </root>”

‘ 초기 문서 생성

objXML.selectSingleNode(“/root/name”).Text = rsResults(“name”).Value

‘ SQL 결과를 XML 문서에 추가

Dim rsResults AS ADODB.Recordset

Set rsResults = cnnDatabaseConnection.Execute(strSQL)

<root>

<name />

<root>

<name> 홍길동 </name>

(10)

3. XML 을 Database 에 통합하기

• 비정규화 방법으로 저장하기

– XML 문서 그대로 저장 , primary key 는 별도로 저장 – 예제 ) Order table

– SELECT order_xml FROM Order WHERE order_no = ‘123587’

order_no account_no order_xml

123587 125692 <?xml version=“1.0”?>

<Order number=“123587”>

<Account number=“125692”>

<Name>홍길동 </Name>

<Homephone>02)555-1212</ Homephone>

<Workphone>02)555-2121</ Workphone>

</Account>

<Item number=“E16-25A”>

<Description>책상 </Description>

<Quantity>16</Quantity>

</Item>

<Date>2001/9/1</Date>

</Order>

. . .

(11)

• Staging Database

– Front-end : 비정규화 데이터를 임시 저장 장소에 보관 – Back-end : 정규화된 RDB 에 저장

– application 사용 시 편리 : join 필요 없음 , 간단한 SQL

– Staging DB 에 임시로 보관 , 일정 기간 후 삭제 => 공간 문제 해결 – 제약점 : 데이터를 가공하여 사용할 때 추가 작업 필요

– 예 ) 폼기반 웹 응용 : 폼 입력시 최종 submit 에만 DB 에 전송

• XML 형식의 데이터

– Data Object 에서 XML 문서를 SELECT 혹은 INSERT 하는 SQL 명 령

– Data Object 에서 수행 작업이 감소 => 더 많은 응용 가능 – Front-end 응용에서는 XML 의 모든 장점 적용 가능

– XML 문서를 분할하여 저장하는 것도 가능 => 여러 기법 적용

(12)

예제

• 간단한 Data Object 처리

Dim cnnDatabaseConnection AS ADODB.Connection Set cnnDatabaseConnection = New ADODB.Connection Dim strSQL As String

strSQL = “SELECT order_xml FROM Order WHERE order_no = ‘123587’

Dim rsResults AS ADODB.Recordset

Set rsResults = cnnDatabaseConnection.Execute(strSQL)

‘ 여기까지는 동일

Dim strResult As String

strResult = rsResults(“order_xml”).Value

‘ DOM 필요 없음 :

‘ objXML = New MSXML.DOMDocument, loadXML, selectSingleNode( )

(13)

4. Database 제작사와 XML

• XML 과 Database 는 서로 보완 관계

– XML 의 강정과 유연성을 활용하는 방향

– 데이터 검색 후 XML 로 변경 , 더 나아가 XML 형태로 저장

• XML 통합기술

– Data Object 제작시 쉽게 작업하도록 XML 지원 기능제공 – Microsoft

• IE : MSXML 내장

• Microsoft SQL Server

– Oracle

• XDK (XML Developer’s Kit)

• XML SQL Utility

– eXcelon : 전문 XML Database

(14)

Microsoft SQL Server

• SQL Server 2000

– SQL 예제 : SELECT name FROM Customer

• ISAPI filter 사용

http:// 서버명 /DB 명 ?sql=SELECT+name+FROM+Customer+FOR+XML+RAW

• 템플리트 파일 사용

http:// 서버명 /DB 명 /name.xml

– 결과

<root>

<sql:query xmlns:sql=“urn:schemas-microsoft-com:xml-sql”>

SELECT name FROM Customer FOR XML RAW </sql:query>

</root>

<?xml version=“1.0” ?>

<root>

<row name =“ 홍길동” />

<row name =“ 고소영” />

(15)

• 템플리트 파일 사용 예제 2

http:// 서버명 /DB 명 /order.xml

=> 원하는 order_no 를 골라서 선택하려면

<?xml version=“1.0” ?>

<root>

<sql:query xmlns:sql=“urn:schemas-microsoft-com:xml-sql”>

<! [CDATA [

SELECT Order.order_no, Order.account_no, Customer.name,

Order.item, Parts.description, Order.quantity, Order.date FROM Order, Customer, Parts

WHERE Order.order_no = ‘123587’

AND Customer.account_no = Order.account_no AND Parts.item = Order.item

FOR XML RAW ] ] > </sql:query>

</root>

(16)

• 템플리트 파라메터 사용

http:// 서버명 /DB 명 /order.xml?ordnum=‘123587’

– IE 출력 : 스타일 시트 선언 포함

<?xml version=“1.0” ?>

<?xml-stylesheet . . . ?>

<root>

<sql:query ordnum=‘ ’ xmlns:sql=“urn:schemas-microsoft-com:xml-sql”>

<! [CDATA [

SELECT Order.order_no, Order.account_no, Customer.name,

Order.item, Parts.description, Order.quantity, Order.date FROM Order, Customer, Parts

WHERE Order.order_no = ?

AND Customer.account_no = Order.account_no AND Parts.item = Order.item

FOR XML RAW ] ] > </sql:query>

</root>

(17)

Oracle XDK

• 자바용 XML SQL Utility

– SQL 예제 : SELECT name FROM Customer – 결과

• Java XSQL sublet 작성

<?xml version=“1.0” ?>

<ROWSET>

<ROW id=“1”> <name> 홍길동 </name> </ROW>

<ROW id=“2”> <name> 고소영 </name> </ROW>

<ROW id=“3”> <name> 이몽룡 </name> </ROW>

</ROWSET>

<?xml version=“1.0” ?>

<?xml-stylesheet . . . ?>

<query find=“%” sort=“ENAME” >

SELECT * FROM EMP

WHERE ENAME LIKE ‘%{@find}%’

ORDER BY {@sort}

</query>

(18)

• XSQL 템플리트 파라메터 사용 예제

http:// 서버명 /DB 명 /order.xsql?ordnum=‘123587’

<?xml version=“1.0” ?>

<?xml-stylesheet . . . ?>

<query ordnum=‘ ’ >

<! [CDATA [

SELECT Order.order_no, Order.account_no, Customer.name,

Order.item, Parts.description, Order.quantity, Order.date FROM Order, Customer, Parts

WHERE Order.order_no = {@ordnum}

AND Customer.account_no = Order.account_no AND Parts.item = Order.item

] ] >

</query>

참조

관련 문서

SELECT P_DESCRIPT, P_INDATE, P_PRICE, V_CODE FROM PRODUCT. WHERE

„ End Element Handler – end element tag encountered, path nodes promoted to wait list are deleted, restoring those lists to state they were in before reading an

여기에는 농어촌주민의 보건복지 증진 을 위한 특별법에 근거해 노인복지법 제31조 노인복지시설을 종합적으로 배치한 복합노인복지시설을

à Element nodes have child nodes, which can be attributes or subelements à Text in an element is modeled as a text node child of the element. à Children of a node

select item-name, color, size, sum(number) select item name, color, size, sum(number) from sales. group by

XML - basic foundation, provides a language for defining data &amp; method of processing them SOAP(Simple Object Access Protocol) - a collection of XML based rules

(select branch name customer name (select branch_name, customer_name from borrower, loan. where borrower.loan_number

In linear stability problems of the nongyroscopic conservative type all the critical loads are supplied not only by the kinetic approach but also by the