08-18 Document DBデータモデリング


1.MongoDBデータモデリング


データモデリング

  • 実世界の内容、画像と図形で表される
  • 記憶データ
  • モデリングプロセス


    コンセプトモデリング→論理モデリング→物理モデリング

  • コンセプトモデリング:ビジネス分野からデータを抽出するステップ
  • 論理モデリング:
  • 分析設計とドキュメント構造のマッチング
  • 物理シミュレーション:MongoDBの物理構造に対して設計するステップ
  • 分析/設計フェーズ



    2.MongoDB設計の主な特徴


    データとプロセス設計の中心

  • HOST環境に基づくファイルシステム:プロセス中心のデータ構造設計
  • クライアント/サーバ環境におけるリレーショナル・データベース:
  • データ中心の設計方法により、トランザクションを効率的に処理
  • クラウドコンピューティング環境のNoSQL:設計の中心にデータとプロセスを配置します.
  • (ビッグデータの収集と格納)

    Rich Document Structure

  • リレーショナル・データベースは、標準化された重複データ除去と完全性設計方法を採用しています.
  • NoSQLでは、データの重複を許可し、逆設計をサポートします.
  • リレーショナル・データベースが必要な場合とは異なり、ストレージ・デバイスの急速な発展と低価格要因も設計における重要な要因です.

    設計可能N:M関係構造

  • リレーショナルDBではEntity間のN:Mリレーショナル構造は設計できませんが、NoSQLではN:Mリレーショナル構造を設計することができ、
  • を実装することができます.

    不要なJOINを最小化

  • リレーショナルデータベースはエンティティ間のリレーションシップを中心としてデータの整合性を保証しているが、不要なJOINも生じ、符号化量が増加し検索性能が低下している.
  • NoSQLでは、不要なJOINを最小限に抑えるためにネストされたデータ構造を設計できます.

    Schemaなし

  • Document DBは基本的にSchemaがないので、柔軟なデータ構造を設計することができます.
  • リレーショナル・データベースに比べて書き込み/読み取りが高速

  • は、非構造化データの格納と管理をサポートし、リレーショナル・データベースに比べてデータ設計の書き込みと読み取りが容易です.
  • 柔軟なサーバ構造を提供

  • リレーショナルDBMSサーバへのインストール時にDBMS専用のメモリ領域を使用する、サイズのみのメモリ
  • を使用する.
  • NoSQL柔軟なリソース割り当て技術
  • を使用

    3.MongoDB設計標準


    データの操作方法


    ACCESS PATTERNはどうですか?


    SCHEMA設計の注意事項は?


    4.MongoDB設計メインモード


    埋め込みDocument構造


    Extent Document構造


    リンク構造


    継承構造


    階層型データ構造



    リレーショナルDBMS



    Embeded Document(Rich Document)



    Extent Document(Rich Document)



    Rich Document構造の長所と短所

  • Query単純
  • Join文を実行することなく、パーティションデータ
  • を効率的かつ迅速に格納することができる.
  • データセキュリティの有効な保護
  • 埋め込まれた添付ファイルのサイズは、最大16 MBの範囲で
  • とすることができる.
  • は、添付ファイルが埋め込まれていない集合
  • には適用されない.

    Manual Link



    リンク構造の長所と短所

  • は独立した論理構造で格納されるため、管理サイズに制限されない.
  • は、業務規則に従って独立に処理するデータ構造
  • に適用される.
  • のパフォーマンスは、毎回論理構造間のリンクが必要であるため、Embeddedよりも低い.
  • 集合数増加、管理コスト向上
  • Inheritence (OODBMS)



    Single Table Inheritence (RDBMS)



    Single Table Inheritence (MongoDB)



    階層型データ構造



    Self Reference Join (RDBMS)



    Ancestor Reference (MongoDB)

  • 企業におけるデータ構造には、階層化されたデータ構造が必然的に存在し、これは最も理想的なデータモデルである.
  • ANCESTORSおよびPARENTフィールド.1つのドキュメントに1つ以上のANCESTORSおよびPARENTは必要ありません.
  • Vallidator

  • RDBMSの制約ロール
  • MongoDB v3.2に追加
  • db.createCollection("emp", { validator : { $and : [{ empno : {$type :"string"}}, 
    { deptno : {$in : [10,20,30]}}]}})
    db.emp.insert({empno : "1111", ename : "JMJOO", deptno : 10})
    db.emp.insert({empno : "1112", ename : "JMJOO", deptno : 20})
    db.emp.insert({empno : "1113", ename : "JMJOO", deptno : 30})
    db.emp.insert({empno : "1114", ename : "JMJOO", deptno : 40})
    ddb.createCollection("emp", { validator : { $and : [{ empno : {$type :"double"}}, 
    { ename : {$type :"string"}},
    { job : {$type :"string"}},
    { sal : {$type :"double"}},
    { hiredate : {$type : "date"}},
    { deptno : {$type : "double"}},
    { deptno : {$in : [10,20,30]}}]}})
    db.emp.insert({empno : 1111, ename : "JMJOO", job : "MANAGER",
    sal : 1200, hiredate : ISODate(), deptno : 10 })
    db.emp.insert({empno : 2222, ename : "JMJ", job : "MANAGER",
    sal : 1200, hiredate : ISODate(), deptno : 40 })