データベース入門

Webエンジニアになろう講習会 第6回

自己紹介

renkon

情報通信系
おすすめのエディター募集中です
インフラやってます

前回のおさらい

HTTPって何だったっけ?

  • お願い (リクエスト)お返事 (レスポンス)
    やりとりをする仕組み
  • リソースを取得・編集・削除するやりとりができる

リクエスト

これください!

リクエストの構造

レスポンス

リクエストに対する返事

レスポンスの構造

データの伝送

HTTPが依存するプロトコル

TCP

HTTPが依存する通信プロトコル.

  • 通信が確実に/正しい順序で届くことを保証する.
  • あらゆるデジタルなデータの伝送をすることができる.
    • HTTPのリクエストやメールの送信,コンピュータの遠隔操作(ssh)まで
  • 通信をパケット(小包)に分けて送信する

IP (Internet Protocol)

  • 世界中に何億台も機械があるが、そのうち届いてほしい機械にデータを届けたい
  • 機械に番号を振る
  • ものすごく良い感じに機械に番号を振ることで、機械同士が直接つながっていなくてもデータが届くようになっている

目次

  • 座学
    • データベース ◀️
    • 環境変数
  • 実習
    • SQLで遊ぶ
    • Goでデータベースを扱う
    • サーバーからデータベースを扱う

データベース

Webサービス概観

Webサービス概観

DB (DataBase) とは

  • DataBase → データ基地 → データを蓄積し、管理する場所
  • 例: Excelファイル
    • 大量のデータをまとめられる
    • 効率よく検索、追加、削除ができる
  • SQLと呼ばれる言語がよく使われる

DBMS (DataBase Management System)

  • データベースの情報管理を行うアプリ
  • データの整合性を保つ役割
  • 整合性を保つ: ACID特性
    • Atomicity(原子性)、Consistency(整合性)、Isolation(独立性)、Durability(永続性)
    • 関係が壊れたりデータが勝手に無くなったりしない

RDBMS(Relational DBMS)(1/2)

  • 表形式でデータを格納 (テーブル)
  • 管理する情報の種類を列(カラム)にする
  • 1つのデータを1行(レコード)で管理
  • ACID特性を持つ

RDBMS(2/2)

  • テーブル同士に関係Relation)を作れる
  • 例: 特定のカラムにあるテーブルから制限をかける
    • 部員テーブルの“所属班”は“班”テーブルの”班名”しか挿入できない

SQL

Structured Query Language

例: member テーブルから
Id, Name, Team の3カラムを選択する

SELECT Id, Name, Team FROM member;

NoSQL

  • Not Only SQLの略
    • RDBMS以外のDBMS
  • 高パフォーマンス、サーバー分散
  • SQLを使えない
  • 整合性が保たれない・弱い場合も

様々なDBMS

目次

  • 座学
    • データベース
    • 環境変数 ◀️
  • 実習
    • SQLで遊ぶ
    • Goでデータベースを扱う
    • サーバーからデータベースを扱う

環境変数って何? (1/2)

  • 定義: プロセスに紐づく名前付きの設定(Key=Valueの形で書く)
  • 特徴:
    • アプリは通常「ひとつの実行プロセス」として動く。環境変数はそのプロセスの設定であり、プロセスごとに値が決まる
    • 実行時に読み取って挙動を変える(起動前に設定を用意する)

環境変数って何? (2/2)

  • 例えば
    • 環境によって変わる設定: DBのホスト/ポート、サービスのURL
    • 機密情報: DBのユーザー名・パスワード、APIキー、シークレット

注意点・運用の基本

  • どこに書く?
    • ❌️ ソースコード
      • Gitでコミットしたら漏洩
      • 手元のパソコンとサーバーで設定が異なる
    • ⭕️ 環境変数(よく.envファイルに記述)
      • .gitignoreで、認証情報を含むファイルのみGitから除外
      • 環境ごとに設定を切り替えられる

Webエンジニアになるにあたって

Webエンジニアになるにあたって

なろう講習会 第一部 完!

お疲れ様でした!

本日の実習範囲:
データベースを扱う準備~サーバーからデータベースを扱う