SlideShare a Scribd company logo
MongoDB + XSD/XML


     Michael Nguyen (マイケル・ヌエン)
     コグラフ株式会社
自己紹介
●
    カリフォルニア大学アーバイン校で ICS
●
    東京工業大学へ留学
●
    Google 検索アプライアンスを補完する
    自社製品の開発や、ナレッジマネジメ
    ント製品の開発
●
    コグラフ株式会社でグローバル・サー
    ビス・デベロップメントマネージャー
    + シニアエンジニア
●
    趣味は音楽とお酒(特に日本酒)
税務システムでの特徴
●
    電子申告は XML で提出
●
    XML のスキーマは国税庁から臨時に提供されている
●
    平成25年2月8日に公開されているスキーマ( XSD フ
    ァイル)は合計で 110MB を越えている
●
    システムは内部でデータを XML で保存しなくても、どこ
    かのタイミングで XML に変換する必要がある
何故 MongoDB
●
    問題
    ●
        大量のスキーマで大量の帳票の数
    ●
        各帳票には大量の項目の数(表示用のコードは1万行を越えている)
    ●
        スキーマは年に数回更新される
    ●
        古いデータをそのまま参照する必要がある
    ●
        データのモデルを手動で作成するのは体制的にも時間的にも非現実的
●
    候補となる DB の種類
    ●
        RDB => ×
    ●
        NoSQL => ◯
    ●
        XMLDB => ◯
MongoDB のメリット
●
    XML のデータをそのまま保持出来る
●
    XML データを部分的に取得できる( dot notation )
●
    スキーマが変わっても DB まわりのコードは一回だけの開
    発でほとんどメンテナンスなしで使い続けている
●
    データのバージョンが違っていても共存は可能
●
    データベースの運用での障害なし
BSON と XML
●
    XML スキーマは国税庁のものを加工したものがベースにな
    る
●
    加工した XML スキーマを XmlBeans のライブラリで Java
    Bean を生成 (ant のスクリプト )
●
    データ保存時は Java Bean => XML => JSON => BSON
●
    データ取得時は BSON => JSON => XML => Java Bean
XML/JSON の変換
XML                                          JSON
<pre:ROOT_ELEMENT                            {
     xmlns:pre="http://somewhere.com/asdf"       "pre:ROOT_ELEMENT" : {
     attribute1="value"                                "@xmlns:pre" : "http://somewhere.com/asdf",
     attribute2="value"                                "@attribute1" : "value",
     attribute3="value"                                "@attribute2" : "value",
     ><pre:CHILD_ELEMENT_1                             "@attribute3" : "value",
            attribute1="value"                         "pre:CHILD_ELEMENT_1" : {
            attribute2="value"                               "@attribute1" : "value",
            attribute3="value"                               "@attribute2" : "value",
     >value</pre:CHILD_ELEMENT                               "@attribute3" : "value",
     ><pre:CHILD_ELEMENT_2                                   "#text" : "value"
            attribute1="value"                         },
            attribute2="value"                         "pre:CHILD_ELEMENT_2" : {
            attribute3="value"                               "@attribute1" : "value",
     >value</pre:CHILD_ELEMENT                               "@attribute2" : "value",
></pre:ROOT_ELEMENT>                                         "@attribute3" : "value",
                                                             "#text" : "value"
                                                       }
                                                 }
                                             }
Collections
●
    MongoDB では collection は RDB のテーブルみたいなもの
●
    collection を事前に作成する必要はない(自動で行われ
    る)
●
    MongoDB 側で collection 内のデータは同じ型である必要
    はない(ユーザが決める)
●
    例えば税務システムには法人の申告データは複数の年度の
    データを同じコレクションに保存出来る
XPath と Dot Notation
●
    Xpath
      /data/client[clientId = “15138”]/clientCode
