Open棟梁Project - マイクロソフト系技術情報 Wiki
目次 †
概要 †
NoSQLに関する情報をまとめる。
参考 †
背景 †
登場の背景はRDBでは解決困難な問題がでてきたから。
3V †
データの
- 量(Volume)の増加
- 処理速度(Velocity)の増加
- 多様性(Variety)の増加
・・・への対応がRDBで限界に達した。
Volume & Velocity †
RDBで、大量データの高速処理を行う場合の課題として、
という点があげられる。
Variety †
- 非定型なメタデータの管理が困難
- RDBに格納困難な非構造化データが増加しているらしい(主にはJSON)。
利用事例 †
非構造化データ †
- 非構造化データの例
- 商品情報
- 物件情報
- デバイスの生成するデータ
- 最近、非構造化データが急増している。
- 非構造化データの増加に伴う影響
- スキーマ変更の影響が大きい(多分、主に列を足す作業)
大量データの高速処理 †
- 対応
RDBでは、
- スケールアップが限界を迎える(若しくは高価過ぎる)。
- しかし、スケールアウトにも課題がある。
- そこで、スケールアウト可能なNoSQLが採用される。
プロダクトの型 †
KVS型 †
特徴 †
- データアクセスが高速
- 小さい多数のデータの蓄積が得意
- ハードディスクにデータを永続化
- ノードを追加することでスケールアウト可能
アーキテクチャ †
- マスタ型(Hibari)
- チェインレプリケーションという独自アーキテクチャにより「強い整合性」を保証
- P2P型
- Amazon Dynamoは、可用性を重視した「結果整合性」
- VoldemortとRiakは、Quorumにより整合性が調整可能
用例 †
- キャッシュサーバ
- ログ蓄積
- オブジェクトストレージ
KVSイネーブラ型 †
特徴 †
- オンメモリなので高速だが永続化されない。
- 他のNoSQLデータベースと組み合わせて永続化を可能にできる。
アーキテクチャ †
- イネーブラ型オンメモリタイプ
- イネーブラ型オンディスクタイプ(TokyoCabinet?/Tyrant)
カラム指向型 †
特徴 †
- 拡張性と永続性がある。
- カラムを動的に追加できるデータモデル
- 一部のものはスキーマ定義が必要
- カラム指定での範囲検索・集計処理が得意
- データ構造(LSM-Tree)により高い書き込み性能を実現
アーキテクチャ †
用例 †
ドキュメント指向型 †
特徴 †
- ドキュメント毎に異なるデータ構造を持てる
- 属性に対する検索・集計が可能
- キーバリュー型やカラム指向型で紹介したような特性を有していない。
- ビッグデータ対応というよりは、使いやすさに優れたNoSQLデータベース
用例 †
グラフ型 †
特徴 †
- 3つの基本構成要素
- ノード(頂点)
- リレーションシップ(エッジ)
- プロパティ(属性)
- データベース側で、データとデータの関係性(オブジェクトであるノード間の関係性)を表現する。
- 「知人を探す」「知人の知人を探す」「最短経路を探す」といったクエリの答えを得るために最適化されている(RDBでは大量のJOINを行う)。
プロダクトの種類 †
mongoDB †
参考 †
特徴 †
Cassandra †
参考 †
特徴 †