新人エンジニアのための データベースのしくみと運用がわかる本を読んだ

こんにちは!kossyです!


着々と地銀の統合が決まってますねー。
金利の低下で経営環境も悪化しているようですし、
今後もどんどん統合が決まっていくのではないでしょうか。
統合と言っても、ホールディングス化して傘下に旧銀行をそのまま置いておくだけではあまりメリットがない気もしますが、、、
headlines.yahoo.co.jp





さて、今回は、新人エンジニアのための データベースのしくみと運用がわかる本という本を途中まで読んだので、
ひとまず要約したのを書き出してみます。

1章 データとDB

・データとは?
「人が扱いやすいように表現した基礎となる事実」

・情報とは?
「データをある目的をもって収集したもの」

・データベース(狭義)とは?
「データを管理・保守するための仕組みが備わっているシステム、
もしくはそのシステムに格納されているデータの集まり」

[日常的に使用しているDBの例]
・検索サービス
= Webページのデータが格納
・ECサービス
= 購入履歴、商品情報等が格納
SNS
= ユーザー情報、つぶやき、いいね等が格納

[DBサーバーの役割]
一般的に、DBに格納するデータは、より信頼性の高いサーバーに保存する。このサーバーをDBサーバーという。
DBサーバーは、処理速度の低下やシステムの遮断などが起こると、サーバーを利用している全てのアプリに
影響が及ぶので、故障しにくく、高スペックなものを用意しなければならない。

[RASIS]または[RAS]
コンピューターの総合的な評価を表す指標。以下の5つの英単語の頭文字をつなげたもの。
R eliability 信頼性 コンピューター本体の稼働率
A vailavility 可用性 サービスの稼働率
S eviceavility 保守性 システム保守のしやすさ
I ntegrity 保全性 データが正しいこと
S ecurity 機密性 データが安全であること


☆コンピューターの稼働率の計算
[コンピューターの稼働率] 故障までの時間 / (故障までの時間 + 復旧までの時間)



[DBの仕組み]
・データモデリングとは
現実社会のデータをPC上で扱えるように加工すること
・データモデル
データモデリングによって置き換えられたデータのこと

[概念データモデルと論理データモデル]
・概念データモデルとは
現実社会の構造をデータ化して記述したもの。代表的な方法にER(Entity, Relationship)図がある。
Entity:物・実体 Relationship:イベント・関連
Relationshipは、一対一、一対多、多対多で実体と実体を結びつける。

・論理データモデルとは
概念データモデルによって表現された現実社会を、よりPCに近い形で表現したもの。いくつか種類がある。

1. 階層型データモデル
データ構造を樹形図のように表したもの。必要なデータにアクセスするルートが1つしかないのが問題点。
データの冗長化が起こりやすく、データ構造に変化があれば併せてアプリの仕様も変えなければならない。

2. ネットワーク型データモデル
データの構造を網の目のように表したもの。階層型と比べルートは複数あるが、必要なデータにアクセスするルートを
アプリ側に実装する必要があるため、データの構造を容易に変更できない。

3. リレーショナル型データモデル
データの構造を2次元の表で表したもの。現在主流のデータモデル。
表のことを「テーブル」といい、列のことを「フィールド」、行のことを「レコード」という。
データ構造は単純でわかりやすく、アプリの変更も容易。

4. オブジェクト型DB
オブジェクト指向プログラミングにおけるオブジェクトの概念を取り入れたDB。
オブジェクト指向はソフトウェア開発の手法の一つで、
プログラムを処理の手順(手続き)ではなく、処理対象(オブジェクト)に着目する考え方。
オブジェクト型DBは、データとメソッドをひとまとめにしたオブジェクトをDBに格納する。
そのため、オブジェクト指向プログラミング言語と相性がよく、それらによって開発された
アプリとオブジェクトを共有することが可能になる。

