第 1 章 データベースとデータベース管理システム ~ SQL Server 一年生 - データベース基礎編 - ~
NEC
Eラーニング事業部
鈴木 智行
2003 年 4 月 11 日
目次
1. ファイルとデータベースの違い
2. リレーショナルデータベース (Relational DataBase)
3. データベース管理システム (DataBase Management System)
4. 業務用データベースとデータウェアハウス (DWH)
5. SQL Server 2000
1. ファイルとデータベースの違い
コンピュータを扱っている私たちは通常、データを繰り返し使用したい場合にファイルとして保存するケースが多々あります。例えば皆さんは Microsoft Word で作成した社員の住所録データを社員住所.doc というファイル名をつけて保存している場合もあると思います。しかしその社員住所録データを Microsoft Excel で扱うことを考えてみてください。社員住所.doc というファイルを Microsoft Excel で開こうと思っても、開くことはできません (画面 1-1)。
画面 1-1 Microsoft Word で作成したファイルは Microsoft Excel で開けない
したがって、たとえ同じデータを使用したくても Microsoft Excel で扱うことができる形式 (例えば社員住所.xls) でファイルを作成して利用しなければいけません。
これは業務システムでも同じことが言えます。例えば商品の情報が検索できる「商品検索 AP」というアプリケーションがあり、そのアプリケーションが扱うことができる商品データがファイルに存在すると仮定します。その場合「商品検索 AP」を使って商品番号 00002 の商品名を検索することは簡単にできるでしょう (図 1-2)。
図 1-2 「商品検索 AP 」から商品名は検索できる
ただし他のアプリケーションとして「商品売上計算 AP」があった場合、商品データファイル内に「商品売上計算 AP」が利用できるデータがあったとしても「00002 が商品番号である」や「M850 が種類と定価である」といったデータの定義情報はあくまでも「商品検索 AP」がもっているためデータを理解することができず、「商品売上計算 AP」で扱うことはできません (図 1-3)。
図 1-3 「商品売上計算 AP 」では商品データは扱えない
もし重複するデータがあったとしても、別途「商品売上計算 AP」用の商品データを作成することが必要です (図 1-4)。
図 1-4 「商品売上計算 AP 」用のデータファイルが必要
以上からファイルというのはアプリケーションに依存した、アプリケーション専用のデータ格納形式だということがいえるでしょう。したがってファイルは 1 つのアプリケーションからみれば非常に扱いやすいのですが同じシステム内に重複データが存在する可能性があるため、データを更新する際には注意が必要です。例えば商品番号を新しく振りなおした場合は全ての商品データファイルの商品番号に対して変更を加えなければいけません (場合によってはアプリケーションの変更作業も必要かもしれません)。そうしなければ矛盾が生じてしまいます (図 1-5)。
図 1-5 両方とも変更しないと矛盾が発生する
データベースは複数のアプリケーションが扱うデータとデータ定義情報を集中管理するため、この矛盾を解決できます (図 1-6)。
図 1-6 データベースではデータとデータ定義情報を集中管理する
そのため商品番号を新しく振りなおした場合でも変更作業は簡単に行うことができ、矛盾は生じません (図 1-7)。
図 1-7 1 ヶ所の変更で済み、矛盾は発生しない
2. リレーショナルデータベース (Relational DataBase)
簡単にいえばデータベースは「1. ファイルとデータベースの違い」で紹介したように業務システムで使用する様々なデータを整理して一元管理し、複数のアプリケーションに提供できるように記録保持したものです。ただし一口にデータベースといってもアクセス手法や管理手法の違いによっていろいろな種類があります。しかし「世の中にあるデータベース=リレーショナルデータベース」といっても過言ではないほど、現状ではリレーショナルデータベース (RDB) が使用されているケースがほとんどです。今回のコラムでは現在の主流であるリレーショナルデータベースを簡単にご紹介するのでまずはイメージを掴んでください。
リレーショナルデータベースではデータを 2 次元の表形式 (テーブル) で表現します。このとき表に格納される 1 件のデータを行 (レコード) と呼び、データを表す個々の項目のことを列 (フィールド) と呼びます。列 (フィールド) を定義する際にはその列に入力できるデータの種類を決定し、これをデータ型といいます (図 2-1)。
図 2-1 表 ( テーブル ) は行 ( レコード ) と列 ( フィールド ) で構成される
通常、データベース内に表 (テーブル) は 1 つだけしかないわけではありません。場合によっては複数の表 (テーブル) で 1 つのデータベースを構成する場合もあります。データベースや表 (テーブル) をどのように作成するかは設計段階で決定されますが、このコラムでは設計フェーズやテーブルの構築方法については取り上げません。全体像を理解した上で、さらなる勉強を重ねてください。
3. データベース管理システム (DataBase Management System)
データベースを管理するソフトウェアのことをデータベース管理システム (DBMS) といい、特にリレーショナルデータベースを管理するデータベース管理システムをリレーショナルデータベース管理システム (RDBMS) といいます。データベースは複数のアプリケーションから利用される可能性があるため、データベース管理システムは各アプリケーションの要求に応えながらデータに矛盾が発生しないように管理しています。この他にも以下に挙げるような基本機能をデータベース管理システムは備えています。
3.1 データベース言語処理機能
一般的にリレーショナルデータベース (RDB) にアクセスする場合は、ANSI や ISO で規格化されている SQL (Structured Query Language) というデータベース言語を使用します。ユーザーは SQL を使ってデータベース管理システムとやりとりをしながら、データベースを構築/利用します。データベース言語にはデータ制御言語 (DCL)、データ定義言語 (DDL)、データ操作言語 (DML) があり (表 3-1-1)、SQL は全てサポートします (図 3-1-2)
種類 |
説明 |
---|---|
DCL (Data Control Language) |
データベースに格納されているテーブル内の行に対して検索/追加/変更/削除を行う |
DDL (Data Definition Language) |
テーブルなどのデータベースに格納するオブジェクトの作成/変更/削除を行う |
DML (Data Manipulation Language) |
データベースを操作するデータベース利用者の制御を行う |
表 3-1-1 データベース言語の種類
図 3-1-2 RDBMS を通して DB にアクセスする
3.2 整合性管理機能
データベースは複数のアプリケーションで利用するため、あるアプリケーションが正しくないデータを格納してしまうと他に大きな影響を与えてしまいます。しかし各アプリケーション内でデータの整合性をチェックするのは負担が大きいため、整合性に関する部分をデータベース管理システムに任せることでアプリケーションの生産性や保守性を向上することができます (図 3-2-1)。
図 3-2-1 RDBMS で整合性を管理する
この整合性管理機能によってアプリケーションはデータの整合性に違反する操作ができなくなります。
3.3 トランザクション管理機能
データベースでは複数の更新処理をひとまとめにして行いたいケースがあります。例えば商品の注文に応じて在庫数を減少していくような場合、商品の注文処理が失敗したのに在庫数が減少されてしまうと、商品の注文は行われていないのに在庫が少なくなってしまうといった矛盾が発生します (図 3-3-1)。
図 3-3-1 注文されていないのに在庫数が更新される
このように切り離して扱うと矛盾が起こる可能性がある処理をひとまとめにしたものを「トランザクション」といい、データベース管理システムはトランザクションが途中で失敗したり取りやめられたら、データをトランザクション開始前の状態に戻してデータベースの一貫性を保証します。
3.4 同時実行制御機能
データベースでは複数のアプリケーションが同じデータを同時に扱う可能性があります。特に更新目的のアプリケーションがあった場合には、アプリケーションが発生するタイミングによってデータの矛盾が起こるかもしれません。例えばある商品番号の在庫数を読み取って減少する出庫 AP と、ある商品番号の在庫数を読み取って増加する入庫 AP が図 3-4-1 のように発生した場合には、データの矛盾が起こります。
図 3-4-1 データを保護していない場合
この場合本来の在庫数は 25-10+30=45 とならなければいけませんが、出庫 AP で行われた更新処理が正常に終了したのにデータ更新が反映されていない (更新の喪失:ロストアップデート) ため、論理在庫と物理在庫の間で矛盾があり、"商品がない!" といった事態を招いてしまいます。
したがってこのような矛盾を防ぐためにデータベース管理システムはロックという機能を使って矛盾がおこらないようにアプリケーションの同時実行を制御します。ロックは簡単に言えばデータを保護する機能です。例えばあるアプリケーションが更新をしている間にロックによってデータを保護して他のアプリケーションが更新できないようにロック待ちを発生させ、更新終了後にデータ保護を解除することによってデータの矛盾が起こらないように制御します (図 3-4-2)。
図 3-4-2 ロックによってデータを保護している場合
3.5 機密保護機能
通常データベースのデータは誰でもが何でもできるわけではなく、担当する業務やセキュリティ上の理由からデータベースを利用できるユーザーや操作を限定することが必要です。このように機密保護機能を用いるとユーザーやデータベースへのアクセス権限を管理することでデータを安全に守ることができます (図 3-5-1)
図 3-5-1 ユーザー毎にデータベースのアクセス権限を制限
3.6 障害回復機能
コンピュータシステムにおいて、障害が発生する可能性を否定することはできません。たとえば不慮または故意のデータ改ざん、プログラムの実行エラー、自然災害などが発生しデータが壊される、最悪の場合はデータが紛失する、といったケースも考えられます。
障害回復機能を用いると障害に備えデータをバックアップしたり、障害時にデータを復元することでそのような障害から速やかに復旧することができます (図 3-6-1)。
図 3-6-1 データベースのバックアップと復元
4. 業務用データベースとデータウェアハウス (DWH)
情報システムには基幹系システムと情報系システムの 2 種類があります。
基幹系システムは企業の日々の活動に必要不可欠な通常の業務処理システムを指し、基幹系システムで使用する業務用データベースは通常日々更新される現在のデータを格納します。また基幹系システムのことを OLTP (OnLine Transaction Processing) という場合もあります。
それに対し情報系システムは優位に企業活動を行うための分析処理を指し、情報系システムで使用する情報系システム用データベース (これを DWH と呼ぶ) は過去から現在まで蓄積された参照される履歴データを格納します。また情報系システムのことを OLAP (OnLine Analitical Processing) という場合もあります (図 4-1)。
図 4-1 OLAP における業務用データベースと DWH
このように業務用データベースとデータウェアハウスは格納するデータの質が異なり利用形態も違うため、データウェアハウスは通常、業務用データベースからデータを取り出して時系列化して構築します。すなわちデータウェアハウスは通常の業務とは切り離された分析用データを提供します。
以上のようにデータベースと一言でいっても使用方法によって業務用データベースとデータウェアハウスがありますが、今回のコラムでは OLTP で使用する業務用データベースを取り扱います。
5. SQL Server 2000
RDBMS を実現している製品は様々ありますが、今回のコラムでは Microsoft 社の SQL Server 2000 を取り上げます。SQL Server 2000 は Windows Server プラットフォームで国内売上 No.1 を達成している製品です。
5.1 データベース言語処理機能
SQL Server 2000 では 1992 年に制定された ANSI SQL-92 に準拠し、さらに様々な機能拡張をおこなった Transact-SQL 言語という SQL Server 用の言語を用います。Transact-SQL の基礎については「初めて学ぶ Transact-SQL」のコラムで取り扱っていますので是非参照してください。
5.2 整合性管理機能
SQL Server 2000 では制約やトリガを使用して整合性を管理します。制約については「MCDBA を目指そう!MCP 70-229 SQL Server 2000 開発編」コラムの第 1 章で一部を取り扱っていますので是非参照してください。
5.3 トランザクション管理機能
SQL Server 2000 のトランザクションについては「第 5 章で簡単に取り扱っていますので是非参照してください。
5.4 同時実行制御機能
SQL Server 2000 のロックについては「初めて学ぶ Transact-SQL」コラムの第 5 章で簡単に取り扱っていますので是非参照してください。
5.5 機密保護機能
SQL Server 2000 ではログインやデータベースユーザーを使用してユーザー管理を、ロールやステートメント/オブジェクト権限を使用してアクセス権限管理を行います。機密保護機能については今回のコラムの第 4 章で取り上げる予定です。
5.6 障害回復機能
SQL Server 2000 のバックアップや復元については「データ/ログ領域およびバックアップ/復元機能」の第 2 章から取り扱っていますので是非参照してください。
5.7 データウェアハウス
SQL Server 2000 には無償で Analysys Services が添付されています。SQL Server 2000 をインストールしても Analysys Services はインストールされません。別途インストールが必要ですが、Analysys Services はキューブという多次元構造を作成し分析アプリケーションと連携することで OLAP を実現しています。OLAP に関わる可能性がある方は是非勉強をさらに進めてください。
次回は SQL Server 2000 の特徴とデータベース管理/構築を簡単に行える SQL Server 2000 のツールをご紹介します。
鈴木 智行: NEC Eラーニング事業部に所属。入社以来、インストラクタとして教育業務に従事。汎用機、UNIX を経て、1994 年より マイクロソフト認定トレーナー (MCT) として、管理者向け教育を担当。SQL Server は 4.21a から携わっており、現在は主に SQL Server 2000 に関わるデータベース教育を中心に担当。 Windows 2000 および SQL Server 2000 での MCSE,MCDBA を取得しており、情報処理技術者試験のテクニカルエンジニア(データベース)も取得済。 SQL Server の優位性をアピールできるように Oracle Gold も取得した。今後 Oracle Plutinum を取得予定し、日々データベースを極めることに努力している。