Slide 1

Slide 1 text

データベースの種類と特徴 RDBとNOSQLの違いを理解して正しく選ぶ tech.make #1

Slide 2

Slide 2 text

データベースを正しく選択すること
 
 
 What is it?

Slide 3

Slide 3 text

データベースを正しく選択すること
 ↓
 プロジェクトの成功には必要不可欠
 What is it?

Slide 4

Slide 4 text

データベースは
 
 何を基準に選んでいますか?
 What is it?

Slide 5

Slide 5 text

データベースの選ぶには
 
 特徴を掴むことが大切
 What is it?

Slide 6

Slide 6 text

データベースの
 
 種類と特徴を理解しよう!
 What is it?

Slide 7

Slide 7 text

1. 自己紹介
 2. RDBとNOSQL
 3. ACIDとCAP定理とBASE
 4. アーキテクチャとデータモデル
 5. まとめ
 あじぇんだ

Slide 8

Slide 8 text

1. 自己紹介
 2. RDBとNOSQL
 3. ACIDとCAP定理とBASE
 4. アーキテクチャとデータモデル
 5. まとめ
 あじぇんだ

Slide 9

Slide 9 text

自己紹介
 曽根 壮大(35歳)
 Have Fun Tech LLC 代表社員
 
 そ  ね   たけ とも
 ● 日本PostgreSQLユーザ会 勉強会分科会 担当
 ● 3人の子供がいます(長女、次女、長男)
 ● 技術的にはWeb/LL言語/RDBMSが好きです
 ● コミュニティが好き

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

本書きました


Slide 12

Slide 12 text

1. 自己紹介
 2. RDBとNOSQL
 3. ACIDとCAP定理とBASE
 4. アーキテクチャとデータモデル
 5. まとめ
 あじぇんだ

Slide 13

Slide 13 text

RDBとNOSQL
 
 
 RDBとNOSQL

Slide 14

Slide 14 text

RDBとNOSQL
 ↓
 なにが違うのか?
 RDBとNOSQL

Slide 15

Slide 15 text

RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋


Slide 16

Slide 16 text

RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋


Slide 17

Slide 17 text

リレーショナルデータモデルに
 最適化されたデータベース
 
 現在も多くのシステムで広く使われている
 
 RDBとNOSQL RDB


Slide 18

Slide 18 text

RDB以外のDBシステムの総称
 (Not Only SQL)
 
 グラフデータモデルをはじめ、
 RDBの不得意な分野に特化している
 RDBとNOSQL NOSQL


Slide 19

Slide 19 text

つまり、RDB以外はすべてNOSQL
 
 
 RDBとNOSQL

Slide 20

Slide 20 text

RDBと根本から違う
 
 
 RDBとNOSQL

Slide 21

Slide 21 text

● データモデルが違うのでデータ設計も違う
 ● スケールアウトやスケールアップの有効性が違う
 ● パフォーマンスチューニングの方法が違う
 ● アプリケーションからの接続や扱い方が違う
 RDBとNOSQL RDBとNOSQLの違い
 


Slide 22

Slide 22 text

違いを捉えて特徴を掴む
 
 
 RDBとNOSQL

Slide 23

Slide 23 text

1. 自己紹介
 2. RDBとNOSQL
 3. ACIDとCAP定理とBASE
 4. アーキテクチャとデータモデル
 5. まとめ
 あじぇんだ

Slide 24

Slide 24 text

違うを知るための考え方を知る
 
 
 ACIDとCAP定理とBASE

Slide 25

Slide 25 text

ACID
 
 
 ACIDとCAP定理とBASE

Slide 26

Slide 26 text

関連する複数の処理を
 一つの処理単位にまとめて管理する
 トランザクション処理に
 求められる4つの特性
 ACIDとCAP定理とBASE ACID


Slide 27

Slide 27 text

● 原子性(Atomicity)
 ● 一貫性(Consistency)
 ● 独立性(Isolation)
 ● 永続性(Durability)
 ACIDとCAP定理とBASE ACID
 


Slide 28

Slide 28 text

● 原子性(Atomicity)
 ● 一貫性(Consistency)
 ● 独立性(Isolation)
 ● 永続性(Durability)
 ACIDとCAP定理とBASE ACID
 
 トランザクションに含まれる個々の手順が
 すべて実行される or すべて実行されない 
 のどちらかになる性質


Slide 29

Slide 29 text

