データベース アーキテクチャ 入門 研修コースに参加してみた

今回参加した研修コースは、 データベース アーキテクチャ 超入門 です。
先日インターネットで、データベースを使わなければこんなにカンタンに高速に Web アプリを開発できるぞ、という記事がちょっとバズっていましたが、このコースではそもそもデータベースを使うと何がいいんだっけ、というデータベースを使う目的から、データベースの一般的なソフトである RDBMS の機能を紹介いただきました。
トップレベルから解説されたので、RDBMS にどんな機能があるのか、その地図を手に入れるようなコースなので、新人研修以来、データベースから遠ざかっているような方にはとてもオススメです!
では、どんな内容だったのか、レポートします!!
もくじ
コース情報
受講前提 | 一般的なPC操作を行えること |
受講目標 | RDBMSが行っている様々な工夫について全体像のイメージをつかむ |
講師紹介
MySQL、データベース大好きな 坂井 恵 さんが登壇されました。

データベースをこよなく愛する講師。日本 MySQL ユーザ会副代表。
過去の参加レポートでも登場されていますね。

今日は初級者向けのコースですが、初級にとどまらない様々なお話をいただけました。お話ぶりをみると、本当にデータベース愛が溢れています。
今日のコース
- コマンドを覚えるものではありません
- どういった機能が RDBMS にあるのか、それがわかる
- 安全・高速などはトレードオフになっていることがわかる
データベースと RDBMS とは
データベースと DBMS
- データベースそのものはデータの蓄積して管理できること
- DBMS の目的
- 安全に管理し、
- 高速に取り出すことができ、
- 正しいデータを取り出せる
RDBMS のキーワード
コースが終わるころにわかるとよいですね。
加えて、コンピュータの知識が前提として必要です。
- コンピュータはメモリとディスクを使って処理しています
- メモリは揮発、ディスクは不揮発です
- 揮発とは、電源を消すとデータが消えること
- データベースはデータが揮発するとダメなのでディスクを使います
- 一般にディスクは速くないので、データを取り出したり、書き込んだりするのに時間がかかります
- 一方でメモリはディスクより、ずいぶん速いです
RDBMS のしごと ~ 1. 安全? セキュリティ
ひとそれぞれに解釈が変わるけど、データベースの安全とは一般的にこの 2 つを指します。
- データが盗まれたりしない
- データが壊れない
データが盗まれないための機能
- 盗まれないとは?
- 情報が漏洩しない
- 改ざんされない
- そのための機能
- ログイン/アクセス権限の管理をしている
- あとで実際やってみましょう
- 盗聴されないよう通信を暗号化している
- アクセス権限
- 読み
- 書き
- テーブルやデータベースを作る / 消す
- 細かく設定できます
アクセス権限を見てみましょう
- 今日は数ある RDBMS の中でも MySQL を使います
- MySQL でログインして
show databases;
をしてみますmysql> show databases; +--------------------+ | Database | +--------------------+ | SEP1019 | | SEPLUS | | information_schema | +--------------------+ 3 rows in set (0.01 sec)
この結果と、権限が異なる講師と違うデータベースが表示されていることを確認しました。
続いて、権限があるテーブルにデータを書き込みしてみます。
mysql> insert into SAMPLE01
-> VALUES (111, "X", "2018-10-18");
Query OK, 1 row affected (0.02 sec)
追加できました!!
今度はスキーマを変えて権限がないテーブルに書き込みしてみます
mysql> insert into SAMPLE01
-> VALUES (111, "X", "2018-10-18");
ERROR 1142 (42000): INSERT command denied to user 'myuser260'@'localhost' for table 'SAMPLE01'
権限がないよ、というエラーメッセージが表示されました。
なお、ユーザに権限を与えるSQL GRANT
があります。
grant [権限名]
on [スキーマ名].[テーブル名]
to [ユーザ名]
RDBMS のしごと ~2. 正しさ インテグリティ
- 正しさとは?
- 更新した時に壊れない
- 同じ条件で検索・取得したデータは何度実行しても同じ (整合性がある)
- 整合性を保つ機能
- トランザクション
- 例えば、銀行振込の場合
- A さんからB さんに 100 万円振り込む
- (1) A さんの口座から 100 万円ひく
- (2) B さんの口座から 100 万円ふやす
- この (1) と (2) がどちらも終わることが必要
- 何らかの原因で (1) の途中で終わったら、振込処理そのものを止める
- 例えば、銀行振込の場合
- トランザクション
トランザクションを試してみましょう
- TeraTerm を 2 つ立ち上げ、同じデータベースに接続します
- トランザクションをはって、データを追加します
START TRANSACTION INSERT INTO [テーブル名] VALUES ();
- 一方の接続から
SELECT * FROM [テーブル名]
してみます
テーブルの中身が変わっていませんね。
RDBMS のしごと ~3. 高速にする方法 パフォーマンスチューニング
そもそも DBMS を高速にするとは、何を高速にすることでしょうか。
- 大量データから素早くデータを取り出す
- 速く書き込める
- たくさん同時アクセスがあっても速度が遅くなりにくい
素早くデータを取り出す工夫 インデックス
- 辞書で目的の用語を引くときに速いのは索引があるから
- データベースにもインデックス (索引) という工夫がある
- 辞書もあ・か・さ・た・な~の順番で並んでいるので、目的の用語までたどりやすい
- データベースではどの場所に何のデータを格納しているのかを索引として持っている
- この索引をあ・か・さ・た・な~のように、どの列を基準として格納している場所を保存するのか選ぶことができる
- ただし、ユニークな値が入っている列を選ぶことがオススメ
- オンオフ値などのカラムでインデックスを作っても、2 種類しかない索引情報では目的までたどり着きにくい
- 値のバラツキを カーディナリティ といい、オンオフ値はカーディナリティが低い、という
- なぜ、このインデックスが高速化に繋がるのか?
- インデックス用の検索アルゴリズムがあるから
書き込みを速くする工夫
- 前提
- ハードディスク (HDD) は遅い、メモリは速い
- メモリを使おうという工夫
- WAL ( Write Ahead Log ) という仕組みで実現している
- デーブルを探して書き込む、という処理ではなく、ただデータをメモリに書き込む
- データが消えても作業をやり直しできるようWALに残している
- OS のプロセス稼働状況をみながら数秒単位でHDDに書き込みしている
大量の同時アクセスでも速くする工夫
- 前提
- 誰かがトランザクションを始めたら更新がロックされる
- ロックをなるべく小さくする、というのが工夫点
- レコード単位や、テーブル単位でロックを変えたりする
- RDBMS によって異なる
- ロックの典型的な例がデッドロック
- RDBMS が検出してくれる
RDBMS のしごと ~4. 壊れない?? バックアップとレプリケーション
- 前提
- サーバは壊れます
- データが壊れない工夫
- ハードウェアを壊れにくくする
- UPS 非常用電源 を用意する
- RAID を組む 複数台構成にする
- RDBMSの仕組みで壊れにくくする
- クラスタ
- バックアップをとってリストア (復元)
- バックアップをとってリストア (復元)
- レプリケーション
- データをミラーリングしてコピーする
- 結構、最強です
- クラスタ
- ハードウェアを壊れにくくする
ログファイルはまた別に RAID を組んだりして、可用性を担保しています。
その他、MVCC や分離モデルなどを補足で紹介いただいて、このコースは修了しました。
まとめ
このコースでは、データベースとその中でも RDBMS を使う主な 4 つの目的、「安全」「正しさ」「高速」「壊れない」という観点から、RDBMS がどのような機能を持っているのか、解説いただきました。
RDBMS は何のためにあるのかというトップレベルから解説いただいたので、RDBMS の地図のようなものになるものでした。
また坂井さんがこの話題以外にも色々なデータベースにまつわる予備知識や四方山話をされていたので、すでに知っている方には面白いネタが聞けたことと思います。
新人研修以降、データベースから離れてしまったという方には、とてもオススメのコースです!!
label SE カレッジの無料見学、資料請求などお問い合わせはこちらから!!
label SEカレッジを詳しく知りたいという方はこちらから !!

IT専門の定額制研修 月額28,000円 ~/ 1社 で IT研修 制度を導入できます。
年間 670 講座をほぼ毎日開催中!!

SEプラスにしかないコンテンツや、研修サービスの運営情報を発信しています。