Open7
おうちで学べるデータベースのきほん【ログ】
【1章:データベースって何だろう】
-
データベースの基本的機能①:検索と更新(登録、修正、削除)
- データをどういうフォーマット(形式)で管理するのが効率的なのか
- どのくらいの速さで処理できるか
-
データベースの基本的機能②:同時実行制御(複数ユーザ間の更新をうまく整合させるための機能)
-
データベースの基本的機能③:耐障害性
- データの冗長化(万が一のときに備えて、同じものを用意しておくということ)
- バックアップ
-
データベースの基本的機能④:セキュリティ
- クライアント側とサーバ側
データベースの種類
- 階層型データベース
- リレーショナルデータベース(二次元表の形式でデータを管理し、現在も最も主流)
- オブジェクト思考データベース
- XMLデータベース
- NoSQLデータベース
【2章:リレーショナルデータベースって何だろう】
- リレーショナルデータベース(RDB)
- データを二次元表を使って管理するデータベースのこと
- RDBの利点として、データの操作においてSQLというシンプルな言語操作できることがある
- SQLとは
- リレーショナルデータベースがデータ操作のために備えている言語のこと
- RBDにおいて、二次元表は「テーブル」(行と列あり)と呼ばれる
- DBMS:データベースの機能を提供するソフトウェアのこと(MySQL, Oracleなど)
- 特にRDBMS(リレーショナルデータベース管理システム)
- DBMSは、ソフトウェア階層でいう「ミドルウェア」
- 1章でやったように、通常ユーザがデータベースを直接操作することはなく、あくまでも「ミドルウェア」の上にある「アプリケーション」を介してデータベースにアクセスしている(データベースの基本的機能④:セキュリティ)
【3章:データベースにまつわるお金のお話】
- イニシャルコスト(初期費用)とランニングコスト(運転費用)
- DBMSのイニシャルコストは、ソフトウェアのライセンス料金(使用許可料のこと)
- プロセッサライセンス
- ユーザライセンス
- エディションとオプション
- EOSL:サポートが終了するタイミング
- ソフトウェアの寿命は「ソフトウェアが世に出荷された日」を基準に算出される
【4章:データベースとアーキテクチャ構成】
- データの冗長化(万が一のときに備えて、同じものを用意しておくということ)
- アーキテクチャとは:「どのような機能を持ったサーバを用意し、どのようなストレージやネットワーク機器と組み合わせてシステム全体を作り上げるのか」というハードウェアとミドルウェアの構成のこと
- データベースにおけるアーキテクチャの歴史
- スタンドアロン
- クライアント/サーバ
- Web3層
- スタンドアロン→クライアント/サーバ:データベースをネットワークに繋ぐことによって、データベースサーバ1台に対して、複数のユーザがアクセスできるようになった
- クライアント/サーバ→Web3層:クライアントとデータベース層の間に、「Webサーバ層」と「アプリケーション層」が追加されたことによって、セキュリティリスクを減らし、アプリケーション管理のコストを下げている
- 残る問題点
- 可用性が低い:サーバが1台しかないため、障害が起きるとサービスが停止する
- 拡張性に乏しい:サーバが1台しかないため、パフォーマンス改善の手段がない
- 可用性を上げるための腎臓戦略において、クラスタ構成を組んでシステムの稼働率を高めることを「冗長性を確保する」または「冗長化」という
DBサーバの冗長化について
- DBサーバはデータが永続層であるため、WebサーバやAPサーバと比べて冗長化が難しいとされてきた
- DBサーバは大量のデータを永続的に保存する必要があり、かつパフォーマンスも求められる
- 一般的には、サーバだけではなくて外部のストレージをセットで利用する
- DBサーバの冗長化としては、「Active-Active」と「Active-Standby」がある
- 「Active-Active」と「Active-Standby」では、DBサーバ部分は冗長化できても、ストレージ部分は冗長化されていない → レプリケーション
【5章:DBMSを操作する際の基本知識】
コマンド
- MySQLを立ち上げる:brew services start mysql
- rootユーザーとしてログインする:mysql --user=root --password
- MySQLからログアウト:exit;
- MySQLの停止:brew services stop mysql
- インスタンス→ データベース→スキーマ→テーブル
- 3層派 vs 4層派
【6章:SQL文の基本を学ぼう】
コマンド
- 登録してあるデータベース一覧をみる:show databases;
- 利用するデータベースを選択する:use データベース名;
- テーブル一覧表示:show tables;
- テーブルのデータを表示:select * from テーブル名;
- where :条件
- order by :行数
- group by:グループ化
- 記述する順番:select → from → where → group by→ having → order by
- テーブルとビューの違いと利点
【7章】
- トランザクション:「ここからここまでワンセット」な処理のまとまりのこと
- トランザクションはACID特製を持っている