Relational-Style XML Query @ SIGMOD-J 2008 Dec.

50 %
50 %
Information about Relational-Style XML Query @ SIGMOD-J 2008 Dec.
Technology

Published on December 21, 2008

Author: taroleo

Source: slideshare.net

Description

Relational-Style XML Query(フラットなSQLを用いて、複雑な木構造を持ったXMLを検索する方法)ACM SIGMOD日本支部大会での発表スライド

斉藤 太郎 (Taro L. Saito) 東京大学 2008年12月20日 ACM SIGMOD 日本支部第40回大会 http://www.xerial.org/

さあ みんなで SAX, DOM, XMLのプロジェクト XPATH, XQUERY, DTD, XML 我が社にとってXMLは重 を始めることにした SCHEMA, RELAX NG 要だ。今までのテーブル を勉強するんだ! と違って、まったく新し いデータ構造だからな  はっきり言って、たいへんです。 › XMLを使うのにこんなに学ぶことがあるなんて 2

 XMLのいいところ › テキスト(簡単に扱える) › XMLの方が直観的なデータ構造に近い <Company value=“1”> <Emp value=“e1”> <Office>NY</Office> </Emp> <Emp value=“e2”> Co <Office>NY</Office> </Emp> Company Employee Office </Company> 1 e1 NY Emp Emp 1 e2 NY e1 e2 Relational Data Office Office (テーブルデータ) NY NY XML Data 3

 XMLに変換されたテーブルデータを取り出したい  例題:テーブルの一行 (Co, Emp, Office) をXML から取り出す › 例えば、XPath(経路を指定して検索する方法)では /Co/Emp/Office と書く Co Co Emp Office 1 e1 NY 1 e2 NY Emp Emp e1 e2 Relational Data Office Office NY NY XML Data 4

 テーブルからXMLへの変換の仕方は、一通 りではない Co Co Emp Office 1 e1 NY Emp Emp 1 e2 NY e1 e2 Relational Data Co Office Office NY NY Office NY Office NY Co Emp Emp Emp Emp e1 e2 e1 e2 5

 XML構造全体を把握していないと、構造のゆら ぎのため、正しい経路を指定できない › データベース設計者と利用者の意思疎通が必要 不可欠 Co Co Office NY Emp Emp Office NY e1 e2 Co Emp Emp Emp Emp Office Office e1 e2 e1 e2 NY NY /Office[Co]/Emp /Co/Office/Emp /Co/Emp[Office] [X] : 枝分かれ 6

 鍵となる考え方 › Relation(行データ)は、XML Co Emp Office に埋め込まれているだけ 1 e1 NY 1 e2 NY Relational Data Co Co Emp Emp Office NY e1 e2 Office NY Office Office Co Emp Emp NY NY e1 e2 Emp Emp e1 e2 7

XPathは要らないんじゃない? 8

 XMLからrelation(テーブル)を取り出す手法 › 検索にはSQL文を使う  SELECT Co, Emp, Office from (XML Data) Co Co Office Emp Emp Office SQL over NY Input XML Data e1 e2 NY XML! Co Emp Emp Office Office Emp Emp e1 e2 NY NY e1 e2 Co Emp Office 1 e1 NY Result 1 e2 NY  設計者がどんなXML構造を使っていて も、SQL文は影響を受けない 9

 SQL文 SELECT A, B, C をXMLの構造を検索する問い 合わせに変換する › (A, B, C)のXML表現では、様々な構造のゆらぎが生じ得る A B B A C B C ….. A C B C A B C A  一般に、N個のノードには NN-1 種類の構造のゆ らぎがある 10

 (A, B, C) が amoeba (アメーバ)構造  A, B, Cのうち、どれか一つが他の親ノー ド(祖先も含む)になっている A B B A C B C ….. A C B C A B C A  Amoeba joinは、すべてのamoeba構造を XMLから取り出す操作. 11

 Amoebaではあるが、relation(行データ)にはな らない構造がある › なぜ、下図のamoebaがrelationにならないのか?  それは、XMLの構造の中に、functional dependencies (FD) が暗黙に想定されているから 1 company Company M office Office Office 1 N employee Emp Emp Emp Emp ER-diagram (Data Model) 12

 FD: X -> Y (ノードXからユニークな(たった1つの)ノードY が見つけられる) › employee-> office (各employee は特定のofficeに所属している) › office -> company (各office は、ある会社に属している)  Relation in XML では、個々のFDが、それぞれamoeba構造 をとる必要がある 1 company Company M amoebaに office Office Office なっていない! 1 N employee Emp Emp Emp Emp ER-diagram (Data Model) 13

 company に、M 個所のoffice、またそれぞれのoffice にN人のemployeeがいるとすると…  (company, office, employee) の組み合わせの数: › M = 100, N = 5 のとき 100 x (100 x 5) = 50,000  一方、正しい組み合わせの数は M * N = 500 1 company Company M office Office Office Office 1 N Emp Emp Emp Emp employee Emp Emp Emp Emp Emp 14

 FD: Emp -> Office, Office -> Company  ボトムアップにamoebaを組み立てていく 1. Amoeba Join (Employee, Office) 2. Amoeba Join (Office, Company) 1 company Company M office Office Office Office 1 N Emp Emp Emp Emp employee Emp Emp Emp Emp Emp  FDを考慮すると、関係のない構造をはじくことができる 15

 FDを考慮したamoeba join › データサイズに比例した性能 16

 SQLからXMLクエリへ自動変換 › SELECT Co, Office, Emp  FD: Emp -> Office, Office -> Co Co Office Office Co Emp Office Emp ….. Co Emp Office Emp Co Office Emp Co  XMLクエリは、Relation(テーブル構造)とFD から自動的に定まる 17

 1対多 (one-to-many) と1対1 (one-to-one) › 例:FD、 Emp -> Office は、以下のような関係に対応:  個々のemployeeは、あるofficeに属している  逆に考えて、officeには、複数の employeeがいる (1対多)  1対1、1対多の関係(FD)を見つけるには、 › XMLデータ中から親子関係にある組の出現頻度を数える › あるいは、ERダイアグラム・UML(データモデル)から直接抽出 Company company 1 M Office office Office 1 N Emp Emp Emp Emp employee 18

 「XMLは木構造」という発想から抜け出す › XML := Relation + Annotation  ステップ › 1. XMLデータからRelation(行データ)を見つける › 2. 1対多のFDを見つける › 3. SQLで問い合わせ文を書く company  SELECT Co, Emp, Office c1 annotation employee absent  備考: e1  アノテーションをクエリに含め ることもできる employee office NY e2  一部はXMLのまま、その他は relationという構成も可能 office NY 19

 Relation in XML › AmoebaとFDで、構造が決まる  Relational-Style XML Query › SQLを用いて、XMLからrelationを取り出せる › 構造のゆらぎに強い  XMLデータの組み方に自由度が生まれる  Good-bye XPath!! › 目的のXML構造は、パスで指定せずとも、テー ブルスキーマとFDから自動的に決まる 20

 技術的な詳細は論文の方に › Relational-Style XML Query. Taro L. Saito, Shinichi Morishita. SIGMOD 2008.  RDBMSと同じ枠組みで実装できる › 問い合わせ代数・クエリの最適化など  データベースの統合にも活用できる  XMLデータのスキーマ変更が容易に › RDBMSのスキーマ拡張とほぼ同じ  Relationalデータに、XMLを使った annotationを付加しやすくなる  …などなど 21

 実は「SQLでいける」  よくよく見ると、XMLの中にテーブル構造(relational data)が埋め込まれている場合がほとんど XMLのプロジェクト 我が社にとってXMLは Relational Styleで を始めることにした 重要だ。でも、XMLと 考えれば怖くない!! いってもほとんど テーブルデータなんだ  XML技術の深みにはまる前に… Think in Relational Style!!! 22