●
    Dot Notation
      db.client.fnd({“data.client.clientId.#text” : “15138”},
      {“data.client.clientCode” : 1})
Tips(1)
XML のドキュメントと関係しているものをなるべく同じコレクシ
ョンに入れるとクエリの数を減らせる( JOIN はない)

       {
           “_id” : ObjectId(“511c7e016796c903affd1837”),
           “XMLDataKey” : “XMLData”,
           “RelatedDataKey1” : “RelatedData1”,
           “RelatedDataKey2” : “RelatedData2”,
           “RelatedDataKey3” : “RelatedData3”,
           …
           “Metadata1Key” : “Metadata1”,
           “Metadata2Key” : “Metadata2”,
           “Metadata3Key” : “Metadata3”,
           ...
       }
Tips (2)
BSON/JSON Layer - Internal Common Data Layer –
Individual Data Layer
          Individual Data 1     Individual Data 2     Individual Data 3


                              Internal Common Data

                              XML Data   Other Data



                                  BSON/JSON
Tips( 3 )
●
    XML データは基本2種類ある
    ●
      スキーマが定義されているもの: モデルクラスをライブ
      ラリなどで生成する
    ●
      スキーマが定義されていないもの: オブジェクト =>
      XML => JSON/BSON ( XStream など)
コグラフ株式会社は、
利用者の側に立ったソフトウェアサービスのご提供を通じて
    世界中の人々や社会の発展に貢献します

                ご連絡先
          TEL: 03-5340-7450
        E-Mail: a@cograph.com

More Related Content

Similar to Mongo db + xsd:xml(20130219)

RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
Keisuke Izumiya
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
Satoshi Nagayasu
 
MongoDB
MongoDBMongoDB
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
Microsoft Tech Summit 2017
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Kazuyuki Miyake
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
K Kimura
 
2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ
Taro L. Saito
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方linzhixing
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門Hisashi HATAKEYAMA
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
uedayou
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
takezoe
 
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
Osamu Monoe
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
じゅん なかざ
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
Kazuki Minamitani
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
Shotaro Suzuki
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Kazuyuki Miyake
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applicationstotty jp
 
Google Cloud Next '18 Recap/報告会 機械学習関連
Google Cloud Next '18 Recap/報告会 機械学習関連Google Cloud Next '18 Recap/報告会 機械学習関連
Google Cloud Next '18 Recap/報告会 機械学習関連
Tetsutaro Watanabe
 

Similar to Mongo db + xsd:xml(20130219) (20)

RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成
 
はじめてのMongoDB
はじめてのMongoDBはじめてのMongoDB
はじめてのMongoDB
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
 
MongoDB
MongoDBMongoDB
MongoDB
 
[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005[Japan Tech summit 2017] DAL 005
[Japan Tech summit 2017] DAL 005
 
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターンAzure Cosmos DB を使った高速分散アプリケーションの設計パターン
Azure Cosmos DB を使った高速分散アプリケーションの設計パターン
 
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしいIBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
IBM Cloudant の細かすぎて伝わりにくい機能(その2) データの変更履歴が自動管理できるらしい
 
2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ2011年度 生物データベース論 2日目 木構造データ
2011年度 生物データベース論 2日目 木構造データ
 
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
Alfresco勉強会20120829: やさしいShareダッシュレットの作り方
 
スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門スマートフォン向けサービスにおけるサーバサイド設計入門
スマートフォン向けサービスにおけるサーバサイド設計入門
 
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
ふぉとぶらり+LODAC -iPhoneアプリでのSPARQLでの活用事例-
 
Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略Seasarプロジェクト徹底攻略
Seasarプロジェクト徹底攻略
 
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI for Developer、Microsoft Edge とInternet Explorer で新しくサポートされるAPI
for Developer、 Microsoft Edge とInternet Explorer で 新しくサポートされるAPI
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
SQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなしSQLマッピングフレームワーク「Kobati」のはなし
SQLマッピングフレームワーク「Kobati」のはなし
 
Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...Building React, Flutter and Blazor development and debugging environment with...
Building React, Flutter and Blazor development and debugging environment with...
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
Html5 Web Applications
Html5  Web ApplicationsHtml5  Web Applications
Html5 Web Applications
 
Google Cloud Next '18 Recap/報告会 機械学習関連
Google Cloud Next '18 Recap/報告会 機械学習関連Google Cloud Next '18 Recap/報告会 機械学習関連
Google Cloud Next '18 Recap/報告会 機械学習関連
 

Recently uploaded

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
Osaka University
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
嶋 是一 (Yoshikazu SHIMA)
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
Toru Tamaki
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
chiefujita1
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
tazaki1
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
t m
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
Matsushita Laboratory
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
CRI Japan, Inc.
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
harmonylab
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
Takayuki Nakayama
 

Recently uploaded (10)

生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
生成AIがもたらすコンテンツ経済圏の新時代  The New Era of Content Economy Brought by Generative AI
 
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
「進化するアプリ イマ×ミライ ~生成AIアプリへ続く道と新時代のアプリとは~」Interop24Tokyo APPS JAPAN B1-01講演
 
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
論文紹介:Deep Learning-Based Human Pose Estimation: A Survey
 
This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.This is the company presentation material of RIZAP Technologies, Inc.
This is the company presentation material of RIZAP Technologies, Inc.
 
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライドHumanoid Virtual Athletics Challenge2024 技術講習会 スライド
Humanoid Virtual Athletics Challenge2024 技術講習会 スライド
 
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
遺伝的アルゴリズムと知識蒸留による大規模言語モデル(LLM)の学習とハイパーパラメータ最適化
 
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
ReonHata_便利の副作用に気づかせるための発想支援手法の評価---行為の増減の提示による気づきへの影響---
 
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアルLoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
LoRaWAN 4チャンネル電流センサー・コンバーター CS01-LB 日本語マニュアル
 
Generating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language ModelsGenerating Automatic Feedback on UI Mockups with Large Language Models
Generating Automatic Feedback on UI Mockups with Large Language Models
 
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援しますキンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
キンドリル ネットワークアセスメントサービスご紹介 今のネットワーク環境は大丈夫? 調査〜対策までご支援します
 

Mongo db + xsd:xml(20130219)

  • 1. MongoDB + XSD/XML Michael Nguyen (マイケル・ヌエン) コグラフ株式会社
  • 2. 自己紹介 ● カリフォルニア大学アーバイン校で ICS ● 東京工業大学へ留学 ● Google 検索アプライアンスを補完する 自社製品の開発や、ナレッジマネジメ ント製品の開発 ● コグラフ株式会社でグローバル・サー ビス・デベロップメントマネージャー + シニアエンジニア ● 趣味は音楽とお酒(特に日本酒)
  • 3. 税務システムでの特徴 ● 電子申告は XML で提出 ● XML のスキーマは国税庁から臨時に提供されている ● 平成25年2月8日に公開されているスキーマ( XSD フ ァイル)は合計で 110MB を越えている ● システムは内部でデータを XML で保存しなくても、どこ かのタイミングで XML に変換する必要がある
  • 4. 何故 MongoDB ● 問題 ● 大量のスキーマで大量の帳票の数 ● 各帳票には大量の項目の数(表示用のコードは1万行を越えている) ● スキーマは年に数回更新される ● 古いデータをそのまま参照する必要がある ● データのモデルを手動で作成するのは体制的にも時間的にも非現実的 ● 候補となる DB の種類 ● RDB => × ● NoSQL => ◯ ● XMLDB => ◯
  • 5. MongoDB のメリット ● XML のデータをそのまま保持出来る ● XML データを部分的に取得できる( dot notation ) ● スキーマが変わっても DB まわりのコードは一回だけの開 発でほとんどメンテナンスなしで使い続けている ● データのバージョンが違っていても共存は可能 ● データベースの運用での障害なし
  • 6. BSON と XML ● XML スキーマは国税庁のものを加工したものがベースにな る ● 加工した XML スキーマを XmlBeans のライブラリで Java Bean を生成 (ant のスクリプト ) ● データ保存時は Java Bean => XML => JSON => BSON ● データ取得時は BSON => JSON => XML => Java Bean
  • 7. XML/JSON の変換 XML JSON <pre:ROOT_ELEMENT { xmlns:pre="http://somewhere.com/asdf" "pre:ROOT_ELEMENT" : { attribute1="value" "@xmlns:pre" : "http://somewhere.com/asdf", attribute2="value" "@attribute1" : "value", attribute3="value" "@attribute2" : "value", ><pre:CHILD_ELEMENT_1 "@attribute3" : "value", attribute1="value" "pre:CHILD_ELEMENT_1" : { attribute2="value" "@attribute1" : "value", attribute3="value" "@attribute2" : "value", >value</pre:CHILD_ELEMENT "@attribute3" : "value", ><pre:CHILD_ELEMENT_2 "#text" : "value" attribute1="value" }, attribute2="value" "pre:CHILD_ELEMENT_2" : { attribute3="value" "@attribute1" : "value", >value</pre:CHILD_ELEMENT "@attribute2" : "value", ></pre:ROOT_ELEMENT> "@attribute3" : "value", "#text" : "value" } } }
  • 8. Collections ● MongoDB では collection は RDB のテーブルみたいなもの ● collection を事前に作成する必要はない(自動で行われ る) ● MongoDB 側で collection 内のデータは同じ型である必要 はない(ユーザが決める) ● 例えば税務システムには法人の申告データは複数の年度の データを同じコレクションに保存出来る
  • 9. XPath と Dot Notation ● Xpath /data/client[clientId = “15138”]/clientCode ● Dot Notation db.client.fnd({“data.client.clientId.#text” : “15138”}, {“data.client.clientCode” : 1})
  • 10. Tips(1) XML のドキュメントと関係しているものをなるべく同じコレクシ ョンに入れるとクエリの数を減らせる( JOIN はない) { “_id” : ObjectId(“511c7e016796c903affd1837”), “XMLDataKey” : “XMLData”, “RelatedDataKey1” : “RelatedData1”, “RelatedDataKey2” : “RelatedData2”, “RelatedDataKey3” : “RelatedData3”, … “Metadata1Key” : “Metadata1”, “Metadata2Key” : “Metadata2”, “Metadata3Key” : “Metadata3”, ... }
  • 11. Tips (2) BSON/JSON Layer - Internal Common Data Layer – Individual Data Layer Individual Data 1 Individual Data 2 Individual Data 3 Internal Common Data XML Data Other Data BSON/JSON
  • 12. Tips( 3 ) ● XML データは基本2種類ある ● スキーマが定義されているもの: モデルクラスをライブ ラリなどで生成する ● スキーマが定義されていないもの: オブジェクト => XML => JSON/BSON ( XStream など)
  • 13. コグラフ株式会社は、 利用者の側に立ったソフトウェアサービスのご提供を通じて 世界中の人々や社会の発展に貢献します ご連絡先 TEL: 03-5340-7450 E-Mail: a@cograph.com