三流エンジニアの落書き帳

さあ、今日も未知という扉を開けてみよう

『おうちで学べるデータベースのきほん』を読みました

コロナウィルスの影響を受けてとうとう弊社も在宅勤務となりました。

出勤や無駄な会議がなくなったり、仕事中に割り込みがほぼ無くなるためものすごく快適に過ごしています。 花粉症の僕にとっては出勤しなくてよいというのは非常にありがたいです。

さて、本題通り今さらながらミックさん、木村さん共著の『おうちで学べるデータベースのきほん』を読み終わったので感想など書いてみようと思います。

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

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

本書の内容

Chapter01 データベースって何だろう
Chapter02 リレーショナルデータベースって何だろう
Chapter03 データベースにまつわるお金の話
Chapter04 データベースとアーキテクチャ構成
Chapter05 DBMSを操作する際の基本知識
Chapter06 SQL文の基本を学ぼう
Chapter07 トランザクションと同時実行制御
Chapter08 テーブル設計の基礎
Chapter09 バックアップとリカバリ
Appendix パフォーマンスを考えよう

本書はおうちで学べるシリーズのデータベース編です。

データベースについて全くの初学者でも分かるように非常に丁寧にデータベースについてその基礎が書いてあります。

それなりにページ数は多いのですが1つひとつの章がキレイにまとまっているので4〜5時間ほどでサクッと読めました。 全くの初学者でも10時間あれば読める内容ではないかと思っています。

注意点としてあくまで本書は入門者なのでこの本を読んだだけではデータベースをうまく使えるわけではありませんが、きっかけとしては良い書籍だと思います。

おうちで学べるシリーズらしく、自分の手で動かしてみる箇所も多いので「とりあえず動かしてみたい」といった人にも最適だと思います。 なお本書の実習で利用されるDBMSMySQLです:)

各章の内容

Chapter01

データベースとはそもそも何なのかというテーマから始まります。

そこからデータベースがどのように始まり、データベースが持つ基本機能の解説がされています。

Chapter02

この章ではリレーショナルデータベースとは何かから始まり、SQLや用語の説明がされています。

ただし注意点として本章で説明されているリレーションという言葉は正確には誤りです。

リレーショナルモデルではリレーション≒テーブルです。(リレーションをテーブルとテーブルの関係と説明している記述をよく見かけますが、それは典型的な誤りです) テーブルはよく2次元表と表現されますが、それも典型的な誤りです。 リレーションの次元数は属性の数nに等しくなります。例えば社員番号、名前、給料といった3つの属性からなるリレーションは3次元となります。

それではなぜ本来n次元のものを2次元と表現するのかというと、そちらのほうが圧倒的に分かりやすいからではないかと思います。(n次元にプロットされた点を想像するのは難しいですよね?)

注釈からも分かるように、おそらく初心者に分かりやすく説明するために、あえて2次元表であるといった説明をしているのだと理解していますが、このような初学者向けの書籍でこそテーブル≠2次元表であることを明確に説明していただきたいものでした。

Chapter03

入門書ではめずらしくコストの話で、イニシャルコストとランニングコストについて解説されています。

システムは無から生まれることはありません。必ず予算つまりお金が必要となります。コストを考えないと本当の意味で最適なシステムを作ることはできません。「若い頃から常にコストについて考えてほしい」本章からはそのような著者からのメッセージを感じ取れます。

Chapter04

データベースのアーキテクチャについて、主に冗長化の仕組みや構成について解説がされています。

データベースに限らず冗長化という考え方は非常に大切です。

Chapter05

この章では実際にデータベースへのログインやリレーショナルデータベースの階層について解説されています。

Chapter06

SQLについて基本的なコマンドについて解説されています。

他の章と比較して実践よりの内容です。

結合やViewについても一通り説明されていますが、本格的な内容は他の書籍を当たると良いでしょう。

Chapter07

DBMSを扱う上で避けることのできないトランザクションについて解説されています。

ACIDや分離レベルについて入門書では十分な内容が記述されています。

Chapter08

テーブル設計について正規化・ER図について解説されています。

正規化については第3正規化まで記述されていますが、入門書ということでそこまで厳密な説明はされていません。また(情報)無損失分解について触れていないのが少し残念ではあります。

Chapter09

バックアップとリカバリについて解説されています。

バックアップの各方式(ホットバックアップやコールドバックアップ、論理/物理バックアップ、フルバックアップ/増分/差分バックアップ)についてそれぞれのメリット・デメリットについて簡単に説明されています。

バックアップの基本的な概念についても説明されているので、今後運用・保守を行う方は一読しておくと良いと思います。

Appendix

最後はパフォーマンスのお話です。

パフォーマンスを測る2つの指標として「スループット」と「レスポンスタイム」の説明、データベースがボトルネックになりやすい理由などについて説明されています。

また、MySQLをベースに実行計画やオプティマイザ、インデックスの構造についても簡単に説明されています。1つ注意としてこの章では実際にどのようにパフォーマンスを上げればいいか、ボトルネックをどのように見つければいいかについては説明されていません。具体的なパフォーマンスチューニングの方法は各DBMSのリファレンスや書籍をあたりましょう。

本書を読み終わったあとに

本書の最後にミックさん、木村さんがそれぞれ本書を読み終わったあとにどのような書籍を読めばいいのかいくつかピックアップされていますので確認してみるのが良いでしょう。

個人的におすすめの書籍を下記に挙げます。

SQLアンチパターン

SQLアンチパターン

  • 作者:Bill Karwin
  • 発売日: 2013/01/26
  • メディア: 大型本

いわゆる「べからず集」というやつです。 初学者がいきなり読んでも意味がわからないので、1〜2年ほど実際にデータベースに触れてみた後に読むとよろしいかと思います。 特定のDBMSに依存しないのでどのような方でも読める内容となっています。

厳しい内容ではありますがリレーショナルデータベースをしっかり理解したいのであれば一読されることをおすすめします。 僕も現在読んでいる途中ですが、いろいろと驚かされる内容たっぷりで読み応えがあります。

上記のデータベース実践講義がちょっと難しいと思われた方はまずはこちらを読むのがよろしいかと思います。 内容は比較的理論寄りで難しいですが、一読の価値はあります。

以下MySQLに関する書籍です。

基礎からのMySQL 第3版 (基礎からシリーズ)

基礎からのMySQL 第3版 (基礎からシリーズ)

MySQLの入門書です。 実際にMySQLをインストールして実際にテーブルに対して操作をしていきます。実戦形式で手を動かして操作を覚えることができます。

MySQLに携わるのであればぜひ読んでいただきたい書籍の1つです。 知識のアップデートのお供に。

ザ・鈍器。

少し古い書籍ではありますが、MySQLを理解するためのエッセンスが多く含まれています。

感想

本書は初学者がデータベースの基礎を学ぶのに非常に適している書籍です。 データベース以外の技術にも通ずる内容(コストや冗長化など)もありますので、(僕も含めて)若手エンジニアの方にも最適な書籍ではないでしょうか。

僕は曲がりなりにもデータベースに関する仕事に就いているため、本書の内容のほとんどは既知の知識として持っていましたが、改めて読んでみるとうまい表現の仕方や単純に知らなかった知識を得ることができ非常にためになりました。