qpstudy 2013.07 NoSQL

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って?

なぜ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含む

✓次のような軸で分類すると分かりやすい✓データの配置✓データの表現