● 原子性(Atomicity)
 ● 一貫性(Consistency)
 ● 独立性(Isolation)
 ● 永続性(Durability)
 ACIDとCAP定理とBASE ACID
 
 トランザクションの前後でデータの整合性が保たれ、
 矛盾の無い状態が継続される性質


Slide 30

Slide 30 text

● 原子性(Atomicity)
 ● 一貫性(Consistency)
 ● 独立性(Isolation)
 ● 永続性(Durability)
 ACIDとCAP定理とBASE ACID
 
 トランザクション実行中の処理過程が
 外部から隠蔽され、
 他の処理などに影響を与えない性質


Slide 31

Slide 31 text

● 原子性(Atomicity)
 ● 一貫性(Consistency)
 ● 独立性(Isolation)
 ● 永続性(Durability)
 ACIDとCAP定理とBASE ACID
 
 トランザクションが完了した場合に、
 その結果は記録され、失われることはない性質


Slide 32

Slide 32 text

CAP定理
 
 
 ACIDとCAP定理とBASE

Slide 33

Slide 33 text

分散データベースにおける、
 Webサービスを想定した作られた定理
 
 ノード間のデータ複製に置いて、
 同時に3つの保証を提供することはできない
 ACIDとCAP定理とBASE CAP定理


Slide 34

Slide 34 text

分散データベースにおける、
 Webサービスを想定した作られた定理
 
 ノード間のデータ複製に置いて、
 同時に3つの保証を提供することはできない
 ACIDとCAP定理とBASE CAP定理
 CAP定理を見直す。“CAPの3つから2つを選ぶ”と いう説明はミスリーディングだった
 -- Eric Brewer
 引用元 : https://www.publickey1.jp/blog/13/capcap32.html 


Slide 35

Slide 35 text

● 一貫性(Consistency)
 ● 可用性(Availability)
 ● 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 


Slide 36

Slide 36 text

● 一貫性(Consistency)
 ● 可用性(Availability)
 ● 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 
 全てのクライアントが
 常に同一のデータ、またはエラーを参照する性質


Slide 37

Slide 37 text

● 一貫性(Consistency)
 ● 可用性(Availability)
 ● 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 
 全てのクライアントが
 読み込みと書き込みが出来る性質


Slide 38

Slide 38 text

● 一貫性(Consistency)
 ● 可用性(Availability)
 ● 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 
 物理ネットワークが分断されても
 間違った結果が発生しない性質


Slide 39

Slide 39 text

ACIDとCAP定理とBASE CAP定理
 
 一貫性(C)
 可用性(A)
 分断耐性(P)


Slide 40

Slide 40 text

ACIDとCAP定理とBASE CA重視型
 
 一貫性(C)
 可用性(A)
 分断耐性(P)
 PostgreSQL
 MySQL
 RDBMS 全般


Slide 41

Slide 41 text

ACIDとCAP定理とBASE AP重視型
 
 可用性(A)
 分断耐性(P)
 一貫性(C)
 DyamoDB
 Cassandra ...など


Slide 42

Slide 42 text

ACIDとCAP定理とBASE CP重視型
 
 一貫性(C)
 分断耐性(P)
 可用性(A)
 MongoDB
 Redis ...など


Slide 43

Slide 43 text

BASE
 
 
 ACIDとCAP定理とBASE

Slide 44

Slide 44 text

一貫性(C)と可用性(A)を重視した場合はACIDを 満たす必要がある
 
 それに対し、一貫性(C)よりも可用性(A)と分断耐 性(P)を重視する場合はBASEを満たす必要が ある
 ACIDとCAP定理とBASE BASE


Slide 45

Slide 45 text

● Basically Available
 ● Soft-State
 ● Eventually Consistent
 ACIDとCAP定理とBASE BASE


Slide 46

Slide 46 text

● Basically Available
 ● Soft-State
 ● Eventually Consistent
 ACIDとCAP定理とBASE BASE
 可用性が高く、常に利用可能である
 どんなときもアプリケーションが動く


Slide 47

Slide 47 text

● Basically Available
 ● Soft-State
 ● Eventually Consistent
 ACIDとCAP定理とBASE BASE
 厳密なステータスではなく、
 送られてくる情報によって変化する
 常に整合性を保たなくて良い


Slide 48

Slide 48 text

● Basically Available
 ● Soft-State
 ● Eventually Consistent
 最終的に一貫性が保たれる
 結果整合性
 ACIDとCAP定理とBASE BASE


Slide 49

Slide 49 text

ACID(CA型)とBASE(AP型)
 
 
 ACIDとCAP定理とBASE

