NoSQLの種類

luagate/nosql-types-introNoSQL入門24データベース・SQL

上から下へ、全 24 枚そのまま並べています。

発表モードで開く

NoSQL入門

NoSQLの種類

RDB以外の選択肢 〜用途で選ぶDB〜

1
1

目次

今日の流れ

1. リレーショナルDBの復習と限界

2. NoSQLとは

3. NoSQLの4つの種類

4. RDBとの比較と使い分け

5. まとめと振り返り

2
2
NoSQL入門 - イントロ

今日のゴール

この時間で身につけてほしいことです。

  • NoSQLが「RDB以外の選択肢」だとイメージできる
  • キーバリュー・ドキュメント・カラム指向・グラフの4種類を区別できる
  • それぞれが得意な用途を説明できる
  • RDBとNoSQLの違いを比較できる
  • 用途に合わせてDBを選ぶ視点を持てる
10
3
NoSQL入門 - イントロ

リレーショナルDB の復習

以前学んだ、表でデータを管理するおなじみのデータベースを思い出しましょう。

リレーショナルDB(RDB)

データを行と列の表(テーブル)で管理し、表どうしを関連づけて扱うデータベース。SQLという言葉でデータを出し入れする。きっちり整った台帳のイメージ。

以前学んだ表形式のデータベース

行と列でデータを管理する

表どうしを関連づけられる

SQLで問い合わせる

厳密なルールでデータを守れる

11
4
NoSQL入門 - イントロ

RDBの限界

きっちりした表は便利ですが、データが巨大になったり形が決まらないときに苦しくなります。

  • 大量アクセスで1台のサーバーが限界になりやすい
  • 表の形を最初にきっちり決める必要がある
  • 形が変わりやすいデータは入れにくい
  • 複数台に分けて広げるのが得意でない
  • とにかく速く読み書きしたい用途には重いことがある
12
5
NoSQL入門 - イントロ

NoSQL とは

RDB以外の、いろいろな形でデータを保存できるデータベースの総称です。

NoSQL(Not only SQL)

表形式にこだわらず、用途に合わせた形でデータを保存・取得するデータベースの総称。速さや拡張のしやすさを重視し、大量データや形の定まらないデータに強い。

表形式に縛られないデータベース

用途ごとに最適な形を選べる

大量データや高速処理に強い

複数台に広げて拡張しやすい

RDBの置き換えではなく使い分け

13
6

NoSQL入門 - 種類

2

第2部 NoSQLの4つの種類

形で選ぶデータの入れ物

20
7
NoSQL入門 - 種類

NoSQLの4つの型

NoSQLは保存の形によって大きく4つに分けられます。まず全体像をつかみましょう。

NoSQL
キーバリュー型
鍵と値の1対1
とにかく高速
Redis など
ドキュメント型
柔らかい入れ物
形が自由
MongoDB など
カラム指向型
列ごとに保存
大量データ向き
Cassandra など
グラフ型
つながりを表現
関係をたどる
Neo4j など
21
8
NoSQL入門 - 種類

キーバリュー型(Redisの復習)

キャッシュの回で学んだRedisがこの仲間です。鍵を渡すと値が返る、最もシンプルな形です。

キーバリュー型(Key-Value Store)

鍵(キー)と値(バリュー)を1対1で保存する、もっとも単純な形のデータベース。鍵を渡すと値が一瞬で返る。ロッカーの番号と中身の関係に近い。

以前のキャッシュ回で学んだRedisが代表例

鍵を渡すと値がすぐ返る

構造が単純でとても高速

セッション管理やキャッシュに向く

複雑な検索は苦手

22
9
NoSQL入門 - 種類

ドキュメント型 と カラム指向型

形が自由なドキュメント型と、大量データに強いカラム指向型を見ていきます。

ドキュメント型
  • JSONのような塊で保存
  • 項目の形が自由
  • 変化するデータに強い
カラム指向型
  • 列ごとにまとめて保存
  • 大量データを高速集計
  • ログや分析に向く
使いどころ
  • 柔らかさが要るならドキュメント
  • 巨大ログならカラム指向
23
10
NoSQL入門 - 種類

グラフ型

人と人、物と物の「つながり」そのものをデータとして扱うのが得意な型です。

グラフ型(Graph Database)

データ(点)と、その間のつながり(線)を主役として保存するデータベース。誰と誰が友達か、何が何に関連するか、といった関係をたどる処理が速い。

点と線でつながりを表現する

関係をたどる検索が得意

友達のつながりや経路探索に向く

推薦やネットワーク分析で活躍

表で関係を追うより速いことが多い

24
11
NoSQL入門 - 種類

4種類の特徴と用途

それぞれの型が何を保存し、どんな用途に向くかを一覧で整理します。

