これまでも⁠そしてこれからも必要とされるSQL

RDBによるシステム開発ではSQLが必須

従業員情報、顧客情報、勤怠データ、日々の売上など……。1つの企業の中だけでも、管理しなければならないデータは多岐にわたります。これらのデータを保持し、効率的に管理・運用するための仕組みの1つがデータベースシステムです。

データベースには多くの種類がありますが、その中の1つにリレーショナルデータベース(関係データベース:RDB)があります。RDBは、関係モデルというデータモデルに基づくもので、データを表のような形で保持・管理します。一般にデータベースといえば、今もこのRDBを指すことが多いでしょう。Oracle Database、PostgreSQL、MySQL、SQLite、Microsoft SQL ServerなどのRDBMS(リレーショナルデータベース管理システム)があります。

RDBでは、SQLという言語を使いデータを操作します。SQLというシンプルな言語で、目的に応じて複数の表を関連付け、複雑な処理を実現できるメリットは大きく、RDBは広く使われるようになりました。SQLの構文はRDBMSごとに微妙に異なりますが、ANSI/ISOによって標準化された規格があります。RDBを使ったシステムの開発・運用では、SQLの知識は必須です。

大規模分散データ処理の時代にもSQLは使われる

ところが、データベースを取り巻く状況は大きく変わります。取り扱うべき情報量が膨大に、しかもデータの種類も多種多様になっていった結果、これまでのRDBの仕組みでは対応が難しい場面が増えてきたのです。そのため、RDBとは異なる仕組みのデータベースがあらためて注目されるようになりました。こうした、RDBではないデータベースをNoSQL(Not only SQL)といいます。

とくに近年、大規模データをネットワーク上で分散処理する仕組みとの組み合わせ(GoogleのMapReduceとBigTable、ApacheのHadoopとHBaseなど)が脚光を浴びました。

現在は、RDBとNoSQLは適材適所、それぞれの良さを活かせる用途に使われています。

データを構造化して取り扱うことができ、厳密なデータの整合性が必要な場面ではRDBが使われます。一方、膨大な非定型のデータを扱い、高速な処理や処理能力の柔軟な変更が必要とされる場面ではNoSQLが力を発揮します。NoSQLの台頭により、RDBやSQLが不要になったわけではありません。

また、NoSQLという名称は「NoSQLを使えばSQLは不要」という印象を与えるかもしれませんが、決してそんなことはありません。実際、Hadoop上でSQLを利用するためのSQL on Hadoopへの取り組みは活発で、Apacheの分散データ処理基盤であるSparkに搭載されたSpark SQLなどが有名です。Sparkは、バージョン2.0でSQL標準規格(SQL 2003)に対応し、注目を集めました。このように、大規模分散データ処理の時代にあっても、SQLの知識は必要とされます。


本書は、重要なSQLの命令をコンパクトにまとめたリファレンスです。Oracle、MySQLなどの主要なRDBに対応し、RDBごとの構文の違いもしっかり取り上げています。また、SQL標準規格での対応状況も記載していますので、今後も多くの場面で活用できます。