Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
PostgreSQL🐘と 比較しながら選ぶデータベース / select-database-u...
Search
soudai sone
PRO
July 25, 2020
Technology
3
1.5k
PostgreSQL🐘と 比較しながら選ぶデータベース / select-database-usecase
Open Source Conference 2020 Online/Niigataの登壇資料です。
https://ospn.connpass.com/event/181888/
soudai sone
PRO
July 25, 2020
Tweet
Share
More Decks by soudai sone
See All by soudai sone
手を動かしながら学ぶデータモデリング - 論理設計から物理設計まで / Data modeling
soudai
PRO
26
6.4k
これからアウトプットする人たちへ - アウトプットを支える技術 / that support output
soudai
PRO
19
5.7k
コミュニティと計画的偶発性理論 - 出会いが人生を変える / Life-Changing Encounters
soudai
PRO
7
1.8k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
60
37k
変化に強いテーブル設計の勘所 / Table design that is resistant to changes
soudai
PRO
68
19k
抽象化をするということ - 具体と抽象の往復を身につける / Abstraction and concretization
soudai
PRO
50
25k
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
PRO
38
34k
ソフトウェアエンジニアとしてキャリアの螺旋を駆け上がる方法 - 経験と出会いが人生を変える / Career-Anchor-Drive
soudai
PRO
20
6.9k
新婚19年目から学ぶ夫婦円満の正しい歩き方 / Life is beautiful
soudai
PRO
12
4.8k
Other Decks in Technology
See All in Technology
AI時代のインシデント対応 〜時代を切り抜ける、組織アーキテクチャ〜
jacopen
4
130
なぜブラウザで帳票を生成したいのか どのようにブラウザで帳票を生成するのか
yagisanreports
1
200
機械学習を「社会実装」するということ 2025年冬版 / Social Implementation of Machine Learning November 2025 Version
moepy_stats
2
120
未回答質問の回答一覧 / 開発をリードする品質保証 QAエンジニアと開発者の未来を考える-Findy Online Conference -
findy_eventslides
0
410
マルチドライブアーキテクチャ: 複数の駆動力でプロダクトを前進させる
knih
0
9.9k
今すぐGoogle Antigravityを触りましょう
rfdnxbro
0
160
入社したばかりでもできる、 アクセシビリティ改善の第一歩
unachang113
2
350
プロダクト負債と歩む持続可能なサービスを育てるための挑戦
sansantech
PRO
1
910
クラウドネイティブ時代の 開発プロセス再設計 〜速さと品質を両立するには〜
moritamasami
0
110
確実に伝えるHealth通知 〜半自動システムでほどよく漏れなく / JAWS-UG 神戸 #9 神戸へようこそ!LT会
genda
0
110
Kubernetesと共にふりかえる! エンタープライズシステムのインフラ設計・テストの進め方大全
daitak
0
450
AS59105におけるFreeBSD EtherIPの運用と課題
x86taka
0
270
Featured
See All Featured
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Testing 201, or: Great Expectations
jmmastey
46
7.8k
A better future with KSS
kneath
239
18k
Leading Effective Engineering Teams in the AI Era
addyosmani
8
1.1k
Optimizing for Happiness
mojombo
379
70k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
680
Visualization
eitanlees
150
16k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Six Lessons from altMBA
skipperchong
29
4.1k
Practical Orchestrator
shlominoach
190
11k
RailsConf 2023
tenderlove
30
1.3k
Transcript
と 比較しながら選ぶデータベース ユースケース別に違いを見極め、RDBとNOSQLを使いける Open Source Conference 2020 Online/Niigata
と 比較しながら選ぶデータベース ユースケース別に違いを見極め、RDBとNOSQLを使いける Open Source Conference 2020 Online/Niigata RDBMS
データベースを正しく選択すること What is it?
データベースは 何を基準に選んでいますか? What is it?
データベースの選ぶには 特徴を掴むことが大切 What is it?
ユースケースに合わせて データベースの 種類と特徴を理解しよう! What is it?
https://speakerdeck.com/soudai/explanation-of-database-types アーキテクチャ別の違いの資料はこちら
1. 自己紹介 2. RDBとNOSQL 3. セッションを保存したい 4. まとめ あじぇんだ
1. 自己紹介 2. RDBとNOSQL 3. セッションを保存したい 4. まとめ あじぇんだ
自己紹介 曽根 壮大(35歳) Have Fun Tech LLC 代表社員 そ
ね たけ とも • 日本PostgreSQLユーザ会 勉強会分科会 担当 • 3人の子供がいます(長女、次女、長男) • 技術的にはWeb/LL言語/RDBMSが好きです • コミュニティが好き
1. 自己紹介 2. RDBとNOSQL 3. セッションを保存したい 4. まとめ あじぇんだ
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. セッションを保存したい 4. まとめ あじぇんだ
Webアプリケーションのセッション セッションを保存したい
Webアプリケーションのセッション ↓ どこに保存するか? セッションを保存したい
• ファイル • Cookie • RDBMS • NOSQL セッションを保存したい セッションの保存先
• ファイル • Cookie • RDBMS • NOSQL セッションを保存したい セッションの保存先
ApacheのWebサーバのローカルなどに セッションIDに紐づけて保存する。 シンプルな反面、複数のWebサーバ運用の時に セッション情報を共有するにはファイル共有が必要。
• ファイル • Cookie • RDBMS • NOSQL セッションを保存したい セッションの保存先
ブラウザのCookieの中にセッション情報も一緒に保存し、リク エストの際に一緒に送信する。 Webサーバが複数台でもセッションを共有できるので 負荷に対してはスケールするが、 Cookieをジャックされるなどの様々なリスクがある。 JSからCookieを触れる(HttpOnly=false)だと特に危険
• ファイル • Cookie • RDBMS • NOSQL セッションを保存したい セッションの保存先
RDBMSに保存したことありますか? セッションを保存したい
• ファイル • Cookie • RDBMS • NOSQL セッションを保存したい セッションの保存先
セッションをRDBMSに保存するとセキュリティ的にも安心。複数の Webサーバでセッション共有することができる。 しかし負荷が高くなるとRDBMSが問題になりやすい。 特にメインのデータと同じRDBMSで共有していると、 高負荷時にRDBMSにあわせ技で負担になる。
• ファイル • Cookie • RDBMS • NOSQL セッションを保存したい セッションの保存先
シンプルにWebサーバ間でセッションを共有できて、 セキュリティ的にも安心で、 スケールするデータストアが欲しい!!
どんなNOSQLがマッチするか? セッションを保存したい
どんなNOSQLがマッチするか? ↓ MemcachedとRedis セッションを保存したい
• 分散型インメモリKVS(キーバリューストア) ◦ マルチスレッドでMany CPUにも強い ◦ 簡単に分散することも出来る • しかし、AWSのElasticacheを使う場合は分散方法に注意が必要 ◦
同じセッションを取得するクライアント側の実装が必要 ◦ PHPはAWSが専用クライアントを提供してる。 • アトミックな処理は苦手なので、セッションのロックが使いたい場合の時は 注意が必要 ◦ 例えばSPAで非同期で同時にセッションを触るなど セッションを保存したい Memcached
• インメモリKVS(キーバリューストア) ◦ プライマリ、セカンダリ構成 ◦ クラスタ構成が作れるRedis Clusterもある • RDBMSと同じようにシンプルにセッションを扱える ◦
アトミックなロック処理が作れるので安心 • しかしRedis Clusterでない場合に書き込みはスケールしない ◦ そこでRedis Clusterなのだけど、お高くなりやすい • 多くのWebサービスなら1台でも対応可能 ◦ メンテナンス出来るなら、あとからCluster移行もできる範囲 セッションを保存したい Redis
RDBMSが問題になったら とりあえずRedisでも大丈夫 セッションを保存したい
1. 自己紹介 2. RDBとNOSQL 3. セッションを保存したい 4. キャッシュを使いこなしたい 5. まとめ
あじぇんだ
アーキテクチャ x データモデル ↓ データベースの種類と特徴を決める まとめ
保存したいデータモデル x 重視したいアーキテクチャ || 使うべきデータストア まとめ
正しく選べば RDBMSをもっと活かせる まとめ
長所と短所を知る まとめ
長所と短所を知る ↓ 要件に合わせる まとめ
“もし現在のアプリケーションがRDBで 上手く動いているのであれば、 それをNOSQLに置換する理由は無いし、 それを勧めたりはしない” Nate McCall (@zznate)
データベースの種類と特徴を捉えて 適切なデータベースを選ぶ まとめ
ご清聴ありがとうございました まとめ