この記事を読むのに必要な時間:およそ 1 分
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標準規格での対応状況も記載していますので,今後も多くの場面で活用できます。