じめに

『理論から学ぶデータベース実践入門――リレーショナルモデルによる効率的なSQL』
より転載
2015年1月 奥野 幹也

なぜ今さらリレーショナルモデルについての書籍を読まないといけないんだ? 本書を手に取った方の中に、そう思われる方がいるかもしれません。その理由を一言で表すなら、⁠SQLは難しいから」です。

リレーショナルデータベース(以下RDB)がこの世に登場して長い時が流れましたが、筆者は、いまだに数多くの人がRDBを使いこなせていないと感じています。RDBを使いこなすには、リレーショナルモデルに対する理解が不可欠です。しかし、リレーショナルモデルに対する正しい理解が浸透しているとは言えません。どのようにデータベース(以下DB)を設計すれば良いのか、あるいは、どのようにDBからSQLを使って検索するのかといったことは、リレーショナルモデルを理解しなければわからないのです。ただやみくもに設計したり、SQLを書いたりするだけでは、RDBを使いこなしているとはけっして言えません。

リレーショナルモデルは古くて新しいテーマです。RDBが登場してから何十年も経つにも関わらず、いまだに多くの人に理解されているとは言い難く、そして、リレーショナルモデル自身についても語り尽くされていないように見受けられます。ちまたにあふれている技術書は、SQLについて書かれたものは多いのですが、リレーショナルモデルとは何か、それをどのように実践するかについて書かれた書籍はほとんどありません。しかも、わかりやすくコンパクトにまとまっているものは皆無です。それが本書を世に送り出そうと思った動機です。

リレーショナルモデルがなかなか理解されなかった背景には、コンピュータのリソースやRDB製品が持つ機能に制限があったことが要因として挙げられます。リレーショナルモデルを実践しようと思っても、技術的な壁が立ちはだかっていたのです。しかし、時代は変わりました。ムーアの法則のおかげで、高性能なCPUが安価に手に入れられるようになりました。また、各種RDB製品も開発に切磋琢磨したことにより、機能が拡充されてきました。ようやくリレーショナルモデルを使いこなせるだけの土台が整ってきたとも言えるでしょう。

現在、ほとんどのサーバアプリケーションの開発現場でRDBが使われています。SQLは最も多く使われるプログラミング言語の一つであるのは疑いようのない事実です。しかしながら、SQLは非常に多く利用されているにも関わらず、最近はNoSQLやActiveRecordの台頭などの事情もあり、軽視される傾向にあるように思います。しかし、そのような傾向に反して、上手にSQLを書くスキルはとても大切です。アプリケーション開発が成功するかどうかは、いかにRDBをうまく活用するか、つまり、いかにエレガントにSQLを書くかにかかっていると言っても過言ではありません。

SQLは数十年間もの間、RDBの問い合わせ言語として使われてきた実績があります。なぜこれほどまで長期に渡り現役で在り続けられるのかと言うと、やはりひとえに便利だからではないでしょうか。SQLほど少しの記述で多くの処理をコンピュータに行わせることのできる強力な言語は、ほかにないように思います。そのようにとても便利なSQLですが、その強力さ故に、使い方を誤るととんでもなく無駄な仕事をしてしまうことになりかねません。使い方を間違えると、しばしば複雑で非効率なSQL文を書いてしまいます。いわゆる、⁠スパゲティコード」ならぬ「スパゲティSQL」のできあがりです。

アプリケーションが大規模になるにつれ、パフォーマンスがますます重視されるようになりました。スパゲティSQLはパフォーマンスにとって天敵です。効率が悪ければ当然そのSQL自身のレスポンスは低下し、その負荷によってシステム全体のスループットを低下させることにもつながるでしょう。SQLは便利だけれども、その分使い方を間違ったときの影響も大きいという危うい側面も備えているのです。

本書は、RDB初心者のための入門書ではありません。DBアプリケーションを開発したことのある経験者を対象にしています。すでに基本的なSQL文の意味を理解している人が、より深くSQLについての見識を深めるための書籍を目指しています。そして、少しでも多くの人がRDBを正しく使わないことで引き起こされる悲劇から逃れられることを目的としています。

テーマは、SQLとリレーショナル(関係)モデルから始まり、DB設計やアプリケーション開発に至るまで、理論と実践を併記して解説します。SQLを改めて勉強し直したいと考えている、またはリレーショナルモデルについてよく知らないといった中級者が主なターゲットです。RDBについての一般的な内容がテーマであり、特定の製品についての解説は行いません。また、本書ではSQLの詳細な文法については触れません。すでに読者のみなさんがある程度SQLについて理解しているという前提のうえで話を進めます。SQLの文法を詳しく知りたい場合は、ほかの書籍をあたってください。

さあ、今こそRDBを使いこなせるようになるときです! 本書を読み終えたとき、きっとRDBについての見方がこれまでと違って見えるでしょう。

奥野幹也(おくのみきや)

栃木県在住のギーク。フリー(自由な)ソフトウェアの普及をライフワークとしている。KDEを愛用。仕事ではMySQLのサポートに従事。著書に『エキスパートのためのMySQL[運用+管理]トラブルシューティングガイド』『MySQL Cluster構築・運用バイブル』(ともに技術評論社)がある。
Blog:漢(オトコ)のコンピュータ道