Upgrade to Pro — share decks privately, control downloads, hide ads and more …

データベース入門(数珠つなぎオンライン勉強会 #03)

データベース入門(数珠つなぎオンライン勉強会 #03)

Yuki Watanabe

June 11, 2023
Tweet

More Decks by Yuki Watanabe

Other Decks in Programming

Transcript

  1. SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ 近畿大学 理工学部

    B3 ▪ KINDAI Info-Tech HUB 役員 ▪ KC3運営委員会(NPO法人NxTEND) 理事 ◦ Webバックエンド・インフラエンジニア ▪ 長期インターンシップ・業務委託での開発 ▪ 転職型プログラミングスクール メンター
  2. SPEAKER • 渡邉 雄貴 / Yuki Watanabe ◦ SKILLS ▪

    Webバックエンド • Ruby(Rails) / Python(FastAPI, Flask) / Kotlin / TS ▪ Webフロントエンド • TS(React) / JS / HTML-CSS ▪ インフラ・その他 • Linux / AWS / Docker / DB / 認証・認可
  3. データベースの基本機能 • 基本機能 ◦ データの更新 ▪ データの登録・修正・削除を行うことができる ◦ データの検索・抽出 ▪

    大量のデータの中から条件に合致するものを取り出す ◦ 同時実行の制御(排他制御) ▪ 不特定多数からの更新に対して整合性を維持する データベースとは?
  4. データベースの基本機能 • 基本機能 ◦ 耐障害性 ▪ データの冗長化 ▪ バックアップ ◦

    セキュリティ・アクセス制御 ▪ 有効な権限を持つユーザが、必要な情報のみにアクセス データベースとは?
  5. データベースの種類 • 5つの分類 ◦ リレーショナルデータベース(関係型DB) ▪ 二次元テーブル形式でデータを保存 ◦ オブジェクト指向データベース ▪

    あんまない ◦ NoSQLデータベース ▪ データの整合性を犠牲にし、分散処理と高い拡張性 データベースとは?
  6. リレーショナルデータベース • RDBMS ◦ コンセプト ▪ データを二次元表を使って管理する • アプリケーションが使いやすいExcel ◦

    操作 ▪ SQLによって行う • データを扱うことへのハードルが一気に下がった データベースとは?
  7. SQL (Structured Query Language) • SQL ◦ データ操作へのハードルを下げた ▪ 英語に似ている

    = 扱いやすい ◦ 基本操作コマンド ▪ SELECT, INSERT, UPDATE, DELETE ◦ データ管理のための概念 ▪ テーブル, 行, 列, セル データベースを扱う言語
  8. データベースの基本概念 • ACID ◦ Atomicity / 原子性 ▪ データの更新は、全部成功するか、全部失敗するかの2択 ◦

    Consistency / 一貫性 ▪ データの整合性を常に保証する ◦ Isolation / 分離性 ▪ 並列実行された場合と順次実行された場合で結果が同じ ◦ Durability / 持続性 ▪ データ操作が完了したら、その状態は永続する
  9. データベースの基本概念 • ロック ◦ ロックタイムアウト ▪ ロック待ち時間を超えた場合にロールバックされる ◦ デッドロック ▪

    ユーザA:α→βで更新 • αをロックして更新→βをロックしようとする ▪ ユーザB:β→αで更新 • βをロックして更新→αをロックしようとする
  10. データベースの基本概念 • 分離レベル ◦ 分離性を担保するレベル ▪ 非コミット読み取り • 確定していないデータも読み取る ▪

    コミット済み読み取り • 確定されたデータのみ読み取る ▪ 再読み込み可能読み取り • 読み取り対象のデータをロックする ▪ 直列化可能 • 順次実行したときと同じ結果が保証される
  11. データベースの基本概念 • 分離レベル ◦ 分離性を損なう現象 ▪ Dirty Read • トランザクションがコミットされる前に読み込まれてしまう

    ▪ Fuzzy Read / Non-Repeatable Read • 2度同じデータを読み込んだとき、その間に他のプロセスに 更新され、得られるデータが変わること
  12. DBのパフォーマンス • インデックス ◦ 特定の列の情報をB-treeで保存 ▪ 検索を早く行うことができる ▪ デメリット •

    インデックス処理のオーバーヘッドによって更新が遅くなる ▪ 鉄則 • サイズが大きく、カーディナリティの高い列に作る データベースを構成するために