SlideShare a Scribd company logo
1 of 13
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"
attribute1="value"
attribute2="value"
attribute3="value"
><pre:CHILD_ELEMENT_1
attribute1="value"
attribute2="value"
attribute3="value"
>value</pre:CHILD_ELEMENT
><pre:CHILD_ELEMENT_2
attribute1="value"
attribute2="value"
attribute3="value"
>value</pre:CHILD_ELEMENT
></pre:ROOT_ELEMENT>
{
"pre:ROOT_ELEMENT" : {
"@xmlns:pre" : "http://somewhere.com/asdf",
"@attribute1" : "value",
"@attribute2" : "value",
"@attribute3" : "value",
"pre:CHILD_ELEMENT_1" : {
"@attribute1" : "value",
"@attribute2" : "value",
"@attribute3" : "value",
"#text" : "value"
},
"pre:CHILD_ELEMENT_2" : {
"@attribute1" : "value",
"@attribute2" : "value",
"@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
BSON/JSON
Internal Common Data
Individual Data 1
XML Data Other Data
Individual Data 2 Individual Data 3
Tips( 3 )
●
XML データは基本2種類ある
●
スキーマが定義されているもの: モデルクラスをライブ
ラリなどで生成する
●
スキーマが定義されていないもの: オブジェクト =>
XML => JSON/BSON ( XStream など)
コグラフ株式会社は、
利用者の側に立ったソフトウェアサービスのご提供を通じて
世界中の人々や社会の発展に貢献します
ご連絡先
TEL: 03-5340-7450
E-Mail: a@cograph.com

More Related Content

Similar to MongoDB + XSD/XML

オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介Yuki Takahashi
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop Daisuke Sugai
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきましたMasaru Kobashigawa
 
機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous DatabaseKenichi Sonoda
 
新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術Mao Ohnishi
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Yoshiyuki Nakamura
 
mongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 springmongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 springichikaway
 
A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]
A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]
A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]日本マイクロソフト株式会社
 
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計MicroAd, Inc.(Engineer)
 
CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?Kumano Ryo
 
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜MicroAd, Inc.(Engineer)
 
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementationビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
ビジネスロジック実装進化論 - An Evolution of Business Logic ImplementationTadayoshi Sato
 
大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!
大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!
大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!softlayerjp
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud LanguageTozo Tanaka
 
Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化You&I
 
[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...
[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...
[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...オラクルエンジニア通信
 
Fluentd+MongoDB+Groovy
Fluentd+MongoDB+GroovyFluentd+MongoDB+Groovy
Fluentd+MongoDB+GroovyDaisuke Ando
 
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&AtlasMongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&Atlas昌桓 李
 
Autonomous選手権システムエグゼ社発表資料
Autonomous選手権システムエグゼ社発表資料Autonomous選手権システムエグゼ社発表資料
Autonomous選手権システムエグゼ社発表資料Mai Nagahisa
 

Similar to MongoDB + XSD/XML (20)

オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
オープンソースカンファレンス OSC 2015 Tokyo/Spring 最新レポート!ownCloud8とMroongaを使った日本語全文検索アプリのご紹介
 
Google Product
Google ProductGoogle Product
Google Product
 
Intalio Cloud Workshop
Intalio Cloud Workshop Intalio Cloud Workshop
Intalio Cloud Workshop
 
Osc2012.dbに行ってきました
Osc2012.dbに行ってきましたOsc2012.dbに行ってきました
Osc2012.dbに行ってきました
 
機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database機械学習基盤として活用するAutonomous Database
機械学習基盤として活用するAutonomous Database
 
新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術新規事業「Bill One」による Google Cloud 活用術
新規事業「Bill One」による Google Cloud 活用術
 
Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記Pythonおじさんのweb2py挑戦記
Pythonおじさんのweb2py挑戦記
 
mongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 springmongoDB: OSC Tokyo2010 spring
mongoDB: OSC Tokyo2010 spring
 
A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]
A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]
A18_Modernizing Enterprise Java Applications [Microsoft Japan Digital Days]
 
インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計インターネット広告の概要とシステム設計
インターネット広告の概要とシステム設計
 
CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?CloudSQL v2は デキる子なのか?
CloudSQL v2は デキる子なのか?
 
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜
アドテクを支える基盤 〜10Tバイト/日のビッグデータを処理する〜
 
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementationビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
ビジネスロジック実装進化論 - An Evolution of Business Logic Implementation
 
大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!
大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!
大容量ファイルを爆速で転送! 世界を飛び回る! AsperaとSoftLayerの最強コラボ!
 
Opa - Cloud Language
Opa - Cloud LanguageOpa - Cloud Language
Opa - Cloud Language
 
Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化Ansibleは簡単なIT自動化
Ansibleは簡単なIT自動化
 
[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...
[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...
[Modern Cloud Day Tokyo 2019] オラクルクラウド移行を完了したゲストに聞くOracle Cloudを選択する理由&次世代インフ...
 
Fluentd+MongoDB+Groovy
Fluentd+MongoDB+GroovyFluentd+MongoDB+Groovy
Fluentd+MongoDB+Groovy
 
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&AtlasMongoDB社の製品紹介 2019-MongoDB EA&Atlas
MongoDB社の製品紹介 2019-MongoDB EA&Atlas
 
Autonomous選手権システムエグゼ社発表資料
Autonomous選手権システムエグゼ社発表資料Autonomous選手権システムエグゼ社発表資料
Autonomous選手権システムエグゼ社発表資料
 

MongoDB + XSD/XML