Open7

おうちで学べるデータベースのきほん【ログ】

mrnmrn

【1章:データベースって何だろう】

  • データベースの基本的機能①:検索と更新(登録、修正、削除)

    • データをどういうフォーマット(形式)で管理するのが効率的なのか
    • どのくらいの速さで処理できるか
  • データベースの基本的機能②:同時実行制御(複数ユーザ間の更新をうまく整合させるための機能)

  • データベースの基本的機能③:耐障害性

    • データの冗長化(万が一のときに備えて、同じものを用意しておくということ)
    • バックアップ
  • データベースの基本的機能④:セキュリティ

    • クライアント側とサーバ側

データベースの種類

  • 階層型データベース
  • リレーショナルデータベース(二次元表の形式でデータを管理し、現在も最も主流)
  • オブジェクト思考データベース
  • XMLデータベース
  • NoSQLデータベース
mrnmrn

【2章:リレーショナルデータベースって何だろう】

  • リレーショナルデータベース(RDB)
    • データを二次元表を使って管理するデータベースのこと
  • RDBの利点として、データの操作においてSQLというシンプルな言語操作できることがある
  • SQLとは
    • リレーショナルデータベースがデータ操作のために備えている言語のこと
  • RBDにおいて、二次元表は「テーブル」(行と列あり)と呼ばれる
  • DBMS:データベースの機能を提供するソフトウェアのこと(MySQL, Oracleなど)
    • 特にRDBMS(リレーショナルデータベース管理システム)
  • DBMSは、ソフトウェア階層でいう「ミドルウェア」
  • 1章でやったように、通常ユーザがデータベースを直接操作することはなく、あくまでも「ミドルウェア」の上にある「アプリケーション」を介してデータベースにアクセスしている(データベースの基本的機能④:セキュリティ)
mrnmrn

【3章:データベースにまつわるお金のお話】

  • イニシャルコスト(初期費用)とランニングコスト(運転費用)
  • DBMSのイニシャルコストは、ソフトウェアのライセンス料金(使用許可料のこと)
    • プロセッサライセンス
    • ユーザライセンス
  • エディションとオプション
  • EOSL:サポートが終了するタイミング
  • ソフトウェアの寿命は「ソフトウェアが世に出荷された日」を基準に算出される
mrnmrn

【4章:データベースとアーキテクチャ構成】

  • データの冗長化(万が一のときに備えて、同じものを用意しておくということ)
  • アーキテクチャとは:「どのような機能を持ったサーバを用意し、どのようなストレージやネットワーク機器と組み合わせてシステム全体を作り上げるのか」というハードウェアとミドルウェアの構成のこと
  • データベースにおけるアーキテクチャの歴史
    • スタンドアロン
    • クライアント/サーバ
    • Web3層
  • スタンドアロン→クライアント/サーバ:データベースをネットワークに繋ぐことによって、データベースサーバ1台に対して、複数のユーザがアクセスできるようになった
  • クライアント/サーバ→Web3層:クライアントとデータベース層の間に、「Webサーバ層」と「アプリケーション層」が追加されたことによって、セキュリティリスクを減らし、アプリケーション管理のコストを下げている

  • 残る問題点
    • 可用性が低い:サーバが1台しかないため、障害が起きるとサービスが停止する
    • 拡張性に乏しい:サーバが1台しかないため、パフォーマンス改善の手段がない
  • 可用性を上げるための腎臓戦略において、クラスタ構成を組んでシステムの稼働率を高めることを「冗長性を確保する」または「冗長化」という

DBサーバの冗長化について

  • DBサーバはデータが永続層であるため、WebサーバやAPサーバと比べて冗長化が難しいとされてきた
  • DBサーバは大量のデータを永続的に保存する必要があり、かつパフォーマンスも求められる
  • 一般的には、サーバだけではなくて外部のストレージをセットで利用する
  • DBサーバの冗長化としては、「Active-Active」と「Active-Standby」がある
  • 「Active-Active」と「Active-Standby」では、DBサーバ部分は冗長化できても、ストレージ部分は冗長化されていない → レプリケーション

mrnmrn

【5章:DBMSを操作する際の基本知識】

コマンド

  • MySQLを立ち上げる:brew services start mysql
  • rootユーザーとしてログインする:mysql --user=root --password
  • MySQLからログアウト:exit;
  • MySQLの停止:brew services stop mysql

  • インスタンス→ データベース→スキーマ→テーブル
  • 3層派 vs 4層派
mrnmrn

【6章:SQL文の基本を学ぼう】

コマンド

  • 登録してあるデータベース一覧をみる:show databases;
  • 利用するデータベースを選択する:use データベース名;
  • テーブル一覧表示:show tables;
  • テーブルのデータを表示:select * from テーブル名;

  • where :条件
  • order by :行数
  • group by:グループ化
  • 記述する順番:select → from → where → group by→ having → order by
  • テーブルとビューの違いと利点
mrnmrn

【7章】

  • トランザクション:「ここからここまでワンセット」な処理のまとまりのこと
  • トランザクションはACID特製を持っている