NoSQLって?
正しく使い分けるための第一歩
qpstudy 2013.07
Agenda
2. NoSQLの分類
1. NoSQLって?
3. NoSQLの紹介
Agenda
1. NoSQLって?
2. NoSQLの分類
3. NoSQLの紹介
定義 - NoSQLって?
定義は?
定義 - NoSQLって?
定義は?
ありません
定義 - NoSQLって?
一般にはRDBMS以外
NOSQL meetup 2009で使われてから広まったそう
http://blog.sym-link.com/2009/05/12/
nosql_2009.html
http://ja.wikipedia.org/wiki/NoSQL
目的 - NoSQLって?
なぜNoSQLが必要?
データベースとは- NoSQLって?
- データを整理、格納し
- 検索して取り出す
RDBMSに限界が…
RDBMSの限界- NoSQLって?
etc.
データ量
ノード数の限界
データ増加に伴う性能劣化
スキーマ
開発速度の上昇
性能
レイテンシー
QPS
スループット
NoSQLの目的 - NoSQLって?
RDBMSでは解決出来ない
問題を解くため
※いずれかの問題領域に特化している傾向
RDBMSは - NoSQLって?
RDBMSは必要なくなるか?
RDBMSの理由 - NoSQLって?
- 大部分の問題は以前RDBMSで十分
- RDBMSの適用領域も広がっている
- RDBMSの機能をトレードオフ
- 歴史が浅い
- ノウハウ、実装の枯れ具合、ライブラリ etc.
RDBMS適用領域 - NoSQLって?
ミドルウェアの進化
ハードウェアの進化
- メモリの大容量化
- FusionIO 高速ブロックデバイス
- MySQLのmemcachedインターフェース
- PostgreSQLのJSON型
トレードオフ - NoSQLって?
- トランザクション
- SQL - 共通したインターフェース
- データモデル
- etc.
ポイント - NoSQLって?
あなたの解くべき問題に
マッチしていますか?
Agenda
1. NoSQLって?
2. NoSQLの分類
3. NoSQLの紹介
NoSQLの分類
※ RDBMSほどには体系化されていない
最後は個別のDBを見ていく必要が
軸 - NoSQLの分類
- データの配置による分類
- データの表現による分類
データが物理的にどう配置されるか
ユーザーからみてどのようなデータを格納するか
データの配置- NoSQLの分類
- スタンドアロン
- 分散 P2P型
- 分散 マスタ型
スタンドアロン - NoSQLの分類
ノード ノード
レプリケーション
- 一つのノードの全てのデータが配置される
- レプリケーション含む
分散 マスタ型- NoSQLの分類
ノード ノード ノード ノード
マスタ
- データは分割されて各ノードに配置
- クラスタ全体のメタ情報を管理するマスタが存在
- データの配置
- ノードの追加/削除
分散 P2P型 - NoSQLの分類
- データは分割されて各ノードに配置
- 各ノード自身がクラスタの状態を管理
- 各ノードの状態は後で合わせる
ノード ノード ノード ノード
データの表現 - NoSQLの分類
- KVS
- BigTable型
- ドキュメント指向
- グラフ
KVS - NoSQLの分類
1 v1
2 v2
5 v5 v2
key=2
3 v3
4 v4
検索格納
- キーとバリューのペア
- 性能に特化
- レイテンシー、QPS
ドキュメント指向 - NoSQLの分類
tagsに2を
含むもののid
{“id”:1, ”tags”[1,2,3]}
{“id”:2, ”tags”[1,3]}
{“id”:3, ”tags”[2,5]}
{“id”:6, ”tags”[3,4]} 1,3,5
{“id”:4, ”tags”[1]}
{“id”:5, ”tags”[2,3,4]}
検索格納
- 構造化された”ドキュメント”
- JSON
- スキーマレス
BigTable型 - NoSQLの分類
カラムファミリー1カラムファミリー1カラムファミリー1 カラムファミリー2カラムファミリー2カラムファミリー2カラムファミリー2
列1 列2 列3 列4 列5 列6 列7
行1
行2
行3
行4
- GoogleのBigTable
- 大規模な分散を目標
- カラム型とも
- 注: 列指向RDBMSとは異なる
- テーブル + カラムファミリー
- 実際はKVSに近い
- key: row + column family + column
- value: cell
グラフ - NoSQLの分類
A
CB
D
ID リンク
A
B
C
D
B,C
A
D
- “ノード”と”エッジ”から構成される”グラフ構造”
- トラバーサル
- ノード間を辿るクエリ
Agenda
1. NoSQLって?
2. NoSQLの分類
3. NoSQLの紹介
memcached - NoSQLの紹介
- KVS
- スタンドアロン型
- 主にキャッシュ層として
Redis - NoSQLの紹介
- KVS
- スタンドアロン型
- バリューに構造化データ
- リスト、ハッシュ、セット
MongoDB - NoSQLの紹介
- ドキュメント指向
- 分散 マスタ型
- 柔軟なクエリ / インデックス
Cassandra HBase - NoSQLの紹介
- BigTable型
- 分散 P2P型
- Dynamoをベースにした分散
- BigTable型
- 分散 マスタ型
- キーでソート済み
- 強い一貫性
まとめ
まとめ
✓NoSQLはRDBMSで対応できない問題を解決する
✓解くべき問題に向けたDBを選ぶことが重要
✓RDBMS/NoSQL含む
✓次のような軸で分類すると分かりやすい
✓データの配置
✓データの表現

qpstudy 2013.07 NoSQL