View
1.875
Download
1
Category
Preview:
DESCRIPTION
Citation preview
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 v12 v2
5 v5 v2key=2
3 v34 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含む
✓次のような軸で分類すると分かりやすい✓データの配置✓データの表現
Recommended