Database Watch 5月版 Page 2/2

春はイベントが盛りだくさん、人脈づくりに励もう


加山恵美
2007/5/15

オープンソースRDBMSのイベントは6月に

 イベントはまだありますよ。次はオープンソースのデータベースに関するイベント「オープンソースカンファレンス 2007 .DB」です。日本のオープンソースRDBMSご三家のユーザー会がそろって参加しています。当日はFirebird日本ユーザー会日本MySQLユーザ会日本PostgreSQLユーザ会から、専門家が登場し各データベースの最新動向とその技術を解説する予定です。オープンソースのデータベースの最新情報を一気に収集できます。

PostgreSQLはセキュリティパッチの新版をリリース

 オープンソースの話題が出たところでPostgreSQLの話題を1つ。PostgreSQLは4月23日に8.2.4、8.1.9、8.0.13、7.4.17、7.3.19をリリースしました。主要なバージョンをほぼ網羅する形で新版が提供されています。これにはそれぞれのバージョンの細かいバグフィックスだけではなく、セキュリティ対策となる修正が含まれています。

 具体的にはSECURITY DEFINER関数を利用した脆弱性への対策となります。やや前になりますが、2007年2月14日にPostgreSQLのコアチームはこのSECURITY DEFINER関数に起因する脆弱性についての勧告をアナウンスしました。SECURITY DEFINER関数はユーザー定義関数の作成時に設定できる属性で、UNIXのsetuidに似ています。これを悪用することにより不正に権限を利用されてしまう危険性が指摘されていました。今回のアップデートではこの脆弱性に対応した修正が行われています。

 なお6月5日にはPostgreSQLカンファレンス2007が開催されます。主催側が「この1日でPostgreSQLのすべてが分かる」と発表しているように、講演が豊富に用意されています。

DB2ナイトサークルでSQL入門

 DB2のコミュニティ「Developer Domain」が中心となり運営している勉強会に「Club DB2 ナイト・サークル」があります。仕事帰りにDB2を勉強し、エンジニアの交流を深めるために企画されています。現在は月2回のペースで開催されており、初心者向けから実践的なものまで学べるようになっています。

 3月30日には「第17回 初心者歓迎!DB2 9の使い方-ステップ3【SQL編】」でしたので、足を運んでみました。講師を務めたのは日本IBM ソフトウェア事業部の下佐粉 昭氏です。2時間という短時間でSQLの要旨を初心者に説明するなんて、考えてみればかなり困難な試みでしたが、ばっちり「SQLとは何か?」という基本を熱く解説してくれました。今回はそのときの解説の一部を紹介します。

 まず一般的な知識を得る前に、RDBMSとSQLの関係について覚えておくといいことがあります。もともとリレーショナル・データベースとはエドガー・コッド博士が集合論を基に提唱したものです。そのためSQLも集合論を基にしています。また一般的なプログラム言語は「最初にこれをして、次にあれをして……」というように順を追って処理を行いますが、SQLはこうした逐次的な言語とは違います。SQLは全体に対して欲しい結果を記述するものだそうです。これを知っておくとその後の理解に役立ちます。

最初の山、射影と選択

 SQLには大きく分けて3つの種類があります。

  • データ定義言語:DDL(Data Definition Language)
  • データ操作言語:DML(Data Manipulation Language)
  • データ制御言語:DCL(Data Control Language)

 今回の主題となったのは、この中のDML、特にデータを取り出すSELECTです。データベースとはテーブルにあるデータを使いこなしてナンボの世界です。中には延々とデータを蓄積していく目的のデータベースもありますが、データベースのエンジニアとしてまず把握しておくべきSQLといえばSELECTということになるのでしょう。

 まず「最初の山!」として講師が強調したのは、SELECTの2大機能ともいえる「射影」と「選択」です。射影は列を選択します。データを縦に切り取るというイメージです。一方、選択は行を選択します。こちらはデータを横に切り取るというイメージです。この射影と選択の組み合わせにより、表の任意の部分の集合を作成できます。例えば以下のSQL文では、「社員」テーブルから「性別」列の値が「M」となっている行の「社員名」列を抽出します。

SELECT 社員名 FROM 社員 WHERE 性別='M'


集約関数とグルーピング

 次に覚えておくべきことはグルーピングです。ある集合から複数のグループを作り出すこと、いい換えれば集約することです。グルーピングではGROUP BYをCOUNTやAVGなどの集約関数と併用します。例えば「社員」テーブルから部署ごとの人数を数えるといったような使い方です。

 さらにここで重要になるのがグループを制限するHAVINGです。講師はここを「2つ目の山!」とし、注意を喚起していました。例えば「社員」テーブルから部署IDごとの人数を数え、さらにその中から人数が5人以上いる部署をリストアップするような場合です。以下に例を示します。

(SELECT 文)
SELECT 部署ID, COUNT(*) AS 人数
 FROM 社員
 GROUP BY 部署ID
 HAVING COUNT(*) >= 5

(結果)
部署ID 人数
------ -----------------
02                     7
03                     5

 その後には「NULLには気を付けよう」とNULLを安易に使うといかに危険かという説明や、「初心者をふるい落とす魔のゾーン」として結合(ジョイン)の説明がありました。とても短時間でしたが、とても気合いの入った解説で勉強になりました。

 勉強会が終わると次は懇親会へと突入します。いつも金曜日の夜に開催するので、その後は大抵エンドレスだそうです。DB2コミュニティの隠れた力強さを知ることができます。これからも精力的に開催するそうですので、純粋にデータベースの基礎力をアップするためにも、ぜひ一度は参加してみてはいかがでしょうか。

 ではまた来月、お会いしましょう。

2/2  

 Index
連載 Database Watch 5月版
春はイベントが盛りだくさん、人脈づくりに励もう
  Page 1
・オラクルが統合管理の新版を提供開始
・データベース資格制度で人気のORACLE MASTER
・マイクロソフトのコミュニティイベント開催
Page 2
・オープンソースRDBMSのイベントは6月に
・PostgreSQLはセキュリティパッチの新版をリリース
・DB2ナイトサークルでSQL入門


Database Watch



Database Expert フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Database Expert 記事ランキング

本日月間