6.SQLのテクニック(工事中)
7.トランザクション処理(工事中)
データベースと言った場合、DBMSつまりデータベース管理プログラム(或いはデータベースエンジンと呼ばれるもの)を指す場合と、データとしてのデータベースそのものを指す場合があります。ここで取り上げるRDB(リレーショナルデータベース)はDBMSの一つの形態です。ではデータベースとは何かと言われれば端的にはデータの集まりという事が出来ます。幾つかの項目が集まりひとつのレコードとなり、複数のレコードの集合がデータベースと言って良いでしょう。問題はその構成方法と保守のロジックとなります。これらについて次項目以降で詳しく見ていきます。
データベースにはその構成によって幾つかの種類があります。以下はその代表例です。
SAM (Seaquential Access Method)
順編成ファイルと呼ばれるもので磁気テープ等の媒体記録で多く利用されています。単純な反面先頭から順にしか読めない欠点があります。
ISAM (Indexed SAM)
磁気ディスク媒体などでSAMの欠点を補うべく索引を持つ事で特定レコードをランダムにリードライト可能としたものです。
構造化DB
従来大規模オンラインなどに利用されてきました。例えば顧客のマスタファイルの下に属性・入出金・貸出し履歴などの複数のセグメントファイルが付加されるといった複雑な構造を可能とするものです。10年ほど前の金融システムの主流DBであり、現在でも多く利用されています。IBM社のIMSなどが具体的な例となります。
RDB (Relational DataBase)
RDBは数多いデータベースの形態の中で近年最も利用されているものです。イメージ的にはEXCELのような表計算ソフト中の表をそのままデーターベースにしたものと理解すると判りやすいと思われます。但し実際には、1つの表だけで使われるのではなく、複数の表をキー項目を使ってリンクする形で利用されます。
NAME |
ADDR |
TEL |
Sato |
Tokyo |
03-3456-9876 |
Tanaka |
Kyoto |
071-298-1456 |
Suzuki |
Nagoya |
062-245-6325 |
RDB製品も各種流通しており、以前メインフレームやUNIXでしか動かなかったものが、フリーのUNIXやWindowsでも利用出来るようになるなど裾野が広がっています。主な製品を上げます。
メインフレーム系
DB2(IBM社)
UNIX系
ORACLE
Sybase
Informix
PostgreSQL
MySQL
mSQLPC系
MS-SQLserver
PARADOX
ACCESS
この中で金額ベースではDB2とORACLEが激しく争っているようですが、数量ベースではORACLEが企業等の利用シェアが高く、信頼性の評価が高いようです。近年WindowsNT版やPersonal
Oracle/OracleLiteと言ったWindows95/98で動くものまで製品化しシェアを延ばしています。
例えばPCベースでのACCESS(Microsoft社)のシェア伸張には目を見張るものがあります。ACCESSはRDBではなく単なるISAMではないかとの議論もあるのですが、それはさておきスタンドアロン専用と割り切ればそれなりの機能を有するACCESSもマルチユーザー環境では色々と問題があります。ACCESSとOracleの決定的な差は排他制御や保守のロジックであり、多くの機能に雲泥の差があります。Oracleは他のマルチユーザーRDB製品と比較しても幾つかのアドバンテージがあります。それは行レベルロックであり読取り一貫性です。
行レベルロック
Oracleではファイル単位の排他制御に留まらずレコード単位の排他制御が可能です。これはマルチユーザー環境において決定的な優位点です。
読取り一貫性
ユーザーAが合計値の検索を開始した後でユーザーBがレコードの更新をしたらどうなるのか。ユーザーBは2つのレコードを一つは10減じてもう一つは10加算します。ところが減じる方のレコードをユーザーBは既に読み込んでいたとすると、加算する方のレコードも加算前の値でユーザーAに渡さないと合計値がおかしくなります。そこで加算する方のレコードも加算前の数値をユーザーA渡す機能を読取り一貫性と言います。
5.SQL
SQL(Structured Query Language)は元々米IBM社が自社のDB2用に開発したRDBを操作するための言語。現在では国際規格も定められており、事実上の標準言語で、Oracle、Sybase、Informix、ODBCなど全てほぼ同一の文法で記述出来ます。下記に検索と追加時の典型的なパターンを例示します。
RDBの内容は下記の通りとします。
CLIENT
CODE
NAME
ADDRESS
1111
佐藤物産
東京都渋谷区
2222
宮沢物流
神奈川県平塚市
3333
鈴木商会
千葉県銚子市
9876
南野商事
群馬県館林市
□ SELECT文
SELECT * FROM CLIENT WHERE CODE=3333実行結果は、
CLIENT
CODE
NAME
ADDRESS
3333
鈴木商会
千葉県銚子市
となります。
□ INSERT文
INSERT INTO CLIENT(CODE,NAME,ADDRESS) VALUES(4444,’田中金属’,’東京都中央区’)
実行結果は、
CLIENT
CODE
NAME
ADDRESS
1111
佐藤物産
東京都渋谷区
2222
宮沢物流
神奈川県平塚市
3333
鈴木商会
千葉県銚子市
4444
田中金属
東京都中央区
9876
南野商事
群馬県館林市
となります。
前ページに戻る---> RETURN