5. XMLDB
XMLとはHTMLの後継として開発された言語。HTMLが予め用意されたタグを用いるのに対し、XMLは独自にタグを定義できる。
XMLDBではXML文書をそのままの形で使えるため、柔軟で拡張性に富んだDB設計が可能。

[スキーマとは]
DB構造を意味し、
・概念スキーマ
・外部スキーマ
・内部スキーマ
の3つに分けることができる。

・概念スキーマとは
DBに管理される対象を定義する。リレーショナル型DBを例にすると、テーブルが概念スキーマに該当する。

・外部スキーマとは
DBの利用者が必要とする対象を定義する。リレーショナル型DBを例にすると、Viewが外部スキーマに該当する。

・内部スキーマとは
データの物理的な格納方法を定義する。HDなどの記憶媒体に物理的に書き込むための構造であり、
ファイルサイズやデータ配置などが内部スキーマに該当する。

なお、概念スキーマのことを「スキーマ」、外部スキーマのことを「サブスキーマ」、
内部スキーマのことを「記憶スキーマ」と呼ぶこともある。

[DB管理システムのしくみと種類]
一般的に以下のシステムがある
・データの整合性を保持する
・データの機密性を保持する
・複数のユーザーからの同時アクセスを制御する
・障害が起きた後でもデータを復旧することができる
・容易にデータを操作することができる

[RDBMSの種類]
オープンソース
MySQL(世界シェア1位)
PostgreSQL(国内シェア1位)

有償
SQL Server
Oracle Database(シェア高)
DB2(メインフレームでは独占状態)

2章 DB運用・管理の基本を知ろう

[DBの保守業務]
= 日々の業務のなかでDBを監視し、保守することを目的としている。

利用権限の管理、DBサーバーに異常な負荷が掛かっていないか、DBが不正に利用されていないかを監視し、
必要に応じて対策を行うのも業務。
また、DBが故障した場合に備えてデータをバックアップし、故障した場合は迅速に予備のDBサーバー
バックアップを復元することで、業務が停滞する時間を最小限に食い止める。

[DBアプリの設計と開発]
DBを利用するアプリのことを、DBアプリという。DBアプリの設計・開発を行う業務は、プログラマーやSEと
呼ばれる職種に分類される。
DBアプリの開発にはSQL言語の習得が必須。

[DBの復旧業務]
DBを復旧するしくみは、
・バックアップ ・ログ(ジャーナル) ・チェックポイント の3つ

☆バックアップ
ある時点におけるDBの状態をコピーしたものをバックアップという。
ハードディスクや外付けHDDなどにファイルとして保存する。
バックアップを復元することをリストアという。

☆ログ(ジャーナル)
データが更新される前に、更新前の内容と更新後の内容、及び処理の内容を記録したものを「ログ」、もしくは、
「ジャーナル」という。

☆チェックポイント
DBとログの内容の整合性が取れている時点のことを「チェックポイント」という。要は、DBのデータは、
「バックアップ」と「ログ」により、障害が発生する直前の「チェックポイント」までデータを復元することが可能。

[ハードディクスの壊れやすさ]
・ディスクの読み書きの頻度が高いものが壊れやすいわけではない
・ディスクドライブの温度が高いほど壊れやすいわけではない(30-40度が一番壊れにくい!)
・仕様経過日数が長くなるほど壊れやすいわけではない

[DBの保管場所]
= 理想はサーバー室を設けてDBサーバーを設置

利点
・出入り口に鍵を設置することで、第三者が侵入しにくくなる = 盗難や破壊の回避
・室内にエアコンを設置することで、気温を一定に保たれる = 異常高温の予防
・耐震ラックを設置することで、耐震補強をしやすい = 振動による落下や故障を防ぐ

[突然の停電に備えるUPS]
= PCの電源が意図せず落ちた場合に備え、UPS(無停電装置)の設置が望まれる

[ユーザー管理と権限]
権限を設定することでユーザーによってDB操作の制限をかける。
= 機密情報を守るため

[DBサーバーの稼働状況を監視]
PING監視
・ポート監視

