オブジェクト指向、Javaを取り入れた
新しい業界標準「SQL99」詳細解説
第一章 高度なデータ操作(1)
第一章では、SQL99の概要を説明するとともに、再帰SQLやOLAPなど、新しく可能になった高度なデータ操作を中心に紹介する。SQL99の背景と特徴
1999年5月に島根県松江市の「くにびきメッセ」において、データベース分野の標準化についての重要な国際会議が、情報処理学会の主催で開かれた。
この会議では、情報処理分野で最も成功した国際標準(International Standard)の1つと言ってよいSQL言語が、SQL92版の制定から約7年の歳月をかけて大幅に改訂され、3世代目にあたる次期SQL標準の主要部分(表2を参照)を最終的に国際標準とすることが確認されたのである。新しいSQL標準はそれまでコード名「SQL3」と呼ばれていたが、1999年度版を意味する「SQL99」として1999年内にもISO(国際標準化機構)/IEC(国際電気標準会議)によって制定される見込みである。ISOのSQL標準は、同じ内容で米国のANSI SQLとして制定され、我が国でも同様にJIS SQLとして制定されることになっている。
図1 SQL99の発展と範囲 |
これまでのSQL92は、リレーショナルデータベースのための完全な言語になることを目指した大変意欲的な言語であった(表1)。
SQL99はSQL92を基盤とし、さらに機能拡張を行うべく、米国や日本などのDBMS製品を開発・販売している主要国が中心になって標準化作業が進められた。現時点では、すでにオブジェクト指向がプログラミング言語の分野で大きな成功を収めていたことと、リレーショナルデータベースを批判する立場のオブジェクト指向データベースの研究が盛んであったことが背景になって、リレーショナル機能の拡張だけでなく、オブジェクト指向の考え方をSQLに取りいれる努力と検討が重ねられた。
仕様開発を実際に行っている標準化委員会(実際、標準化委員会は、リレーショナルの枠にとらわれないように「データベース言語」委員会と名づけられていた)の委員は、米国や日本などの主要なDBMS製品のベンダーから送り込まれているのだが、互いに日々、開発や販売競争にしのぎを削っているだけに利害の衝突が激しい。リレーショナルデータベースのために開発したはずのSQLに、表現能力に優れているが単純で簡潔なSQLの良さを生かしながらどのようにオブジェクト指向を導入するのかについて繰り返し仕様案が検討された。仕様の確定には困難を極め、長い議論と調整を経て、ようやくオブジェクトリレーショナル技術として仕様が具体化し、各国およびベンダの間で合意に到達したのである(結果として、SQL99はSQL92をページ数で大幅に上回る規格になる見込みである)。
国際規格 制定年度 |
国際標準規格 | ページ数 |
1987年 |
SQL86
|
|
1989年 |
SQL89
|
120 |
1992年 |
SQL92
|
622 |
1995年 |
SQL/CLI(コールレベルインタフェース)
|
200 |
1996年 |
SQL/PSM(永続格納モジュール)
|
250 |
1999年〜2000年 | SQL99 | >1700 |
CLI: Call Level Interface
PSM : Persistent Stored Module
SQL99の主な機能強化
SQL99は、時代の要請にしたがって次のような狙いで機能を強化している。
- リレーショナルモデルの表現能力をより一層高める
- オブジェクト指向の考え方を取り入れたオブジェクトリレーショナル技術を具体化する
- インターネットやJavaの普及に対応したクライアント/サーバ機能を機能強化する
- SQL/MMに代表される、SQL99を基盤としたアプリケーションパッケージの開発を促進する
上記の目標を実現するための、主な機能の概要を説明していこう。
■スキーマ定義の新機能
- 新しい組込みデータ型
真理値(BOOLEAN)型と配列(ARRAY)型が追加された。 - LOB型
長大なマルチメディアデータやテキストデータを格納できるLOB型を追加した。プログラムの中で入出力域に収まらないような大きなLOBデータを扱うためのロケータを提供する。 - ユーザー定義型
標準で提供される組込みデータ型をもとにしてユーザーが自由なデータ型を定義できる。 - 構造型
ユーザー定義型の機能を使って、構造をもった型を定義できる。構造型を1つの行として扱う行型と、その行を直接参照する参照型とがある。構造型は、オブジェクト指向でいうところのオブジェクトとして扱うことができ、オブジェクトの中に別のオブジェクトを格納するような複合オブジェクトも定義可能である。 - ユーザー定義関数
ユーザー定義の型に付随して、SQL文中に呼び出すことができる関数を定義できる。また構造型にはメソッドを定義できる。そのメソッド中の内部変数などの実装方法は隠蔽されてカプセル化されている。 - スーパーテーブルとサブテーブル(上位表と副表)
構造型で定義した表を上位表として、副表を定義することができる。副表は、上位表のすべての型とメソッドを継承する。必要であれば、上位表のメソッドを自分のメソッドでオーバーライドもできる。
■データ操作と演算子の新機能
- 共通表式 WITH句
SELECT文に現れるほかのSELECT文を、WITH句に記述することによって簡潔な表現ができる。 - 再帰SQL
部品構成表のように深さが不定な階層構造にあるデータを1個のSQL文で取り出すことができる。 - OLAP
多次元データベースを対象にしたドリルダウンやロールアップなど、OLAPの基本的な分析処理を効率的に行うための集約機能を提供する。 - ユニオン・結合経由の更新
ユニオン(UNION)や結合(JOIN)を含むビュー(視点)に対して、更新操作が可能になった。 - カーソル操作の機能強化
カーソルがオープン中にコミット文を発行してもカーソルの位置づけを保持できるので、カーソルを再オープンすることなくFETCH文を継続することができる。
■整合性の新機能
- トリガ
表に対する更新操作を要求したことを引き金(トリガ)として、あらかじめ定義しておいた別の表を更新するようなSQL文やSQLルーチンを自動的に起動させることができる。その表に付随したビジネスロジックをDBMSに格納する(カプセル化)ことによって、データとプログラムの独立性を高めることができる。
■セキュリティ(機密保護)の新機能
- ユーザー定義の役割(ロール)
ユーザーや管理者の仕事の役割に応じた権限の集まりに役割名を付けられるので、権限の付与と剥奪の操作性が向上する。
■トランザクション管理の新機能
- セーブポイント
更新トランザクションがその処理中にセーブポイントとして宣言した任意の時点までロールバックすることができる。
■クライアント/サーバの新機能
- ストアドプロシージャ
PSM(永続格納プロシージャ)規格によってすでに可能となっている。ストアドプロシージャそのものは、クライアント/サーバ環境での通信メッセージを軽減することによるクライアント性能の向上技術として実績がある。標準に関して重要なのは、変数の宣言やIF文やLOOP文などの手続き文をサポートするので、既存のプログラミング言語に依存しない、プラットフォームにも依存しないプロシージャを開発でき、CALL文で呼び出すことができるようになった点にある。これらの構文はユーザー定義関数やメソッドの中でも使用することができる。 - SQLJ
Javaプログラムに埋込むための静的SQLをサポートする。すでに業界標準になりつつあるSQLJを国際標準化しようとしている。従来のCLIやODBCが要求するSQL文は、サーバで動的SQLとして実行されるのでサーバの負荷が大きいという問題があったが、SQLJはサーバの負荷が小さい静的SQLとして実行できるので、大量のユーザーの処理やトランザクション処理に適している。
以下では、こうしたSQL99に追加された新しい機能について、それぞれ詳しく紹介していくことにしよう。SQL99の構文がどうなったか、というよりも、新しいSQL99の機能によって、どのようなことができるようになるのかに焦点を絞って説明を進めて行きたいと思う。
表2 SQL99とSQL/MMの標準化予定
規格
|
標準化時期(見込み)
|
SQLフレームワーク
|
1999年12月 |
SQLファウンデーション (備考1)
|
1999年12月 |
SQL/CLI
|
2000年 |
SQL/PSM
|
1999年12月 |
SQL言語バインディング
|
1999年12月 |
SQL/MED(外部データ管理)
|
2000年 |
SQL/OLB(オブジェクト言語バインディング)
|
2000年 |
SQL/MM(マルチメディア)
|
2000年 |
備考1:SQLファウンデーションだけで約900ページある。SQLフレームワーク、SQL/CLI, SQL/PSM、SQL言語バインディング,SQL/MED,SQL/OLBまでを加えると1700ページを超える見込みである。
とびら 新しい業界標準「SQL99」詳細解説 SQL99の背景と特徴 |
第二章 柔軟さを増したデータ構造
ユーザー定義可能な新しいデータ |
第三章 SQLJと今後の標準化動向 クライアント/サーバ環境のための機能強化
|
「Master of IP Network総合インデックス」 |
- 完全HTTPS化のメリットと極意を大規模Webサービス――ピクシブ、クックパッド、ヤフーの事例から探る (2017/7/13)
2017年6月21日、ピクシブのオフィスで、同社主催の「大規模HTTPS導入Night」が開催された。大規模Webサービスで完全HTTPS化を行うに当たっての技術的、および非技術的な悩みや成果をテーマに、ヤフー、クックパッド、ピクシブの3社が、それぞれの事例について語り合った - ソラコムは、あなたの気が付かないうちに、少しずつ「次」へ進んでいる (2017/7/6)
ソラコムは、「トランスポート技術への非依存」度を高めている。当初はIoT用格安SIMというイメージもあったが、徐々に脱皮しようとしている。パブリッククラウドと同様、付加サービスでユーザーをつかんでいるからだ - Cisco SystemsのIntent-based Networkingは、どうネットワークエンジニアの仕事を変えるか (2017/7/4)
Cisco Systemsは2017年6月、同社イベントCisco Live 2017で、「THE NETWORK. INTUITIVE.」あるいは「Intent-based Networking」といった言葉を使い、ネットワークの構築・運用、そしてネットワークエンジニアの仕事を変えていくと説明した。これはどういうことなのだろうか - ifconfig 〜(IP)ネットワーク環境の確認/設定を行う (2017/7/3)
ifconfigは、LinuxやmacOSなど、主にUNIX系OSで用いるネットワーク環境の状態確認、設定のためのコマンドだ。IPアドレスやサブネットマスク、ブロードキャストアドレスなどの基本的な設定ができる他、イーサネットフレームの最大転送サイズ(MTU)の変更や、VLAN疑似デバイスの作成も可能だ。
|
|