保存の形
得意な用途

キーバリュー型

鍵と値の1対1

キャッシュ・セッション

ドキュメント型

自由な形の塊

設定や商品情報

カラム指向型

列ごとにまとめる

ログ・大量データ分析

グラフ型

点と線のつながり

SNSや推薦・経路探索

25
12

NoSQL入門 - 比較

3

第3部 RDBとの比較

速さと拡張のしやすさ

30
13
NoSQL入門 - 比較

RDBとNoSQLの比較

得意なことが正反対なので、どちらが優れているかではなく、用途で選びます。

リレーショナルDB
NoSQL

データの形

表できっちり決める

用途に応じて自由

得意なこと

厳密な整合性

速さと拡張性

拡張

1台を強くする

複数台に広げる

検索

複雑な条件に強い

単純で高速な取得に強い

31
14
NoSQL入門 - 比較

厳密さ重視 と 速さ・拡張性重視

何を一番大事にするかで、向いているデータベースが変わります。

厳密さ重視ならRDB

  • お金や在庫など間違えられないデータ
  • 形が安定していて変わりにくい
  • 複雑な条件で集計したい
  • データの正しさを最優先

速さ・拡張性重視ならNoSQL

  • 大量アクセスをさばきたい
  • データの形が変わりやすい
  • 複数台に広げて成長させたい
  • 多少の柔らかさより速さが大事
32
15
NoSQL入門 - 比較

書き込みのさばきやすさ(イメージ)

複数台に広げやすいNoSQLは、大量の書き込みをさばきやすい傾向があります。あくまでイメージです。

10 相対的なさばきやすさ86420
3相対的なさばきやすさ
10相対的なさばきやすさ
9相対的なさばきやすさ
RDB(1台中心)
キーバリュー型
カラム指向型

出典: 書き込み処理の傾向を示す概念図(概算)

33
16

NoSQL入門 - 使い分け

4

第4部 使い分けの指針

用途からDBを選ぶ

40
17
NoSQL入門 - 使い分け

DBを選ぶ手順

まず何を大事にするかを決め、データの形を見て、種類を絞り込みます。

1. 何を守るか決める

正しさが命ならRDBを軸にする

2. データの形を見る

形が変わるならドキュメント型

3. 量と速さを見る

巨大ログならカラム指向型

4. つながりを見る

関係をたどるならグラフ型

41
18
NoSQL入門 - 使い分け

組み合わせて使うのが現実

実際の現場では、1つに絞らず役割ごとに使い分けることがよくあります。

主役はRDB
  • 注文や会員の本体を管理
  • 正しさを担保する
速さはRedis
  • キャッシュやセッション
  • 一瞬で返す
分析はカラム指向
  • 大量ログを集計
  • 傾向をつかむ
42
19
NoSQL入門 - 使い分け

用途で選ぶという考え方

NoSQLはRDBの敵ではなく、足りないところを補い合う仲間です。

  • どれが一番という正解はない
  • 守りたいものと求める速さで決める
  • データの形に合った入れ物を選ぶ
  • 複数のDBを役割ごとに併用してよい
  • 以前学んだRedisも選択肢の1つ
43
20
NoSQL入門 - まとめ
クイズ

振り返りクイズ

今日の内容を確認しましょう。

人と人のつながりをたどる検索が最も得意なNoSQLの種類はどれ?

A
キーバリュー型
B
ドキュメント型
C
カラム指向型
D
グラフ型
50
21
NoSQL入門 - まとめ
答え

振り返りクイズ 解答

人と人のつながりをたどる検索が最も得意なNoSQLの種類はどれ?

A
キーバリュー型
B
ドキュメント型
C
カラム指向型
D
グラフ型

グラフ型は点(データ)と線(つながり)を主役に保存するため、誰と誰が友達かといった関係をたどる検索が得意です。キーバリュー型は高速な単純取得、ドキュメント型は自由な形、カラム指向型は大量データの集計が得意です。

51
22
NoSQL入門 - まとめ

質疑・次回予告

今日のまとめと、次に学ぶテーマです。質問があればここで受け付けます。

今日のおさらい
  • NoSQLはRDB以外の選択肢の総称
  • キーバリュー・ドキュメント・カラム指向・グラフの4種類
  • 守りたいものと速さで用途から選ぶ
次回予告
  • ビッグデータとデータ分析基盤 〜大量データを活かす〜
  • 集めたデータを分析する仕組みを学ぶ
52
23
"

NoSQLは表に縛られない、用途で選ぶデータベース。鍵で引くか、塊で持つか、列でまとめるか、つながりで追うか。RDBと使い分けて、データに合った入れ物を選びましょう。

NoSQL入門

53
24