データベースの種類と特徴 / Explanation-of-database-types

データベースの種類と特徴 / Explanation-of-database-types

RDBとNOSQLの違いにフォーカスしながら種類と特徴について解説する資料です。

88f4e84b94fe07cddbd9e6479d689192?s=128

soudai sone

May 23, 2020
Tweet

Transcript

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

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

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

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

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

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

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


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


    あじぇんだ
  9. 自己紹介
 曽根 壮大(35歳)
 Have Fun Tech LLC 代表社員
 
 そ 

    ね   たけ とも
 • 日本PostgreSQLユーザ会 勉強会分科会 担当
 • 3人の子供がいます(長女、次女、長男)
 • 技術的にはWeb/LL言語/RDBMSが好きです
 • コミュニティが好き
  10. None
  11. 本書きました


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


    あじぇんだ
  13. RDBとNOSQL
 
 
 RDBとNOSQL

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

  15. RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL

    ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋

  16. RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL

    ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋

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


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


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

  20. RDBと根本から違う
 
 
 RDBとNOSQL

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


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

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


    あじぇんだ
  24. 違うを知るための考え方を知る
 
 
 ACIDとCAP定理とBASE

  25. ACID
 
 
 ACIDとCAP定理とBASE

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


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


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


    
 トランザクションに含まれる個々の手順が
 すべて実行される or すべて実行されない 
 のどちらかになる性質

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


    
 トランザクションの前後でデータの整合性が保たれ、
 矛盾の無い状態が継続される性質

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


    
 トランザクション実行中の処理過程が
 外部から隠蔽され、
 他の処理などに影響を与えない性質

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


    
 トランザクションが完了した場合に、
 その結果は記録され、失われることはない性質

  32. CAP定理
 
 
 ACIDとCAP定理とBASE

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


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

    Eric Brewer
 引用元 : https://www.publickey1.jp/blog/13/capcap32.html 

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


  36. • 一貫性(Consistency)
 • 可用性(Availability)
 • 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 
 全てのクライアントが


    常に同一のデータ、またはエラーを参照する性質

  37. • 一貫性(Consistency)
 • 可用性(Availability)
 • 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 
 全てのクライアントが


    読み込みと書き込みが出来る性質

  38. • 一貫性(Consistency)
 • 可用性(Availability)
 • 分断耐性(Partition-tolerance)
 ACIDとCAP定理とBASE CAP定理
 
 物理ネットワークが分断されても


    間違った結果が発生しない性質

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


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


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


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


  43. BASE
 
 
 ACIDとCAP定理とBASE

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


  45. • Basically Available
 • Soft-State
 • Eventually Consistent
 ACIDとCAP定理とBASE BASE


  46. • Basically Available
 • Soft-State
 • Eventually Consistent
 ACIDとCAP定理とBASE BASE


    可用性が高く、常に利用可能である
 どんなときもアプリケーションが動く

  47. • Basically Available
 • Soft-State
 • Eventually Consistent
 ACIDとCAP定理とBASE BASE


    厳密なステータスではなく、
 送られてくる情報によって変化する
 常に整合性を保たなくて良い

  48. • Basically Available
 • Soft-State
 • Eventually Consistent
 最終的に一貫性が保たれる
 結果整合性


    ACIDとCAP定理とBASE BASE

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

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

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


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

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

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

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

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

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

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

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

  60. アーキテクチャとデータモデル リレーショナル
 
 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
 総務部

  61. アーキテクチャとデータモデル リレーショナル
 
 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
 総務部
 集合を定義する
 関係を定義する

  62. アーキテクチャとデータモデル キーバリュー
 key value 1
 hoge
 2
 fuga
 3
 foo


    4
 bar
 fuga
 次郎
 hoge
 太郎
 foo
 花子

  63. アーキテクチャとデータモデル キーバリュー
 key value 1
 hoge
 2
 fuga
 3
 foo


    4
 bar
 fuga
 次郎
 hoge
 太郎
 foo
 花子
 1:1の関係を保持する

  64. アーキテクチャとデータモデル カラム指向
 name hoge
 fuga
 bar
 foo
 test
 部門 開発


    営業
 総務
 企画
 経理

  65. アーキテクチャとデータモデル ドキュメント指向
 name : hoge
 role : 開発
 age :

    30
 name : fuga
 role : 開発,営業
 from : 広島
 age : 30
 name : foo
 role : 総務
 
 それぞれが独立したドキュメント
 ドキュメントにはユニークなIDでアクセス

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

  67. RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL

    ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋

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


    あじぇんだ
  69. アーキテクチャ x データモデル
 ↓
 データベースの種類と特徴を決める
 まとめ

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

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

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

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

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

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