Slide 50

Slide 50 text

データベースの背景を知ると
 
 特徴が見えてくる
 ACIDとCAP定理とBASE

Slide 51

Slide 51 text

1. 自己紹介
 2. RDBとNOSQL
 3. ACIDとCAP定理とBASE
 4. アーキテクチャとデータモデル
 5. まとめ
 あじぇんだ

Slide 52

Slide 52 text

ACID、CAP定理、BASEを紐解くと
 
 アーキテクチャで重視した部分が見えてくる
 アーキテクチャとデータモデル

Slide 53

Slide 53 text

ACID(CA型)とBASE(AP型)
 
 
 アーキテクチャとデータモデル

Slide 54

Slide 54 text

ACID(CA型)とBASE(AP型)
 ↓
 どのように実現をするか
 アーキテクチャとデータモデル

Slide 55

Slide 55 text

アーキテクチャが見えてくる
 
 
 アーキテクチャとデータモデル

Slide 56

Slide 56 text

マスタ型とP2P型
 
 
 アーキテクチャとデータモデル

Slide 57

Slide 57 text

アーキテクチャとデータモデル マスタ型
 
 マスタ スレーブ スレーブ スレーブ

Slide 58

Slide 58 text

アーキテクチャとデータモデル P2P型
 
 マスタ マスタ マスタ マスタ

Slide 59

Slide 59 text

データモデル
 
 
 アーキテクチャとデータモデル

Slide 60

Slide 60 text

アーキテクチャとデータモデル リレーショナル
 
 user_id name 1
 hoge
 2
 fuga
 3
 foo
 user_id role_id 1
 1
 1
 3
 3
 2
 4
 4
 role_id name 1
 開発部
 2
 営業部
 3
 運用部
 4
 総務部


Slide 61

Slide 61 text

アーキテクチャとデータモデル リレーショナル
 
 user_id name 1
 hoge
 2
 fuga
 3
 foo
 user_id role_id 1
 1
 1
 3
 3
 2
 4
 4
 role_id name 1
 開発部
 2
 営業部
 3
 運用部
 4
 総務部
 集合を定義する
 関係を定義する


Slide 62

Slide 62 text

アーキテクチャとデータモデル キーバリュー
 key value 1
 hoge
 2
 fuga
 3
 foo
 4
 bar
 fuga
 次郎
 hoge
 太郎
 foo
 花子


Slide 63

Slide 63 text

アーキテクチャとデータモデル キーバリュー
 key value 1
 hoge
 2
 fuga
 3
 foo
 4
 bar
 fuga
 次郎
 hoge
 太郎
 foo
 花子
 1:1の関係を保持する


Slide 64

Slide 64 text

アーキテクチャとデータモデル カラム指向
 name hoge
 fuga
 bar
 foo
 test
 部門 開発
 営業
 総務
 企画
 経理


Slide 65

Slide 65 text

アーキテクチャとデータモデル ドキュメント指向
 name : hoge
 role : 開発
 age : 30
 name : fuga
 role : 開発,営業
 from : 広島
 age : 30
 name : foo
 role : 総務
 
 それぞれが独立したドキュメント
 ドキュメントにはユニークなIDでアクセス


Slide 66

Slide 66 text

他にも多種多様にデータモデルはある
 
 
 アーキテクチャとデータモデル

Slide 67

Slide 67 text

RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋


Slide 68

Slide 68 text

1. 自己紹介
 2. RDBとNOSQL
 3. ACIDとCAP定理とBASE
 4. アーキテクチャとデータモデル
 5. まとめ
 あじぇんだ

Slide 69

Slide 69 text

アーキテクチャ x データモデル
 ↓
 データベースの種類と特徴を決める
 まとめ

Slide 70

Slide 70 text

保存したいデータモデル
 +
 重視したいアーキテクチャ
 まとめ

Slide 71

Slide 71 text

ACIDとCAP定理とBASE
 
 軸を持って比較する
 まとめ

Slide 72

Slide 72 text

長所と短所を知る
 ↓
 要件に合わせる
 まとめ

Slide 73

Slide 73 text

“もし現在のアプリケーションがRDBで 上手く動いているのであれば、 それをNOSQLに置換する理由は無いし、 それを勧めたりはしない” Nate McCall (@zznate)

Slide 74

Slide 74 text

データベースの種類と特徴を捉えて
 
 適切なデータベースを選ぶ
 まとめ

Slide 75

Slide 75 text

ご清聴ありがとうございました
 
 
 まとめ