mongo db + xsd:xml(20130219)

13

Click here to load reader

Upload: michael-nguyen

Post on 24-Jun-2015

752 views

Category:

Technology


3 download

DESCRIPTION

Using XML with MongoDB.

TRANSCRIPT

Page 1: Mongo db + xsd:xml(20130219)

MongoDB + XSD/XML

Michael Nguyen (マイケル・ヌエン)コグラフ株式会社

Page 2: Mongo db + xsd:xml(20130219)

自己紹介● カリフォルニア大学アーバイン校で ICS● 東京工業大学へ留学● Google 検索アプライアンスを補完する

自社製品の開発や、ナレッジマネジメント製品の開発

● コグラフ株式会社でグローバル・サービス・デベロップメントマネージャー + シニアエンジニア

● 趣味は音楽とお酒(特に日本酒)

Page 3: Mongo db + xsd:xml(20130219)

税務システムでの特徴● 電子申告は XML で提出● XML のスキーマは国税庁から臨時に提供されている● 平成25年2月8日に公開されているスキーマ( XSD フ

ァイル)は合計で 110MB を越えている● システムは内部でデータを XML で保存しなくても、どこ

かのタイミングで XML に変換する必要がある

Page 4: Mongo db + xsd:xml(20130219)

何故 MongoDB

● 問題● 大量のスキーマで大量の帳票の数● 各帳票には大量の項目の数(表示用のコードは1万行を越えている)● スキーマは年に数回更新される● 古いデータをそのまま参照する必要がある● データのモデルを手動で作成するのは体制的にも時間的にも非現実的

● 候補となる DB の種類● RDB => ×● NoSQL => ◯● XMLDB => ◯

Page 5: Mongo db + xsd:xml(20130219)

MongoDBのメリット● XML のデータをそのまま保持出来る● XML データを部分的に取得できる( dot notation )● スキーマが変わっても DB まわりのコードは一回だけの開

発でほとんどメンテナンスなしで使い続けている● データのバージョンが違っていても共存は可能● データベースの運用での障害なし

Page 6: Mongo db + xsd:xml(20130219)

BSONと XML

● XML スキーマは国税庁のものを加工したものがベースになる

● 加工した XML スキーマを XmlBeans のライブラリで Java Bean を生成 (ant のスクリプト )

● データ保存時は Java Bean => XML => JSON => BSON● データ取得時は BSON => JSON => XML => Java Bean

Page 7: Mongo db + xsd:xml(20130219)

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"

}}

}

Page 8: Mongo db + xsd:xml(20130219)

Collections

● MongoDB では collection は RDB のテーブルみたいなもの● collection を事前に作成する必要はない(自動で行われ

る)● MongoDB 側で collection 内のデータは同じ型である必要

はない(ユーザが決める)● 例えば税務システムには法人の申告データは複数の年度の

データを同じコレクションに保存出来る

Page 9: Mongo db + xsd:xml(20130219)

XPathと Dot Notation

● Xpath/data/client[clientId = “15138”]/clientCode

● Dot Notationdb.client.fnd({“data.client.clientId.#text” : “15138”}, {“data.client.clientCode” : 1})

Page 10: Mongo db + xsd:xml(20130219)

Tips(1)

XML のドキュメントと関係しているものをなるべく同じコレクションに入れるとクエリの数を減らせる( JOIN はない)

{“_id” : ObjectId(“511c7e016796c903affd1837”),“XMLDataKey” : “XMLData”,“RelatedDataKey1” : “RelatedData1”,“RelatedDataKey2” : “RelatedData2”,“RelatedDataKey3” : “RelatedData3”,…“Metadata1Key” : “Metadata1”,“Metadata2Key” : “Metadata2”,“Metadata3Key” : “Metadata3”,...

}

Page 11: Mongo db + xsd:xml(20130219)

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

Page 12: Mongo db + xsd:xml(20130219)

Tips(3 )

● XML データは基本2種類ある● スキーマが定義されているもの: モデルクラスをライブ

ラリなどで生成する● スキーマが定義されていないもの: オブジェクト =>

XML => JSON/BSON ( XStream など)

Page 13: Mongo db + xsd:xml(20130219)

コグラフ株式会社は、利用者の側に立ったソフトウェアサービスのご提供を通じて

世界中の人々や社会の発展に貢献します

ご連絡先TEL: 03-5340-7450

E-Mail: [email protected]