Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
基礎からちょっとだけ触れる データベース入門 Yuki Watanabe (@ukwhatn) from KINDAI Info-Tech HUB
Slide 2
Slide 2 text
SPEAKER ● 渡邉 雄貴 / Yuki Watanabe ○ 近畿大学 理工学部 B3 ■ KINDAI Info-Tech HUB 役員 ■ KC3運営委員会(NPO法人NxTEND) 理事 ○ Webバックエンド・インフラエンジニア ■ 長期インターンシップ・業務委託での開発 ■ 転職型プログラミングスクール メンター
Slide 3
Slide 3 text
SPEAKER ● 渡邉 雄貴 / Yuki Watanabe ○ SKILLS ■ Webバックエンド ● Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ■ Webフロントエンド ● TS(React) / JS / HTML-CSS ■ インフラ・その他 ● Linux / AWS / Docker / DB / 認証・認可
Slide 4
Slide 4 text
データベースとは?
Slide 5
Slide 5 text
データベースとの関わり ● 「データベース」 ○ イメージはできますか? ■ 分かる人は、たぶん使ったことある人 ○ システムの裏側で動くもの ■ ユーザには見えない ■ 見えないので、意識することがない データベースとは?
Slide 6
Slide 6 text
データベースとの関わり ● 「データベース」 ○ 需要の高まり ■ “ビッグデータ” ● 大量のデータを効率的に保存し、利用しなければならない データベースとは?
Slide 7
Slide 7 text
データベースの基本機能 ● 基本機能 ○ データの更新 ■ データの登録・修正・削除を行うことができる ○ データの検索・抽出 ■ 大量のデータの中から条件に合致するものを取り出す ○ 同時実行の制御(排他制御) ■ 不特定多数からの更新に対して整合性を維持する データベースとは?
Slide 8
Slide 8 text
データベースの基本機能 ● 基本機能 ○ 耐障害性 ■ データの冗長化 ■ バックアップ ○ セキュリティ・アクセス制御 ■ 有効な権限を持つユーザが、必要な情報のみにアクセス データベースとは?
Slide 9
Slide 9 text
データベースの種類 ● 5つの分類 ○ 階層型データベース ■ データをツリーで管理 ● 樹形図みたいな感じ データベースとは?
Slide 10
Slide 10 text
データベースの種類 ● 5つの分類 ○ リレーショナルデータベース(関係型DB) ■ 二次元テーブル形式でデータを保存 ○ オブジェクト指向データベース ■ あんまない ○ NoSQLデータベース ■ データの整合性を犠牲にし、分散処理と高い拡張性 データベースとは?
Slide 11
Slide 11 text
リレーショナルデータベース ● RDBMS ○ コンセプト ■ データを二次元表を使って管理する ● アプリケーションが使いやすいExcel ○ 操作 ■ SQLによって行う ● データを扱うことへのハードルが一気に下がった データベースとは?
Slide 12
Slide 12 text
SQL (Structured Query Language) ● SQL ○ データ操作のための言語 ■ すべてのRDBMSアプリケーションで使える (※) データベースを扱う言語 SELECT name, age FROM users WHERE age >= 20;
Slide 13
Slide 13 text
SQL (Structured Query Language) ● SQL ○ データ操作へのハードルを下げた ■ 英語に似ている = 扱いやすい ○ 基本操作コマンド ■ SELECT, INSERT, UPDATE, DELETE ○ データ管理のための概念 ■ テーブル, 行, 列, セル データベースを扱う言語
Slide 14
Slide 14 text
データベースの基本概念 ● ACID ○ Atomicity / 原子性 ■ データの更新は、全部成功するか、全部失敗するかの2択 ○ Consistency / 一貫性 ■ データの整合性を常に保証する ○ Isolation / 分離性 ■ 並列実行された場合と順次実行された場合で結果が同じ ○ Durability / 持続性 ■ データ操作が完了したら、その状態は永続する
Slide 15
Slide 15 text
データベースの基本概念 ● トランザクション ○ 複数のクエリをひとまとまりにして扱う ■ 原子性と一貫性を担保するための仕組み ● ロック ○ 更新対象の部分をロックし、上書きを防ぐ ■ トランザクションごとに発行される
Slide 16
Slide 16 text
データベースの基本概念 ● ロック ○ ロックタイムアウト ■ ロック待ち時間を超えた場合にロールバックされる ○ デッドロック ■ ユーザA:α→βで更新 ● αをロックして更新→βをロックしようとする ■ ユーザB:β→αで更新 ● βをロックして更新→αをロックしようとする
Slide 17
Slide 17 text
データベースの基本概念 ● やってはいけないトランザクション処理 ○ オートコミット ■ デフォルトでONになってるので注意! ○ ロングトランザクション ■ デッドロックが発生しやすくなる!
Slide 18
Slide 18 text
データベースの基本概念 ● 分離レベル ○ 分離性を担保するレベル ■ 非コミット読み取り ● 確定していないデータも読み取る ■ コミット済み読み取り ● 確定されたデータのみ読み取る ■ 再読み込み可能読み取り ● 読み取り対象のデータをロックする ■ 直列化可能 ● 順次実行したときと同じ結果が保証される
Slide 19
Slide 19 text
データベースの基本概念 ● 分離レベル ○ 分離性を損なう現象 ■ Dirty Read ● トランザクションがコミットされる前に読み込まれてしまう ■ Fuzzy Read / Non-Repeatable Read ● 2度同じデータを読み込んだとき、その間に他のプロセスに 更新され、得られるデータが変わること
Slide 20
Slide 20 text
データベースの基本概念 ● 分離レベル ○ 分離性を損なう現象 ■ Phantom Read ● 2度の読み出しの間に挿入や削除が行われ、 得られるデータの数が変わること
Slide 21
Slide 21 text
DBにかかわるアーキテクチャ ● セキュリティと利用の容易さの両立 ○ Web3層 データベースを構成するために
Slide 22
Slide 22 text
DBにかかわるアーキテクチャ ● サーバの冗長化 ○ 単一のストレージを2つのDBサーバで利用する ■ Active-Active構成 ■ Active-Standby構成 ● Cold Standby ● Hot Standby データベースを構成するために
Slide 23
Slide 23 text
DBにかかわるアーキテクチャ ● ストレージの冗長化 ○ レプリケーション ■ DB-ストレージのセットをいくつか用意し、 ActiveからStandbyにデータを同期する ■ ディザスタリカバリや負荷分散に利用される ● 遠隔地レプリケーション データベースを構成するために
Slide 24
Slide 24 text
DBのパフォーマンス ● インデックス ○ 特定の列の情報をB-treeで保存 ■ 検索を早く行うことができる ■ デメリット ● インデックス処理のオーバーヘッドによって更新が遅くなる ■ 鉄則 ● サイズが大きく、カーディナリティの高い列に作る データベースを構成するために
Slide 25
Slide 25 text
EOF 設計やハンズオンはまたの機会に!