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

Taro L. Saito
Taro L. SaitoPh.D., Software Engineer at Treasure Data
斉藤 太郎 (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
1 of 26

Recommended

JNuma Library by
JNuma LibraryJNuma Library
JNuma LibraryTaro L. Saito
1.5K views4 slides
2011年度 生物データベース論 2日目 木構造データ by
2011年度 生物データベース論 2日目 木構造データ2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データTaro L. Saito
2.5K views36 slides
Presto @ Treasure Data - Presto Meetup Boston 2015 by
Presto @ Treasure Data - Presto Meetup Boston 2015Presto @ Treasure Data - Presto Meetup Boston 2015
Presto @ Treasure Data - Presto Meetup Boston 2015Taro L. Saito
1.9K views16 slides
Streaming Distributed Data Processing with Silk #deim2014 by
Streaming Distributed Data Processing with Silk #deim2014Streaming Distributed Data Processing with Silk #deim2014
Streaming Distributed Data Processing with Silk #deim2014Taro L. Saito
4.1K views23 slides
Silkによる並列分散ワークフロープログラミング by
Silkによる並列分散ワークフロープログラミングSilkによる並列分散ワークフロープログラミング
Silkによる並列分散ワークフロープログラミングTaro L. Saito
2.5K views42 slides
Workflow Hacks #1 - dots. Tokyo by
Workflow Hacks #1 - dots. TokyoWorkflow Hacks #1 - dots. Tokyo
Workflow Hacks #1 - dots. TokyoTaro L. Saito
3.1K views31 slides

More Related Content

More from Taro L. Saito

Unifying Frontend and Backend Development with Scala - ScalaCon 2021 by
Unifying Frontend and Backend Development with Scala - ScalaCon 2021Unifying Frontend and Backend Development with Scala - ScalaCon 2021
Unifying Frontend and Backend Development with Scala - ScalaCon 2021Taro L. Saito
228 views39 slides
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020 by
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020Taro L. Saito
320 views35 slides
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020 by
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020Taro L. Saito
1.8K views39 slides
Airframe RPC by
Airframe RPCAirframe RPC
Airframe RPCTaro L. Saito
754 views32 slides
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020 by
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020Taro L. Saito
939 views21 slides
Airframe Meetup #3: 2019 Updates & AirSpec by
Airframe Meetup #3: 2019 Updates & AirSpecAirframe Meetup #3: 2019 Updates & AirSpec
Airframe Meetup #3: 2019 Updates & AirSpecTaro L. Saito
495 views40 slides

More from Taro L. Saito(19)

Unifying Frontend and Backend Development with Scala - ScalaCon 2021 by Taro L. Saito
Unifying Frontend and Backend Development with Scala - ScalaCon 2021Unifying Frontend and Backend Development with Scala - ScalaCon 2021
Unifying Frontend and Backend Development with Scala - ScalaCon 2021
Taro L. Saito228 views
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020 by Taro L. Saito
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Journey of Migrating 1 Million Presto Queries - Presto Webinar 2020
Taro L. Saito320 views
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020 by Taro L. Saito
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020
Scala for Everything: From Frontend to Backend Applications - Scala Matsuri 2020
Taro L. Saito1.8K views
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020 by Taro L. Saito
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020
td-spark internals: Extending Spark with Airframe - Spark Meetup Tokyo #3 2020
Taro L. Saito939 views
Airframe Meetup #3: 2019 Updates & AirSpec by Taro L. Saito
Airframe Meetup #3: 2019 Updates & AirSpecAirframe Meetup #3: 2019 Updates & AirSpec
Airframe Meetup #3: 2019 Updates & AirSpec
Taro L. Saito495 views
Presto At Arm Treasure Data - 2019 Updates by Taro L. Saito
Presto At Arm Treasure Data - 2019 UpdatesPresto At Arm Treasure Data - 2019 Updates
Presto At Arm Treasure Data - 2019 Updates
Taro L. Saito2.8K views
Reading The Source Code of Presto by Taro L. Saito
Reading The Source Code of PrestoReading The Source Code of Presto
Reading The Source Code of Presto
Taro L. Saito4.2K views
How To Use Scala At Work - Airframe In Action at Arm Treasure Data by Taro L. Saito
How To Use Scala At Work - Airframe In Action at Arm Treasure DataHow To Use Scala At Work - Airframe In Action at Arm Treasure Data
How To Use Scala At Work - Airframe In Action at Arm Treasure Data
Taro L. Saito1.3K views
Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018 by Taro L. Saito
Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018
Airframe: Lightweight Building Blocks for Scala - Scale By The Bay 2018
Taro L. Saito659 views
Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17 by Taro L. Saito
Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17
Airframe: Lightweight Building Blocks for Scala @ TD Tech Talk 2018-10-17
Taro L. Saito2.9K views
Tips For Maintaining OSS Projects by Taro L. Saito
Tips For Maintaining OSS ProjectsTips For Maintaining OSS Projects
Tips For Maintaining OSS Projects
Taro L. Saito314 views
Learning Silicon Valley Culture by Taro L. Saito
Learning Silicon Valley CultureLearning Silicon Valley Culture
Learning Silicon Valley Culture
Taro L. Saito4.8K views
Presto At Treasure Data by Taro L. Saito
Presto At Treasure DataPresto At Treasure Data
Presto At Treasure Data
Taro L. Saito5.4K views
Scala at Treasure Data by Taro L. Saito
Scala at Treasure DataScala at Treasure Data
Scala at Treasure Data
Taro L. Saito3.1K views
Presto As A Service - Treasure DataでのPresto運用事例 by Taro L. Saito
Presto As A Service - Treasure DataでのPresto運用事例Presto As A Service - Treasure DataでのPresto運用事例
Presto As A Service - Treasure DataでのPresto運用事例
Taro L. Saito9.9K views
Treasure Dataを支える技術 - MessagePack編 by Taro L. Saito
Treasure Dataを支える技術 - MessagePack編Treasure Dataを支える技術 - MessagePack編
Treasure Dataを支える技術 - MessagePack編
Taro L. Saito13.7K views
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo by Taro L. Saito
Weaving Dataflows with Silk - ScalaMatsuri 2014, TokyoWeaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Weaving Dataflows with Silk - ScalaMatsuri 2014, Tokyo
Taro L. Saito3K views
Spark Internals - Hadoop Source Code Reading #16 in Japan by Taro L. Saito
Spark Internals - Hadoop Source Code Reading #16 in JapanSpark Internals - Hadoop Source Code Reading #16 in Japan
Spark Internals - Hadoop Source Code Reading #16 in Japan
Taro L. Saito21.7K views

Recently uploaded

Transcript: The Details of Description Techniques tips and tangents on altern... by
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...BookNet Canada
119 views15 slides
Tunable Laser (1).pptx by
Tunable Laser (1).pptxTunable Laser (1).pptx
Tunable Laser (1).pptxHajira Mahmood
21 views37 slides
"How we switched to Kanban and how it integrates with product planning", Vady... by
"How we switched to Kanban and how it integrates with product planning", Vady..."How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady...Fwdays
61 views24 slides
The Importance of Cybersecurity for Digital Transformation by
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital TransformationNUS-ISS
25 views26 slides
Future of Learning - Yap Aye Wee.pdf by
Future of Learning - Yap Aye Wee.pdfFuture of Learning - Yap Aye Wee.pdf
Future of Learning - Yap Aye Wee.pdfNUS-ISS
38 views11 slides
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad... by
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad..."Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...Fwdays
40 views30 slides

Recently uploaded(20)

Transcript: The Details of Description Techniques tips and tangents on altern... by BookNet Canada
Transcript: The Details of Description Techniques tips and tangents on altern...Transcript: The Details of Description Techniques tips and tangents on altern...
Transcript: The Details of Description Techniques tips and tangents on altern...
BookNet Canada119 views
"How we switched to Kanban and how it integrates with product planning", Vady... by Fwdays
"How we switched to Kanban and how it integrates with product planning", Vady..."How we switched to Kanban and how it integrates with product planning", Vady...
"How we switched to Kanban and how it integrates with product planning", Vady...
Fwdays61 views
The Importance of Cybersecurity for Digital Transformation by NUS-ISS
The Importance of Cybersecurity for Digital TransformationThe Importance of Cybersecurity for Digital Transformation
The Importance of Cybersecurity for Digital Transformation
NUS-ISS25 views
Future of Learning - Yap Aye Wee.pdf by NUS-ISS
Future of Learning - Yap Aye Wee.pdfFuture of Learning - Yap Aye Wee.pdf
Future of Learning - Yap Aye Wee.pdf
NUS-ISS38 views
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad... by Fwdays
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad..."Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
"Ukrainian Mobile Banking Scaling in Practice. From 0 to 100 and beyond", Vad...
Fwdays40 views
MemVerge: Past Present and Future of CXL by CXL Forum
MemVerge: Past Present and Future of CXLMemVerge: Past Present and Future of CXL
MemVerge: Past Present and Future of CXL
CXL Forum110 views
Combining Orchestration and Choreography for a Clean Architecture by ThomasHeinrichs1
Combining Orchestration and Choreography for a Clean ArchitectureCombining Orchestration and Choreography for a Clean Architecture
Combining Orchestration and Choreography for a Clean Architecture
ThomasHeinrichs168 views
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ... by Fwdays
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ..."Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
"Quality Assurance: Achieving Excellence in startup without a Dedicated QA", ...
Fwdays33 views
Liqid: Composable CXL Preview by CXL Forum
Liqid: Composable CXL PreviewLiqid: Composable CXL Preview
Liqid: Composable CXL Preview
CXL Forum121 views
Empathic Computing: Delivering the Potential of the Metaverse by Mark Billinghurst
Empathic Computing: Delivering  the Potential of the MetaverseEmpathic Computing: Delivering  the Potential of the Metaverse
Empathic Computing: Delivering the Potential of the Metaverse
Mark Billinghurst449 views
AMD: 4th Generation EPYC CXL Demo by CXL Forum
AMD: 4th Generation EPYC CXL DemoAMD: 4th Generation EPYC CXL Demo
AMD: 4th Generation EPYC CXL Demo
CXL Forum126 views
Micron CXL product and architecture update by CXL Forum
Micron CXL product and architecture updateMicron CXL product and architecture update
Micron CXL product and architecture update
CXL Forum27 views
AI: mind, matter, meaning, metaphors, being, becoming, life values by Twain Liu 刘秋艳
AI: mind, matter, meaning, metaphors, being, becoming, life valuesAI: mind, matter, meaning, metaphors, being, becoming, life values
AI: mind, matter, meaning, metaphors, being, becoming, life values
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi by Fwdays
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
"AI Startup Growth from Idea to 1M ARR", Oleksandr Uspenskyi
Fwdays26 views
Future of Learning - Khoong Chan Meng by NUS-ISS
Future of Learning - Khoong Chan MengFuture of Learning - Khoong Chan Meng
Future of Learning - Khoong Chan Meng
NUS-ISS31 views
Business Analyst Series 2023 - Week 3 Session 5 by DianaGray10
Business Analyst Series 2023 -  Week 3 Session 5Business Analyst Series 2023 -  Week 3 Session 5
Business Analyst Series 2023 - Week 3 Session 5
DianaGray10165 views

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

  • 1. 斉藤 太郎 (Taro L. Saito) 東京大学 2008年12月20日 ACM SIGMOD 日本支部第40回大会 http://www.xerial.org/
  • 2. さあ みんなで SAX, DOM, XMLのプロジェクト XPATH, XQUERY, DTD, XML 我が社にとってXMLは重 を始めることにした SCHEMA, RELAX NG 要だ。今までのテーブル を勉強するんだ! と違って、まったく新し いデータ構造だからな  はっきり言って、たいへんです。 › XMLを使うのにこんなに学ぶことがあるなんて 2
  • 3. 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
  • 4. 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
  • 5. テーブルから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
  • 6. 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
  • 7.  鍵となる考え方 › 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
  • 9. 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
  • 10. 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
  • 11. (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
  • 12. 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
  • 13. 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
  • 14.  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
  • 15. 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
  • 16. FDを考慮したamoeba join › データサイズに比例した性能 16
  • 17. 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
  • 18. 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
  • 19. 「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
  • 20.  Relation in XML › AmoebaとFDで、構造が決まる  Relational-Style XML Query › SQLを用いて、XMLからrelationを取り出せる › 構造のゆらぎに強い  XMLデータの組み方に自由度が生まれる  Good-bye XPath!! › 目的のXML構造は、パスで指定せずとも、テー ブルスキーマとFDから自動的に決まる 20
  • 21. 技術的な詳細は論文の方に › Relational-Style XML Query. Taro L. Saito, Shinichi Morishita. SIGMOD 2008.  RDBMSと同じ枠組みで実装できる › 問い合わせ代数・クエリの最適化など  データベースの統合にも活用できる  XMLデータのスキーマ変更が容易に › RDBMSのスキーマ拡張とほぼ同じ  Relationalデータに、XMLを使った annotationを付加しやすくなる  …などなど 21
  • 22. 実は「SQLでいける」  よくよく見ると、XMLの中にテーブル構造(relational data)が埋め込まれている場合がほとんど XMLのプロジェクト 我が社にとってXMLは Relational Styleで を始めることにした 重要だ。でも、XMLと 考えれば怖くない!! いってもほとんど テーブルデータなんだ  XML技術の深みにはまる前に… Think in Relational Style!!! 22
  • 23. 23
  • 24. OR (Object-Relational) マッピング › Object-XMLマッピングのサブセット › プログラム言語のクラス定義から、スキーマ定義を抽出  Javaなどのリフレクション機能を用いると全自動 › オブジェクトデータをXMLや、RDBに出力  AmoebaとFDさえ満たしていれば、どのようなXML構造 で出力してもOK › XML・RDBデータを読み込んで、オブジェクトを生成  SAX, DOMでのプログラミングが一切不要になる  他の木構造データにも使える › JSON, YAMLなども扱える › CSVなどテーブル形式のデータでも構わない 24
  • 25. 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
  • 26.  Xerial (エクセリアル) Project › XML DBMSの実装、OR・OXマッピング関連 のライブラリなど › http://www.xerial.org/  Relational-Style XML Query › 開発版をオープンソースで公開予定  Apache License Version 2.0 › Javaによる実装  MavenのCentral Repository経由で配布さ れます 26