130 likes | 208 Views
CXquery 를 이용한 스트림 데이터 쿼리 프로세싱. Database LAB M.S. 3 김소라. Contents. 1. Introduction 2. 동기 3. 시스템 구조 4. 실험결과 5. 결론. Introduction. What is “ CXquery ” ? 문서 구조에 대한 지식 없이 질의할 수 있는 XML 질의 언어 데이터 검색시 , XPath 와 달리 데이터가 있는 경로까지 명시를 하지 않음 질의 시 , 데이터 이름과 값만을 사용
E N D
CXquery를 이용한 스트림 데이터 쿼리 프로세싱 Database LAB M.S. 3 김소라
Contents • 1. Introduction • 2. 동기 • 3. 시스템 구조 • 4. 실험결과 • 5. 결론
Introduction • What is “CXquery”? • 문서 구조에 대한 지식 없이 질의할 수 있는 XML 질의 언어 • 데이터 검색시, XPath와 달리 데이터가 있는 경로까지 명시를 하지 않음 • 질의 시, 데이터 이름과 값만을 사용 • XML 문서의 DTD를 알지 못하더라도 사용자는 원하는 데이터를 얻을 수 있다. • 표현 방식 : • 데이터 이름 = 데이터 값
Introduction <trade2> <comparing>-3500</comparing> <previous_rate>-0.74</previous_rate> </trade2> <value> <price>471,000</price> <standard>474,500</standard> <up_price>545,000</up_price> <down_price>403,500</down_price> <current_price>474,500</current_price <high_price>474,500</high_price> <low_price>471,000</low_price> </value> </trades> </stock> <stock> ….</stock> </stocks> <?xml version='1.0' encoding='euc-kr'?> <!DOCTYPE stocks SYSTEM "stock_case2.dtd"> <stocks> <stock stock_id="005930"> <date>2005-04-26</date> <time>15:50</time> <company name="SAMSUNG ELECTRONICS" home_addr="http://www.sec.co.kr/ <field>electronics</field <found_year>1969</found_year> <ceo>JONG-YONG YOON</ceo> <root>SAMSUNG</root> </company> <trades> <amount>187,546</amount> <trade1> <per>6.94</per> <pes>67,899</pes> <foreign_rate>54.11</foreign_rate> </trade1> 기존의 질의 방식(XPath): /stocks/stock/company[root=“SAMSUNG”] CXquery 방식: root=“SAMSUNG”
동기(cont’) • 웹 환경에서 스트리밍 XML 쿼리 • XML 쿼리를 위해 사용자는 데이터의 경로를 모두 알아야 함 • 수집되는 데이터, 문서 작성자에 따라 상이한 DTD의 XML문서 생김 실시간으로 수많은 다른 구조의 XML을 다루는 웹 환경에서 문서의 구조를 고려하지 않아도 원하는 문서를 검색할 수 있는 CXquery의 질의 표현과 질의 처리 기법을 이용한다.
동기(cont’) • XML (Publish-subscribe) 기반의 쿼리 프로세싱 시스템 NiagaraCQ, OpenCQ, XFilter, YFilter … • OpenCQ(1999년) • NiagaraCQ(2000년) • XFilter(2000년) • YFilter(2003년)
동기 • YFilter : 쿼리 프로세싱 시스템으로 YFilter 선택 • XML기반의 쿼리 프로세싱 시스템 중 시스템 update 및 연구가 활발 • predicate에 대한 처리도 제공 • XPath기반으로, 적용하려는 CXquery에 적당 • 설치가 쉽다.
System Architecture(con’t) 1 1 3 4 2 5 1. 사용자가 xml 문서, 데이터 이름을 시스템에 인풋 2. 시스템이 DTD 파악, DTD 패스파일이 있는지 체크. 3. 패스파일이 없으면 패스파일 생성 4. 패스파일이 있으면 데이터 이름이 들어간 패스들을 찾아냄 5. 그 패스들을 바탕으로 필터링
샘플 데이터 – stock_0426_1550.xml <?xml version='1.0' encoding='euc-kr'?> <!DOCTYPE stocks SYSTEM "stock_case2.dtd"> <stocks> <stock stock_id="005930"> <date>2005-04-26</date> <time>15:50</time> <company name="SAMSUNG ELECTRONICS" home_addr="http://www.sec.co.kr/"> <field>electronics</field> <found_year>1969</found_year> <ceo>JONG-YONG YOON</ceo> <root>SAMSUNG</root> </company> <trades> <amount>187,546</amount> <trade1> <per>6.94</per> <pes>67,899</pes> <foreign_rate>54.11</foreign_rate> </trade1> <trade2> <comparing>-3500</comparing> <previous_rate>-0.74</previous_rate> </trade2> <value> <price>471,000</price> <standard>474,500</standard> <up_price>545,000</up_price> <down_price>403,500</down_price> <current_price>474,500</current_price> <high_price>474,500</high_price> <low_price>471,000</low_price> </value> </trades> </stock> …… </stocks>
Module1 – Path Generator • <?xml version='1.0' encoding='euc-kr'?> • <!ELEMENT stocks (stock)*> • <!ELEMENT stock (date, time, company, trades)> • <!ATTLIST stock stock_id CDATA #REQUIRED> • <!ELEMENT date (#PCDATA)> • <!ELEMENT time (#PCDATA)> • <!ELEMENT company (field, found_year, ceo, root)> • <!ATTLIST company name CDATA #REQUIRED> • <!ATTLIST company home_addr CDATA #REQUIRED> • <!ELEMENT field (#PCDATA)> • <!ELEMENT found_year (#PCDATA)> • <!ELEMENT ceo (#PCDATA)> • <!ELEMENT root (#PCDATA)> • <!ELEMENT trades (amount, trade1, trade2, value)> • <!ELEMENT amount (#PCDATA)> • <!ELEMENT trade1 (per, pes, foreign_rate)> • <!ELEMENT per (#PCDATA)> • <!ELEMENT pes (#PCDATA)> • <!ELEMENT foreign_rate (#PCDATA)> <!ELEMENT trade2 (comparing, previous_rate)> <!ELEMENT comparing (#PCDATA)> <!ELEMENT previous_rate (#PCDATA)> <!ELEMENT value (price, standard, up_price, down_price, current_price, high_price, low_price)> <!ELEMENT price (#PCDATA)> <!ELEMENT standard (#PCDATA)> <!ELEMENT up_price (#PCDATA)> <!ELEMENT down_price (#PCDATA)> <!ELEMENT current_price (#PCDATA)> <!ELEMENT high_price (#PCDATA)> <!ELEMENT low_price (#PCDATA)>
쿼리 파일 Module2 – Data Path Selector
Conclusion • 현재, 웹 환경에서는 매우 다양한 종류의 XML 문서가 존재하게 된다. • 이 경우 사용자가 문서의 구조에 대해서 알아야만 질의할 수 있다. • 이 시스템은… • 상이한 XML DTD를 가진 문서에 대해 질의 가능 • 사용자는 그 구조에 대해서 알지 못하더라도, 질의하고자 하는 데이터 이름만 가지고 질의