DB運用しないが知識は欲しいエンジニアには「データベース技術入門」がオススメ

総評

データベースについて広く浅く上手にまとまった本だった。

より深く解説された本は沢山あるが、7章で言及されているPCI-Express SSDはここ1・2年で出てきた技術なので、そのような定番本では扱われていない。データベースを囲む今日的な話題が網羅的に扱われている点はとてもよいと思う。

全エンジニア必携とは言わないが、これから初めてデータベースに触る人や、アプリケーションエンジニアという立場を踏まえてデータベースについて(深入りし過ぎずに)の知識を仕入れたいという人にはオススメしたい。

タイトルに反して実践的ではないので、MySQLでの運用についての実践的なノウハウを学びたい場合はエキスパートのためのMySQL[運用+管理]トラブルシューティングガイなどをあたるといいだろう。

個人的に読んでためになったのは5章、7章、11章と12章。以下にオススメポイントを書く。

1〜4章

情報系学部のデータベースの授業で学ぶような内容なので、特に真新しさは感じなかったが、逆に言えば系統立てられた勉強をしたことの無い人が読むことでデータベースに入門するには適した内容だろう。

5章 可用性とデータの複製

個人で運営する程度のサービスではわざわざデータベースを冗長構成にすることは滅多にないし、逆にそのような冗長化を行うほどの規模のサービスの開発になると開発者の役割がわかれるため、データベース障害などに直接触れたことがないのが一般的なアプリケーションエンジニアなのではないだろうか。

本章ではデータベースで生じる障害の特徴、レプリケーションの種類、障害からの復旧についての一般化された話題が網羅的に扱われているので、前述のようなアプリケーションエンジニアの人が知識を仕入れるのに良い。

7章 ストレージ技術の変遷とデータベースへの影響

HDDからSSDへストレージが変化することでランダムリードの速度が飛躍的に高まる。このような技術の向上によりデータベースの性能も向上するのは誰にでも分かることだが、それに伴って今までは問題にならなかった箇所がボトルネックとなる可能性が生じる。特に近年はSATA SSDより更に高速なPCI-Express SSDが登場してきており、このような今日的なストレージを背景として置いたデータベースの解説は数が少ないので貴重だ。

技術的なトレンドに基づいた今後のデータベースに求められる機能の予測などは純粋に知識として知っておいて損のない内容だろう。

11章 データベース技術の現在と未来

MySQLPostgreSQLに代表されるRDBMSと、近年注目を集めているMongoDBやHBaseに代表されるNoSQLの技術的な違いについて。NoSQLが出現するに至った技術的な背景やNoSQLのデメリット、NoSQLの特性と使い所などなど。

12章 ビッグデータ時代のデータベース設計

実際の業務でのデータベース選別などについての話がある。一般的に大規模なデータ程分散化が容易なNoSQL型データベースの方が適していると言われることが多いが

筆者は1,000台を越えるMySQLサーバを用いたサービスでの運用経験がありますが、こうした環境ではMySQLを自身を持って勧めることができます。

一方、10台程度の小規模な環境で新規にサービスを作る場合は、MongoDBやHBaseなどの新興のNoSQLにも優位性があります。(P.265)

という下りは「大規模データならNoSQL」と短絡的に結びつけてしまっている人には一読の価値があるだろう。

また「12章4節データ量増加対策と高速化手法」では更新処理が頻発するデータベースに対してINSERT・DELETE・UPDATEの3つの更新SQLに対してそれぞれが頻発する状況でのチューニングのアプローチについて解説されており、大規模運営をしてきた著者ならではのもので面白かった。