MongoDB + XSD/XML     Michael Nguyen (マイケル・ヌエン)     コグラフ株式会社
自己紹介●    カリフォルニア大学アーバイン校で ICS●    東京工業大学へ留学●    Google 検索アプライアンスを補完する    自社製品の開発や、ナレッジマネジメ    ント製品の開発●    コグラフ株式会社でグローバル・サ...
税務システムでの特徴●    電子申告は XML で提出●    XML のスキーマは国税庁から臨時に提供されている●    平成25年2月8日に公開されているスキーマ( XSD フ    ァイル)は合計で 110MB を越えている●    シ...
何故 MongoDB●    問題    ●        大量のスキーマで大量の帳票の数    ●        各帳票には大量の項目の数(表示用のコードは1万行を越えている)    ●        スキーマは年に数回更新される    ● ...
MongoDB のメリット●    XML のデータをそのまま保持出来る●    XML データを部分的に取得できる( dot notation )●    スキーマが変わっても DB まわりのコードは一回だけの開    発でほとんどメンテナン...
BSON と XML●    XML スキーマは国税庁のものを加工したものがベースにな    る●    加工した XML スキーマを XmlBeans のライブラリで Java    Bean を生成 (ant のスクリプト )●    デー...
XML/JSON の変換XML                                          JSON<pre:ROOT_ELEMENT                            {     xmlns:pre=...
Collections●    MongoDB では collection は RDB のテーブルみたいなもの●    collection を事前に作成する必要はない(自動で行われ    る)●    MongoDB 側で collectio...
XPath と Dot Notation●    Xpath      /data/client[clientId = “15138”]/clientCode●    Dot Notation      db.client.fnd({“data...
Tips(1)XML のドキュメントと関係しているものをなるべく同じコレクションに入れるとクエリの数を減らせる( JOIN はない)       {           “_id” : ObjectId(“511c7e016796c903aff...
Tips (2)BSON/JSON Layer - Internal Common Data Layer –Individual Data Layer          Individual Data 1     Individual Data...
Tips( 3 )●    XML データは基本2種類ある    ●      スキーマが定義されているもの: モデルクラスをライブ      ラリなどで生成する    ●      スキーマが定義されていないもの: オブジェクト =>    ...
コグラフ株式会社は、利用者の側に立ったソフトウェアサービスのご提供を通じて    世界中の人々や社会の発展に貢献します                ご連絡先          TEL: 03-5340-7450        E-Mail: ...
Upcoming SlideShare
Loading in …5
×

Mongo db + xsd:xml(20130219)

1,069 views

Published on

Using XML with MongoDB.

Published in: Technology
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,069
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
8
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide

Mongo db + xsd:xml(20130219)

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

×