PING監視
定期的にWebサーバーに対し、TCP/IP通信が可能かどうかを調査するためのPINGコマンドを使用し、
そのレスポンスを調査する監視方法。
CUIで「PING URL」と入力すると、
ping統計やラウンドトリップの概算時間がレスポンスとして返される。
Webサーバーが正常なサービスを提供していない場合は、
「要求がタイムアウトしました」というメッセージを返されることがある。

☆ポート監視
Webサーバーが稼働中であっても、サービスが停止していることもある。その場合はPING監視だけでは
バーしきれないので、ポート毎に通信の状態を調査する必要がある。
ポート監視にはポート番号を用いる。0-1023がよく使われるポート番号。
指定したポート番号と通信できない場合、不具合が発生しているとみなす。

[DBのセキュリティに対する脅威]
・物理的脅威
・技術的脅威
・人為的脅威 <= 常日頃から注意!!

[ソーシャルエンジニアリング]
= 人間の心理的な隙をつくことで機密情報を盗み出す手法

例1: パスワードを入力している様子を後ろから見る
例2: 警察や銀行員を名乗り、キャッシュカードのパスワードを聞き出す
例3: 他人のモニターに貼付されているIDとパスワードを記憶する

DB管理者は常に高いセキュリティ意識を!!!

[マルウェアの種類]
マルウェア: コンピューターに被害を及ぼすソフトウェアの総称


・ワーム
インターネット等を経由して拡散する性質を持ったマルウェア。ワーム自体は独立したプログラムで、宿主を必要としない点で、
狭義のPCウィルスとは区別される。

キーロガー
キーボードから入力されたキー操作を記録し、パスワード等を盗むマルウェア

トロイの木馬
利用者にとって有益なプログラムと抱き合わせで付随するマルウェア

ランサムウェア
身代金要求型マルウェアと呼ばれており、PC上のファイルを勝手に暗号化し、その暗号を解除する代わりに、金銭を要求する。

[マルウェア対策]
・拡張子がEXE、VBS、JS、BATのファイルは開かないようにする
・サポート切れOSは絶対に使わない

3章 リレーショナル型DBの基本を知ろう

[データ型とは]
テーブルを作成する際、格納できるデータを予め指定しておく必要がある。
フィールドに入れられるデータ型を指定することで、データ処理のミスを減らすことができる。
・文字列型 CHAR型(固定長文字列)、VARCHAR型(可変長文字列)
・数値型 INTEGER型
・日付型 DATE型、DATETIME型

[主キーと外部キー]
RDBの特徴は、その名の通り、あるテーブルのレコードを他のテーブルのレコードと関連付けできるところにある。
あるテーブルのレコードと他のテーブルのレコードを関連付けるには、
テーブルの中でそのレコードの唯一の存在にするためのフィールドと関連付ける必要がある。
テーブルのレコードを1件に絞り込むためのカギとなるフィールドのことを「主キー」、
または「プライマリーキー」という。他のテーブルと関連付けするためのカギとなるフィールドを外部キーという。

4章 SQLの基本

SQLはデータベース(以下DB)操作のためのクエリ言語(非手続き型言語)
ANSI (American National Standars Institute)によって標準化されている
= DBの種類が変わったからといって学び直す必要なし

基本的な命令
・SELECT(データ取得)
・INSERT(データ追加)
・UPDATE(データ更新)
・DELETE(データ削除)
= パズルを解く感覚と類似

処理の種類
・データ操作言語(DML) 基本的な命令をDBに対して使う(仕様頻度高)
・データ定義言語(DDL) テーブルの作成、フィールドのデータ型の変更
・データ制御言語(DCL) ユーザーの作成、権限の設定

基本構文
SELECT カラム名(*で全てのデータを取得)
FROM テーブル名
;(セミコロン)

射影演算、選択演算、集計関数、NULL、等結合、外部結合、左外部結合、右外部結合
交差結合、UNION ALL演算