More Related Content Similar to MongoDB + XSD/XML (20) MongoDB + XSD/XML3. 税務システムでの特徴
●
電子申告は XML で提出
●
XML のスキーマは国税庁から臨時に提供されている
●
平成25年2月8日に公開されているスキーマ( XSD フ
ァイル)は合計で 110MB を越えている
●
システムは内部でデータを XML で保存しなくても、どこ
かのタイミングで XML に変換する必要がある
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"
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"
}
}
}
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
BSON/JSON
Internal Common Data
Individual Data 1
XML Data Other Data
Individual Data 2 Individual Data 3
12. Tips( 3 )
●
XML データは基本2種類ある
●
スキーマが定義されているもの: モデルクラスをライブ
ラリなどで生成する
●
スキーマが定義されていないもの: オブジェクト =>
XML => JSON/BSON ( XStream など)