Slide 1

Slide 1 text

と 比較しながら選ぶデータベース ユースケース別に違いを見極め、RDBとNOSQLを使いける Open Source Conference 2020 Online/Niigata

Slide 2

Slide 2 text

と 比較しながら選ぶデータベース ユースケース別に違いを見極め、RDBとNOSQLを使いける Open Source Conference 2020 Online/Niigata RDBMS


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

https://speakerdeck.com/soudai/explanation-of-database-types アーキテクチャ別の違いの資料はこちら 


Slide 8

Slide 8 text

1. 自己紹介
 2. RDBとNOSQL
 3. セッションを保存したい
 4. まとめ
 あじぇんだ

Slide 9

Slide 9 text

1. 自己紹介
 2. RDBとNOSQL
 3. セッションを保存したい
 4. まとめ
 あじぇんだ

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

1. 自己紹介
 2. RDBとNOSQL
 3. セッションを保存したい
 4. まとめ
 あじぇんだ

Slide 12

Slide 12 text

RDBとNOSQL
 
 
 RDBとNOSQL

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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


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 RDB


Slide 17

Slide 17 text

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


Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

RDBと根本から違う
 
 
 RDBとNOSQL

Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

1. 自己紹介
 2. RDBとNOSQL
 3. セッションを保存したい
 4. まとめ
 あじぇんだ

Slide 23

Slide 23 text

Webアプリケーションのセッション
 
 
 セッションを保存したい

Slide 24

Slide 24 text

Webアプリケーションのセッション
 ↓
 どこに保存するか?
 セッションを保存したい

Slide 25

Slide 25 text

● ファイル
 ● Cookie
 ● RDBMS
 ● NOSQL
 セッションを保存したい セッションの保存先
 


Slide 26

Slide 26 text

● ファイル
 ● Cookie
 ● RDBMS
 ● NOSQL
 セッションを保存したい セッションの保存先
 
 ApacheのWebサーバのローカルなどに 
 セッションIDに紐づけて保存する。 
 
 シンプルな反面、複数のWebサーバ運用の時に 
 セッション情報を共有するにはファイル共有が必要。 


Slide 27

Slide 27 text

● ファイル
 ● Cookie
 ● RDBMS
 ● NOSQL
 セッションを保存したい セッションの保存先
 
 ブラウザのCookieの中にセッション情報も一緒に保存し、リク エストの際に一緒に送信する。 
 
 Webサーバが複数台でもセッションを共有できるので 
 負荷に対してはスケールするが、 
 Cookieをジャックされるなどの様々なリスクがある。 
 
 JSからCookieを触れる(HttpOnly=false)だと特に危険 


Slide 28

Slide 28 text

● ファイル
 ● Cookie
 ● RDBMS
 ● NOSQL
 セッションを保存したい セッションの保存先
 


Slide 29

Slide 29 text

RDBMSに保存したことありますか?
 
 
 セッションを保存したい

Slide 30

Slide 30 text

● ファイル
 ● Cookie
 ● RDBMS
 ● NOSQL
 セッションを保存したい セッションの保存先
 
 セッションをRDBMSに保存するとセキュリティ的にも安心。複数の Webサーバでセッション共有することができる。 
 
 しかし負荷が高くなるとRDBMSが問題になりやすい。 
 
 特にメインのデータと同じRDBMSで共有していると、 
 高負荷時にRDBMSにあわせ技で負担になる。 


Slide 31

Slide 31 text

● ファイル
 ● Cookie
 ● RDBMS
 ● NOSQL
 セッションを保存したい セッションの保存先
 
 シンプルにWebサーバ間でセッションを共有できて、 
 セキュリティ的にも安心で、 
 スケールするデータストアが欲しい!! 


Slide 32

Slide 32 text

どんなNOSQLがマッチするか?
 
 
 セッションを保存したい

Slide 33

Slide 33 text

どんなNOSQLがマッチするか?
 ↓
 MemcachedとRedis
 セッションを保存したい

Slide 34

Slide 34 text

● 分散型インメモリKVS(キーバリューストア)
 ○ マルチスレッドでMany CPUにも強い
 ○ 簡単に分散することも出来る
 ● しかし、AWSのElasticacheを使う場合は分散方法に注意が必要
 ○ 同じセッションを取得するクライアント側の実装が必要
 ○ PHPはAWSが専用クライアントを提供してる。
 ● アトミックな処理は苦手なので、セッションのロックが使いたい場合の時は 注意が必要
 ○ 例えばSPAで非同期で同時にセッションを触るなど
 セッションを保存したい Memcached


Slide 35

Slide 35 text

● インメモリKVS(キーバリューストア)
 ○ プライマリ、セカンダリ構成
 ○ クラスタ構成が作れるRedis Clusterもある
 ● RDBMSと同じようにシンプルにセッションを扱える
 ○ アトミックなロック処理が作れるので安心
 ● しかしRedis Clusterでない場合に書き込みはスケールしない
 ○ そこでRedis Clusterなのだけど、お高くなりやすい
 ● 多くのWebサービスなら1台でも対応可能
 ○ メンテナンス出来るなら、あとからCluster移行もできる範囲
 セッションを保存したい Redis


Slide 36

Slide 36 text

RDBMSが問題になったら
 
 とりあえずRedisでも大丈夫
 セッションを保存したい

Slide 37

Slide 37 text

1. 自己紹介
 2. RDBとNOSQL
 3. セッションを保存したい
 4. キャッシュを使いこなしたい
 5. まとめ
 あじぇんだ

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

保存したいデータモデル
 x
 重視したいアーキテクチャ
 ||
 使うべきデータストア
 まとめ

Slide 40

Slide 40 text

正しく選べば
 
 RDBMSをもっと活かせる
 まとめ

Slide 41

Slide 41 text

長所と短所を知る
 
 
 まとめ

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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