SlideShare une entreprise Scribd logo
1  sur  13
Télécharger pour lire hors ligne
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

Contenu connexe

Similaire à Mongo db + xsd:xml(20130219)

RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成RとSQLiteで気軽にデータベース作成
RとSQLiteで気軽にデータベース作成弘毅 露崎
 
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会
アナリティクスをPostgreSQLで始めるべき10の理由@第6回 関西DB勉強会Satoshi Nagayasu
 
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
 

Similaire à 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/報告会 機械学習関連
 

Dernier

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 

Dernier (9)

モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 

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