脳汁portal

アメリカ在住(だった)新米エンジニアがその日学んだIT知識を書き綴るブログ

NOSQLのデータモデル

データモデル


マスタ型P2Pイネーブラ型
オンメモリタイプオンディスクタイプ
KVS型HibariDynamo
Voldemort
Riak
ROMA

Memcashed
Redis
Scalaris 

TokyoCabinet/
Tyrant 
カラム型Bigtable
HBase
HyperTable
Cassandra

グラフ型Neo4jInfiniteGraph

ドキュメント型MongoDB
CouchDB 



KVS型

  • key(データの番号のようなもの)Value(データ本体)を1対1で管理
  • スケールアウトに最適
有名なプロダクト
  • Dynamo
    • Amazonがショッピングカートの為に開発
  • Voldemort
  • Riak
  • Redis

カラム指向型

  • KVS型を少し高度にしたもの
  • 行キーに対して複数のカラム(列)を持つことが出来る
    • 列の数はRDBのように固定ではなく、動的に追加していくことが可能
    • 全てのカラムにValueが入っている必要はない
有名なプロダクト

ドキュメント指向型

  • JSONXMLといったデータ書式形式のドキュメントとしてvalueを持つ
    • MongaDBではBSON
  • それぞれのドキュメントで階層構造を持たない
有名なプロダクト

グラフ型

  • データとデータ間の関係性を管理するデータモデル
    • SNSの人のつながり
    • 同じ商品を購入した人達の関連性など
  • 以下の3構成要素からなる
    • node: 関係性を保持する主体を表す
    • relationship: ノード間における関係の有無とその方向を表す
    • property: ノードの属性とリレーションシップの属性を表す
  • 関係性をグラフにする場合に最適
有名なプロダクト
  • InfiniteGlaph
  • Neo4j