連載
» 2003年12月04日 00時00分 公開

初めてのSQL Server 2000:第1回 データベースの基礎とSQL Server 2000 (2/3)

[デジタルアドバンテージ,著]

SQL Server 2000:高いスケーラビリティを持つデータベース管理システム

 SQL Serverは、マイクロソフトが販売するリレーショナル・データベース管理システム(Relational Database Management System:RDBMS)である。スタンドアロン・レベルの小規模用途から、業務システムや電子商取引、データウェアハウスなどの中規模〜大規模な情報システム向けのバックエンド・データベースとして機能する信頼性や機能性、柔軟性を備えている。原稿執筆時点の最新バージョンはSQL Server 2000である。マイクロソフトは現在、Yukon(=開発コード名)と呼ばれる次世代版のSQL Serverを開発中だ。このYukonでは、.NETテクノロジとの統合が強化され、XMLやWebサービスのネイティブ・サポートなどが追加されるといわれる(Yukonの詳細については、別稿「Insider's Eye:見え始めた「Yukon」の全貌」を参照)。

 SQL Server 2000には、データベース処理を行うエンジン(データベース・エンジン)に加え、RDBMSとしての機能性や信頼性を向上させるためのさまざまなコンポーネント、これらのコンポーネントやデータを効率的に管理するためのツール群などが含まれる。SQL Server 2000には、システムの規模やターゲットに応じていくつかのエディションがある(エディションの詳細については後述)。このうち最上位エディションのSQL Server 2000 Enterprise Editionでは、最大32 CPU、64Gbytesメモリのシステムをサポートするとともに、データウェアハウス向けの拡張データ分析機能などの機能をサポートする。現行の最新版であるSQL Server 2000では、従来版のSQL Server 7.0から比較してXMLを始めとする各種のインターネット標準テクノロジへの対応が強化されるとともに、データベース・アクセス性能を向上させるためのさまざまな機能や、管理機能などが強化された。

 SQL Serverは、データベースの標準的な問い合わせ言語であるSQL(Structured Query Language)を拡張したTransact-SQLと呼ばれる言語をサポートしており、クライアント・アプリケーションは、このTransact-SQLを利用してSQL Serverデータベースに処理要求を送る。またSQL Server 2000で追加されたXMLサポートにより、問い合わせ結果としてXML文書を受け取ることも可能になった。.NET Frameworkを利用する最新の.NETアプリケーションのバックエンド・データベースとしてSQL Server 2000を利用することも容易である。

 高いスケーラビリティとセキュリティが求められるシステムにおいて、情報をDBMSで管理するのはもはや常識だろう。しかしここでは、データベース管理システムや、その代表的な実現手法であるリレーショナル・データベースについて振り返ってみよう。

データベースとは何か?

 あらゆるコンピュータ上のプログラムは、何らかのデータを入力として受け付け、これを処理して、何らかの形式でデータを出力する。これはワードプロセッサや表計算のようなデスクトップ・アプリケーションにせよ、大規模なサーバ・サイド・アプリケーションにせよ同じである。つまりプログラムを実行するには、プログラムがデータを読み書きするためのしくみが必要になる。

 多くのアプリケーションは、独自のデータ・ファイルをハードディスクに保存して、処理結果を保持したり、過去の処理結果を読み出したりできるようにしている(例えばWordなら.DOCファイル、Excelなら.XLSファイルなど)。クライアント・アプリケーションの要求に応じてデータを保存したり、読み出してアプリケーションに返したりするという点では、データベースの役割もこれらのデータ・ファイルに似ている。

 しかしアプリケーションのデータ・ファイルは、通常、そのアプリケーションで使用することを前提として、独自の形式でデータを保存している。この場合、データ・ファイルの形式を知っているのは特定のアプリケーションだけで、ほかのアプリケーションはデータ・ファイルを読むことはできない。つまり極論すれば、同じ情報(データ)であっても、アプリケーションごとに異なるデータ・ファイルが必要になる。

 これに対しデータベースは、データを構造化して保持するとともに、特定のアプリケーションに依存しない汎用的な(標準的な)データ・アクセスのインターフェイスをアプリケーションに提供する。データベースとしてデータを保存しておけば、さまざまなアプリケーションの要求に柔軟にこたえることができる。

アプリケーションのデータ・ファイルとデータベース
アプリケーションのデータ・ファイルでは、特定のアプリケーションに依存した形式でデータが保存されており、ほかのアプリケーションはこれを読むことができない。これに対しデータベースでは、特定アプリケーションに依存しない形式でデータを構造化して保存するとともに、データの標準的なアクセス手段をアプリケーションに対して提供する。

 SQL Server 2000は、伝統的なSQL形式での問い合わせに加え、W3CによるXPath仕様のサブセットをサポートしており、XPath形式でのクエリーにも対応している。XPathは、XML文書からノードを選択するために使用する言語で、これによりXML対応アリケーションからデータベースへの問い合わせが容易になる。

リレーショナル・データベースとは?

 ひと口にデータベース・システムといっても、さまざまな方式がある。このうち現在最も一般的なのがリレーショナル・データベース(RDB:Relational Database)である。RDBでは、データを列と行からなる2次元の表形式(テーブル)として構造化して管理し、複数の表を関係付けることなどにより(リレーション)、アプリケーションのさまざまなデータ要求に柔軟にこたえる。

 例えば下の図は、社員の氏名と所属を記録したテーブル(テーブルA)と社員の年収を記録したテーブル(テーブルB)から、簡単なRDBの操作を行ったケースを示している。

RDB操作の例
RDBでは、列と行からなる2次元の表形式でデータを管理している。アプリケーションは、適当な要求をデータベースに送ることで、特定の条件を満たす行だけを取り出したり、必要な列だけを含むデータを取得したり、複数の表を結合したデータを取得したりできる。

 まず(1)の操作では、テーブルAから社員IDが「0002」の行データだけを取り出している。ここでは説明を簡単にするために、1つの行だけを取り出しているが、もちろん、一定の条件を満たす複数の行を取り出すことも可能である。

 (2)の操作では、テーブルAの一部の列だけを表形式で取り出している。物理的なデータの形式とは関係なく、アプリケーションの処理に必要な列だけからなる表データを得ることができる。

 (3)の操作では、テーブルAとテーブルBという2つの表から、社員IDが一致する行データを組み合わせて、大きな1つの表データを取得している。この場合の社員IDは「外部キー」と呼ばれる。

 重要なことは、元のデータ形式(テーブルAやテーブルB)に依存することなく、アプリケーションが必要なデータを必要な形式で取り出せるということだ。RDBとしてデータを保存しておけば、同じデータから異なるアプリケーションのさまざまなデータ要求にこたえられる。また複雑な業務アプリケーション開発では、開発途中で処理すべきデータが追加される場合がある。この場合でもRDBなら、必要な表データを後から追加すれば、(3)の操作などによって、アプリケーションが必要な形式の表データを取得することが可能である。

 通常、RDBにおけるテーブルは、ひとまとまりとして構成すべきオブジェクト(クラス)に対応して作成される。例えば、社員の情報を含むテーブル、顧客情報を含むテーブル、店舗、在庫などといった単位だ。すでに述べたとおり、RDBでは、これらは列と行からなる2次元の表として構成される。このとき列のデータは、各オブジェクト・クラスの属性に対応する。例えば社員テーブルなら、社員IDと氏名、所属、年収などが列として構成されるだろう。一方の行のデータは、そのテーブル・クラスに属するインスタンスの1つに対応する。同じく社員テーブルなら、社員ID「0001」の社員のインスタンス、社員ID「0002」の社員のインスタンスに対応するといった具合である。

 

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。