23

 OR (Object-Relational) マッピング › Object-XMLマッピングのサブセット › プログラム言語のクラス定義から、スキーマ定義を抽出  Javaなどのリフレクション機能を用いると全自動 › オブジェクトデータをXMLや、RDBに出力  AmoebaとFDさえ満たしていれば、どのようなXML構造 で出力してもOK › XML・RDBデータを読み込んで、オブジェクトを生成  SAX, DOMでのプログラミングが一切不要になる  他の木構造データにも使える › JSON, YAMLなども扱える › CSVなどテーブル形式のデータでも構わない 24

 Class定義からrelation & FDを抽出 › Relation: (id, start, end , name) › FD: gene -> id, start, end, name › XML からList<Gene>を取りだす Class Definition (Java) class Gene { <data> private int id; <gene id=“1”> private int start; <start>100</start> private int end; private String name; <end>3000</end> <name>A</name> public Gene(){} </gene> <gene id=“2”> public void setId(int id) { this.id = id; } <start>3500</start> public void setName(String name) <end>7000</end> { this.name = name; } </gene> // followed by other setters </data> …. } 25

 Xerial (エクセリアル) Project › XML DBMSの実装、OR・OXマッピング関連 のライブラリなど › http://www.xerial.org/  Relational-Style XML Query › 開発版をオープンソースで公開予定  Apache License Version 2.0 › Javaによる実装  MavenのCentral Repository経由で配布さ れます 26

Add a comment

Comments

無料宅配 | 03/06/15
こんにちは この見に行くご覧すべてのボディに、それは私の最初のです。このブログ が含まれ 顕著と実際 良い のために設計のための 情報。 [url=http://www.amisosfurniture.com]無料宅配[/url]
免税店 新 | 09/06/15
I ことができませんでした |コメントご遠慮レジスト。 完全書かれました! [url=http://www.gurkanotomotiv.com]免税店 新作[/url]

Related presentations

Related pages

Leo's Chronicle: XML時代の終焉 ~ XMLから再びCoddへ

Relational-Style XML Query @ SIGMOD-J 2008 Dec. View SlideShare presentation or Upload your own. ... Relational-Style XML Queryが示す世界は、XML ...
Read more

How can I query a value in SQL Server XML column - Stack ...

I have following XML stored in a XML column ... test.com/2008/06/23/HL ... when doing adhoc queries on XML columns in SQL Server Management ...
Read more

Select values from XML field in SQL Server 2008 - Stack ...

Just looking at my XML field, my rows look like this: < ... answered Dec 19 '13 at 1:18. ... SQL Server 2008 XML Query.
Read more

LINQ to Query XML documents

LINQ to Query XML documents. Archived Forums I-L > ... Monday, July 28, 2008 1:39 PM. Answers text/html 7/28/2008 4:54:56 PM Martin Honnen 0. 0.
Read more

Read XML file in SQL Server 2008 - Database Administrators ...

How can I read an XML file and store the data in XML to our table in SQL Server 2008? ... Dec 6 '11 at 0:04 ... XPath queries. DECLARE @foo XML SELECT @foo ...
Read more

VLDB2008 国際会議報告 および XML DBの最新動向」

「VLDB2008 国際会議報告 および XML DBの最新動向」 2008年12月 ... 11:25-11:40 休憩 11:40-12:30 「Relational-Style XML Query ...
Read more

Using LINQ to Query Excel Tables - Eric White's Blog ...

... and Linq to Xml to write that data to excel. ... 3 Dec 2008 5:54 PM. ... Have you tried out the open source Linq to Excel project ...
Read more