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
データベース入門(数珠つなぎオンライン勉強会 #03)
Search
Yuki Watanabe
June 11, 2023
Programming
310
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
データベース入門(数珠つなぎオンライン勉強会 #03)
Yuki Watanabe
June 11, 2023
More Decks by Yuki Watanabe
See All by Yuki Watanabe
【つよナレ#1】初心者こそバニラなPHPでWebアプリを作るべき
ukwhatn
0
480
15分間でふんわり理解するDocker @ Matsuriba MAX
ukwhatn
1
600
10分間でエンジニア就活について話す #ニックトレイン
ukwhatn
3
1.5k
[KC3 Meet! vol.1]ちょっとだけわかるPasskey
ukwhatn
2
500
基礎からわかろうOAuth2/OpenID Connect
ukwhatn
0
580
バックエンドロードマップ(数珠つなぎオンライン勉強会 #02)
ukwhatn
0
660
サーバ入門(概論〜Webサーバ構築)
ukwhatn
0
750
Other Decks in Programming
See All in Programming
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
phperだってパンチカードでコーディングしたい
o0h
PRO
0
200
R8 の設定見直しでアプリサイズ削減
andpad
0
140
動作中のプログラムの中身をリアルタイムに覗く / Realtime Debugger for CSharp with Roslyn
prota
1
1.8k
Simple Storage Service(S3) is not simple
iwatsukayura
0
190
すこし踏み込む CancellationToken
htkym
2
1.6k
Apple Intelligence を用いた個人情報誤送信防止、及びユーザーリクエスト体験の改善について
yukiny
0
310
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
440
速く作れる。その次は、速く確かめられる開発へ 〜AIネイティブ開発を支える、Shift Down〜 / Can build fast. Next, moving to development where we can verify fast.
rkaga
8
5.5k
速習iPhone Duo対応
yuukiw00w
2
960
プロダクトコードからライブラリの境界を見つける
elmetal
PRO
0
100
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
130
Featured
See All Featured
Discover your Explorer Soul
emna__ayadi
2
1.3k
Statistics for Hackers
jakevdp
799
230k
Everyday Curiosity
cassininazir
0
340
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
HDC tutorial
michielstock
2
940
Mobile First: as difficult as doing things right
swwweet
225
10k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
210
Ethics towards AI in product and experience design
skipperchong
2
410
Mind Mapping
helmedeiros
1
390
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
AI: The stuff that nobody shows you
jnunemaker
PRO
10
1.1k
エンジニアに許された特別な時間の終わり
watany
109
250k
Transcript
基礎からちょっとだけ触れる データベース入門 Yuki Watanabe (@ukwhatn) from KINDAI Info-Tech HUB
SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ 近畿大学 理工学部
B3 ▪ KINDAI Info-Tech HUB 役員 ▪ KC3運営委員会(NPO法人NxTEND) 理事 ◦ Webバックエンド・インフラエンジニア ▪ 長期インターンシップ・業務委託での開発 ▪ 転職型プログラミングスクール メンター
SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ SKILLS ▪
Webバックエンド • Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ▪ Webフロントエンド • TS(React) / JS / HTML-CSS ▪ インフラ・その他 • Linux / AWS / Docker / DB / 認証・認可
データベースとは?
データベースとの関わり • 「データベース」 ◦ イメージはできますか? ▪ 分かる人は、たぶん使ったことある人 ◦ システムの裏側で動くもの ▪
ユーザには見えない ▪ 見えないので、意識することがない データベースとは?
データベースとの関わり • 「データベース」 ◦ 需要の高まり ▪ “ビッグデータ” • 大量のデータを効率的に保存し、利用しなければならない データベースとは?
データベースの基本機能 • 基本機能 ◦ データの更新 ▪ データの登録・修正・削除を行うことができる ◦ データの検索・抽出 ▪
大量のデータの中から条件に合致するものを取り出す ◦ 同時実行の制御(排他制御) ▪ 不特定多数からの更新に対して整合性を維持する データベースとは?
データベースの基本機能 • 基本機能 ◦ 耐障害性 ▪ データの冗長化 ▪ バックアップ ◦
セキュリティ・アクセス制御 ▪ 有効な権限を持つユーザが、必要な情報のみにアクセス データベースとは?
データベースの種類 • 5つの分類 ◦ 階層型データベース ▪ データをツリーで管理 • 樹形図みたいな感じ データベースとは?
データベースの種類 • 5つの分類 ◦ リレーショナルデータベース(関係型DB) ▪ 二次元テーブル形式でデータを保存 ◦ オブジェクト指向データベース ▪
あんまない ◦ NoSQLデータベース ▪ データの整合性を犠牲にし、分散処理と高い拡張性 データベースとは?
リレーショナルデータベース • RDBMS ◦ コンセプト ▪ データを二次元表を使って管理する • アプリケーションが使いやすいExcel ◦
操作 ▪ SQLによって行う • データを扱うことへのハードルが一気に下がった データベースとは?
SQL (Structured Query Language) • SQL ◦ データ操作のための言語 ▪ すべてのRDBMSアプリケーションで使える
(※) データベースを扱う言語 SELECT name, age FROM users WHERE age >= 20;
SQL (Structured Query Language) • SQL ◦ データ操作へのハードルを下げた ▪ 英語に似ている
= 扱いやすい ◦ 基本操作コマンド ▪ SELECT, INSERT, UPDATE, DELETE ◦ データ管理のための概念 ▪ テーブル, 行, 列, セル データベースを扱う言語
データベースの基本概念 • ACID ◦ Atomicity / 原子性 ▪ データの更新は、全部成功するか、全部失敗するかの2択 ◦
Consistency / 一貫性 ▪ データの整合性を常に保証する ◦ Isolation / 分離性 ▪ 並列実行された場合と順次実行された場合で結果が同じ ◦ Durability / 持続性 ▪ データ操作が完了したら、その状態は永続する
データベースの基本概念 • トランザクション ◦ 複数のクエリをひとまとまりにして扱う ▪ 原子性と一貫性を担保するための仕組み • ロック ◦
更新対象の部分をロックし、上書きを防ぐ ▪ トランザクションごとに発行される
データベースの基本概念 • ロック ◦ ロックタイムアウト ▪ ロック待ち時間を超えた場合にロールバックされる ◦ デッドロック ▪
ユーザA:α→βで更新 • αをロックして更新→βをロックしようとする ▪ ユーザB:β→αで更新 • βをロックして更新→αをロックしようとする
データベースの基本概念 • やってはいけないトランザクション処理 ◦ オートコミット ▪ デフォルトでONになってるので注意! ◦ ロングトランザクション ▪
デッドロックが発生しやすくなる!
データベースの基本概念 • 分離レベル ◦ 分離性を担保するレベル ▪ 非コミット読み取り • 確定していないデータも読み取る ▪
コミット済み読み取り • 確定されたデータのみ読み取る ▪ 再読み込み可能読み取り • 読み取り対象のデータをロックする ▪ 直列化可能 • 順次実行したときと同じ結果が保証される
データベースの基本概念 • 分離レベル ◦ 分離性を損なう現象 ▪ Dirty Read • トランザクションがコミットされる前に読み込まれてしまう
▪ Fuzzy Read / Non-Repeatable Read • 2度同じデータを読み込んだとき、その間に他のプロセスに 更新され、得られるデータが変わること
データベースの基本概念 • 分離レベル ◦ 分離性を損なう現象 ▪ Phantom Read • 2度の読み出しの間に挿入や削除が行われ、
得られるデータの数が変わること
DBにかかわるアーキテクチャ • セキュリティと利用の容易さの両立 ◦ Web3層 データベースを構成するために
DBにかかわるアーキテクチャ • サーバの冗長化 ◦ 単一のストレージを2つのDBサーバで利用する ▪ Active-Active構成 ▪ Active-Standby構成 •
Cold Standby • Hot Standby データベースを構成するために
DBにかかわるアーキテクチャ • ストレージの冗長化 ◦ レプリケーション ▪ DB-ストレージのセットをいくつか用意し、 ActiveからStandbyにデータを同期する ▪ ディザスタリカバリや負荷分散に利用される
• 遠隔地レプリケーション データベースを構成するために
DBのパフォーマンス • インデックス ◦ 特定の列の情報をB-treeで保存 ▪ 検索を早く行うことができる ▪ デメリット •
インデックス処理のオーバーヘッドによって更新が遅くなる ▪ 鉄則 • サイズが大きく、カーディナリティの高い列に作る データベースを構成するために
EOF 設計やハンズオンはまたの機会に!