Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
データベースの種類と特徴 / Explanation-of-database-types
Search
soudai sone
PRO
May 23, 2020
Technology
1.9k
6
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
データベースの種類と特徴 / Explanation-of-database-types
RDBとNOSQLの違いにフォーカスしながら種類と特徴について解説する資料です。
soudai sone
PRO
May 23, 2020
More Decks by soudai sone
See All by soudai sone
AIを活用するために決めた "やらないこと" - 価値に注目する / Not betting on AI
soudai
PRO
3
610
目の前の楽しいが人生を変える - コミュニティの螺旋の歩き方と楽しむコツ / change your life
soudai
PRO
5
700
医療の現場を変革に挑戦した半年間の軌跡 - PythonとAIで現場を変える / From Code to Care
soudai
PRO
1
690
形骸化しない社内勉強会の取り組み - オーナーシップの作り方 / In-house study session
soudai
PRO
1
290
Djangoユーザが知っ得なPostgreSQL機能 - 設計の選択肢を増やす / Djang-use-PostgreSQL
soudai
PRO
1
340
AI時代における具体と抽象の往復 - 日常にチャンスがある / Moving Between the Concrete
soudai
PRO
9
4.4k
制約を設計する - 非決定性との境界線 / Designing constraints
soudai
PRO
6
4.6k
APMの世界から見るOpenTelemetryのTraceの世界 / OpenTelemetry in the Java
soudai
PRO
2
860
失敗できる意思決定とソフトウェアとの正しい歩き方_-_変化と向き合う選択肢/ Designing for Reversible Decisions
soudai
PRO
16
7.2k
Other Decks in Technology
See All in Technology
AIエージェントを最高のパートナーに育てる方法|評価と判断軸を育てる5つのステップ
koichiaoki
1
160
CI/CDではもう遅い - 人とAIが迂回しないDevSecOps Verify基盤の再設計 -
kintotechdev
0
250
Genieを崇めよ
kameitomohiro
0
170
AgentCore Runtime上にAgentic Coding基盤を構築・展開する際の設計ポイントと限界点 / Design considerations and limitations when building an agentic coding platform on AgentCore Runtime
har1101
6
760
「大丈夫そう?」をObservabilityで確かめる
mrmtsu
0
160
認知負荷を吸収し、プロダクトをまたぐPR Preview基盤の設計事例
taiki45
2
320
人間はどの意思決定を手放せるのか
kawasima
16
8.3k
Vibe Coding で作ったプロダクトをどう安全に動かすか / How to Safely Run Products Built with Vibe Coding
glidenote
0
630
AWS DevOps Agent スキルをつかいこなそう / Master AWS DevOps Agent Skills
kinunori
1
490
GoのInterface内部構造から学ぶ!最高パフォーマンスを出すコード設計
yappli_developers
1
290
作って終わりじゃないサーバーレス 〜9年運用する大規模EC物流API基盤の設計・運用のリアル〜
zozotech
PRO
0
530
あけおめLINE 傾向とその対策
nasa9084
0
330
Featured
See All Featured
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
520
Game over? The fight for quality and originality in the time of robots
wayneb77
1
290
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
290
SEO for Brand Visibility & Recognition
aleyda
0
4.8k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
GraphQLとの向き合い方2022年版
quramy
50
15k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
830
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
560
Between Models and Reality
mayunak
4
470
The agentic SEO stack - context over prompts
schlessera
0
940
Transcript
データベースの種類と特徴 RDBとNOSQLの違いを理解して正しく選ぶ tech.make #1
データベースを正しく選択すること What is it?
データベースを正しく選択すること ↓ プロジェクトの成功には必要不可欠 What is it?
データベースは 何を基準に選んでいますか? What is it?
データベースの選ぶには 特徴を掴むことが大切 What is it?
データベースの 種類と特徴を理解しよう! What is it?
1. 自己紹介 2. RDBとNOSQL 3. ACIDとCAP定理とBASE 4. アーキテクチャとデータモデル 5. まとめ
あじぇんだ
1. 自己紹介 2. RDBとNOSQL 3. ACIDとCAP定理とBASE 4. アーキテクチャとデータモデル 5. まとめ
あじぇんだ
自己紹介 曽根 壮大(35歳) Have Fun Tech LLC 代表社員 そ
ね たけ とも • 日本PostgreSQLユーザ会 勉強会分科会 担当 • 3人の子供がいます(長女、次女、長男) • 技術的にはWeb/LL言語/RDBMSが好きです • コミュニティが好き
None
本書きました
1. 自己紹介 2. RDBとNOSQL 3. ACIDとCAP定理とBASE 4. アーキテクチャとデータモデル 5. まとめ
あじぇんだ
RDBとNOSQL RDBとNOSQL
RDBとNOSQL ↓ なにが違うのか? RDBとNOSQL
RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL
ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋
RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL
ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋
リレーショナルデータモデルに 最適化されたデータベース 現在も多くのシステムで広く使われている RDBとNOSQL RDB
RDB以外のDBシステムの総称 (Not Only SQL) グラフデータモデルをはじめ、 RDBの不得意な分野に特化している RDBとNOSQL NOSQL
つまり、RDB以外はすべてNOSQL RDBとNOSQL
RDBと根本から違う RDBとNOSQL
• データモデルが違うのでデータ設計も違う • スケールアウトやスケールアップの有効性が違う • パフォーマンスチューニングの方法が違う • アプリケーションからの接続や扱い方が違う RDBとNOSQL RDBとNOSQLの違い
違いを捉えて特徴を掴む RDBとNOSQL
1. 自己紹介 2. RDBとNOSQL 3. ACIDとCAP定理とBASE 4. アーキテクチャとデータモデル 5. まとめ
あじぇんだ
違うを知るための考え方を知る ACIDとCAP定理とBASE
ACID ACIDとCAP定理とBASE
関連する複数の処理を 一つの処理単位にまとめて管理する トランザクション処理に 求められる4つの特性 ACIDとCAP定理とBASE ACID
• 原子性(Atomicity) • 一貫性(Consistency) • 独立性(Isolation) • 永続性(Durability) ACIDとCAP定理とBASE ACID
• 原子性(Atomicity) • 一貫性(Consistency) • 独立性(Isolation) • 永続性(Durability) ACIDとCAP定理とBASE ACID
トランザクションに含まれる個々の手順が すべて実行される or すべて実行されない のどちらかになる性質
• 原子性(Atomicity) • 一貫性(Consistency) • 独立性(Isolation) • 永続性(Durability) ACIDとCAP定理とBASE ACID
トランザクションの前後でデータの整合性が保たれ、 矛盾の無い状態が継続される性質
• 原子性(Atomicity) • 一貫性(Consistency) • 独立性(Isolation) • 永続性(Durability) ACIDとCAP定理とBASE ACID
トランザクション実行中の処理過程が 外部から隠蔽され、 他の処理などに影響を与えない性質
• 原子性(Atomicity) • 一貫性(Consistency) • 独立性(Isolation) • 永続性(Durability) ACIDとCAP定理とBASE ACID
トランザクションが完了した場合に、 その結果は記録され、失われることはない性質
CAP定理 ACIDとCAP定理とBASE
分散データベースにおける、 Webサービスを想定した作られた定理 ノード間のデータ複製に置いて、 同時に3つの保証を提供することはできない ACIDとCAP定理とBASE CAP定理
分散データベースにおける、 Webサービスを想定した作られた定理 ノード間のデータ複製に置いて、 同時に3つの保証を提供することはできない ACIDとCAP定理とBASE CAP定理 CAP定理を見直す。“CAPの3つから2つを選ぶ”と いう説明はミスリーディングだった --
Eric Brewer 引用元 : https://www.publickey1.jp/blog/13/capcap32.html
• 一貫性(Consistency) • 可用性(Availability) • 分断耐性(Partition-tolerance) ACIDとCAP定理とBASE CAP定理
• 一貫性(Consistency) • 可用性(Availability) • 分断耐性(Partition-tolerance) ACIDとCAP定理とBASE CAP定理 全てのクライアントが
常に同一のデータ、またはエラーを参照する性質
• 一貫性(Consistency) • 可用性(Availability) • 分断耐性(Partition-tolerance) ACIDとCAP定理とBASE CAP定理 全てのクライアントが
読み込みと書き込みが出来る性質
• 一貫性(Consistency) • 可用性(Availability) • 分断耐性(Partition-tolerance) ACIDとCAP定理とBASE CAP定理 物理ネットワークが分断されても
間違った結果が発生しない性質
ACIDとCAP定理とBASE CAP定理 一貫性(C) 可用性(A) 分断耐性(P)
ACIDとCAP定理とBASE CA重視型 一貫性(C) 可用性(A) 分断耐性(P) PostgreSQL MySQL RDBMS 全般
ACIDとCAP定理とBASE AP重視型 可用性(A) 分断耐性(P) 一貫性(C) DyamoDB Cassandra ...など
ACIDとCAP定理とBASE CP重視型 一貫性(C) 分断耐性(P) 可用性(A) MongoDB Redis ...など
BASE ACIDとCAP定理とBASE
一貫性(C)と可用性(A)を重視した場合はACIDを 満たす必要がある それに対し、一貫性(C)よりも可用性(A)と分断耐 性(P)を重視する場合はBASEを満たす必要が ある ACIDとCAP定理とBASE BASE
• Basically Available • Soft-State • Eventually Consistent ACIDとCAP定理とBASE BASE
• Basically Available • Soft-State • Eventually Consistent ACIDとCAP定理とBASE BASE
可用性が高く、常に利用可能である どんなときもアプリケーションが動く
• Basically Available • Soft-State • Eventually Consistent ACIDとCAP定理とBASE BASE
厳密なステータスではなく、 送られてくる情報によって変化する 常に整合性を保たなくて良い
• Basically Available • Soft-State • Eventually Consistent 最終的に一貫性が保たれる 結果整合性
ACIDとCAP定理とBASE BASE
ACID(CA型)とBASE(AP型) ACIDとCAP定理とBASE
データベースの背景を知ると 特徴が見えてくる ACIDとCAP定理とBASE
1. 自己紹介 2. RDBとNOSQL 3. ACIDとCAP定理とBASE 4. アーキテクチャとデータモデル 5. まとめ
あじぇんだ
ACID、CAP定理、BASEを紐解くと アーキテクチャで重視した部分が見えてくる アーキテクチャとデータモデル
ACID(CA型)とBASE(AP型) アーキテクチャとデータモデル
ACID(CA型)とBASE(AP型) ↓ どのように実現をするか アーキテクチャとデータモデル
アーキテクチャが見えてくる アーキテクチャとデータモデル
マスタ型とP2P型 アーキテクチャとデータモデル
アーキテクチャとデータモデル マスタ型 マスタ スレーブ スレーブ スレーブ
アーキテクチャとデータモデル P2P型 マスタ マスタ マスタ マスタ
データモデル アーキテクチャとデータモデル
アーキテクチャとデータモデル リレーショナル 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 総務部
アーキテクチャとデータモデル リレーショナル 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 総務部 集合を定義する 関係を定義する
アーキテクチャとデータモデル キーバリュー key value 1 hoge 2 fuga 3 foo
4 bar fuga 次郎 hoge 太郎 foo 花子
アーキテクチャとデータモデル キーバリュー key value 1 hoge 2 fuga 3 foo
4 bar fuga 次郎 hoge 太郎 foo 花子 1:1の関係を保持する
アーキテクチャとデータモデル カラム指向 name hoge fuga bar foo test 部門 開発
営業 総務 企画 経理
アーキテクチャとデータモデル ドキュメント指向 name : hoge role : 開発 age :
30 name : fuga role : 開発,営業 from : 広島 age : 30 name : foo role : 総務 それぞれが独立したドキュメント ドキュメントにはユニークなIDでアクセス
他にも多種多様にデータモデルはある アーキテクチャとデータモデル
RDBとNOSQL アーキテクチャ / データモデル マスタ型 P2P型 その他 リレーショナル MySQL PostgreSQL
ProxySQL pgpool-2 キーバリュー Redis Memcached Redis Cluster カラム指向 Redshift Cassandra ドキュメント指向 MongoDB グラフ指向 Neo4J InfiniteGraph ※代表的なデータベースのソフトウェアの抜粋
1. 自己紹介 2. RDBとNOSQL 3. ACIDとCAP定理とBASE 4. アーキテクチャとデータモデル 5. まとめ
あじぇんだ
アーキテクチャ x データモデル ↓ データベースの種類と特徴を決める まとめ
保存したいデータモデル + 重視したいアーキテクチャ まとめ
ACIDとCAP定理とBASE 軸を持って比較する まとめ
長所と短所を知る ↓ 要件に合わせる まとめ
“もし現在のアプリケーションがRDBで 上手く動いているのであれば、 それをNOSQLに置換する理由は無いし、 それを勧めたりはしない” Nate McCall (@zznate)
データベースの種類と特徴を捉えて 適切なデータベースを選ぶ まとめ
ご清聴ありがとうございました まとめ