三層スキーマ構造 DBMS データベース論(第 北村...

8
データベース論(第6回): データベースアーキテクチャ ファイルのアクセス法と編成法 北村泰彦 関西学院大学理工学部情報科学科 データベース論 北村泰彦@関西学院大学 DBMS 三層スキーマ構造 ANSI/X3/SPARCによるDBMSアーキテクチャ 標準 標準とは機能(facility)の間のインタフェース (interface)を定義すること. 概念スキーマ(conceptual schema) 実世界を構文的,意味的に記述したもの.リ レーショナルデータモデルは概念スキーマを 記述するための記号系(symbol system)ある. 内部スキーマ(internal schema) データベース実装レベル(ファイル)での構文 的,意味的記述.ISAMファイルやB-木ファイ ル. 外部スキーマ(external schema) 個別の利用者の要求を反映させるための記 述.ビュー(view)データベース論 北村泰彦@関西学院大学 三層スキーマの意義: データ独立性 物理的データ独立性(physical data independence)概念スキーマ/内部スキ ーマ変換(conceptual/internal transform)をTからTに変更することで,内 部スキーマの変化に対して,概念スキーマ Cを不変に保つ. 論理的データ独立性(logical data independence)外部スキーマ/概念 スキーマ変換(external/conceptual transform)tからtに変更することで, ユーザの応用プログラム群(外部ス キーマ)を実世界の変化による概念 スキーマの変化から不変に保つ. データベース論 北村泰彦@関西学院大学 ビュー ビューの定義 CREATE VIEW ビュー名 AS SELECT 列名 FROM 表名 CREATE VIEW 顧客名表 AS SELECT 顧客番号,顧客名 FROM 顧客表

Transcript of 三層スキーマ構造 DBMS データベース論(第 北村...

Page 1: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

(第

6回

):

データベースアーキテクチャ

ファイル

のアクセス法

と編

成法

北村泰彦

関西学院大学理工学部情報科学科

データベース論

北村

泰彦@

関西学院

大学

DBM

S三

層スキーマ構

ANSI/X3/SPAR

Cによる

DBM

Sアーキテクチャ

の標

標準

とは

機能

(facility)の間

のインタフェース

(interface)を定

義すること.

概念スキーマ

(conceptual schema)

実世

界を構

文的

,意

味的

に記

述したもの

.リ

レーショナル

データモデル

は概

念スキーマを

記述

するための

記号

系(sym

bol system)で

ある.

内部スキーマ

(internal schema)

データベース実

装レベル

(ファイル

)での

構文

的,意

味的記

述.

ISAMファイル

やB-木

ファイ

ル.

外部スキーマ

(external schema)

個別

の利

用者

の要

求を反

映させ

るための

記述

.ビュー

(view).

データベース論

北村

泰彦@

関西学院

大学

三層スキーマの意義:

データ独立性

物理

的デ

ータ

独立

性(physical data

indep

end

enc

e):

概念

スキ

ーマ

/内

部ス

キー

マ変

換(co

nce

ptual/

int

ern

al

trans

for

m)を

Tから

T’に変

更す

るこ

とで

,内

部ス

キー

マの

変化

に対

して

,概

念ス

キー

マCを

不変

に保

つ.

論理

的デ

ータ

独立

性(logical data

indep

end

enc

e):

外部

スキーマ/

概念

スキーマ変

換(external/conceptual

transform)を

tから

t’に変

更することで,

ユー

ザの

応用

プロ

グラ

ム群

(外

部ス

キー

マ)

を実

世界

の変

化に

よる

概念

スキ

ーマ

の変

化か

ら不

変に

保つ

データベース論

北村

泰彦@

関西学院

大学

ビュー

ビューの

定義

CREATE VIEW

ビュー名

AS SELECT 列名

FRO

M 表

CREATE VIEW

顧客名表

AS SELECT 顧客番号

,顧客名

FRO

M 顧

客表

Page 2: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

ビューの活用

CREATE VIEW

顧客

伝票

表AS SELECT 顧

客名

,伝票

番号

FRO

M 顧

客表

X, 受注

表Y

WH

ERE X.顧

客番

号=

Y.顧客

番号

を定義しておくと,

SELECT 顧客

名FR

OM

顧客

表, 受

注表

WH

ERE 顧

客表

.顧客

番号

=受

注表

.顧客

番号

AND

伝票

番号

=2101

がSELECT 顧客

名FR

OM

顧客

伝票

表W

HER

E 伝票番

号=

2101

のように簡

単に書

ける.また,概

念スキーマの

変化

に対

応できる.

データベース論

北村

泰彦@

関西学院

大学

DBM

Sの三大機能

メタデータ管理

(meta data m

anagement)

DBM

Sが管理しているデータベースに関するメタデータ(リ

レーシ

ョンの存在や属性,インデックス,アクセス権限

)の管理.一般に

はメタデータのためのリレーション群(システムカタログ

(system

catalogue))を定

義して管

理する.システムカタログを構

成するリ

レーションをカタログリレーション

(catalogue relation)と呼ぶ

質問処理

(query processing)データベースに利用者が発した質問を構文的,意味的に解析し

て,所望のデータを検索できる内部スキーマレベルのアクセスコ

ードを生成する処理.処理コスト最小のアクセスコードを生成す

ることを質問処理の最適化

(query optimization)と

いう.

トランザ

クション管

理(transaction m

anagement)

データベースに誤りを生じさせないためのデータベースの読み書

きの

管理.障害時回復

(recovery)や同時実行制御

(concurrency control).

データベース論

北村

泰彦@

関西学院

大学

記憶媒体

コンピュータシステムの記憶媒体

主記憶

(primary storage):

半導

体メモリにより

構成

.高

速アクセス可

能.

CPU

から直

接操

作可

能.高

価.記

憶容

量の

制約

大.揮

発性

(volatile).二次記憶

(secondary storage):磁

気ディスク,

磁気

テープ,光

ディスクなど.

CPUか

らの

直接

操作

不可

.低

速.低

価格

.記

憶容

量大

.不

揮発性

(nonvolatile).

データベース論

北村

泰彦@

関西学院

大学

記憶媒体

データベースの格納には一般に二次記憶

装置(特に,磁気ディスク)が用いられる.

データベースの

データ量

が多

く,その

全てを常

に主記

憶上

に保

持することは

コスト的

に見合

わない場

合が

多い.

停電

やシステムダウンなどの

障害

に対

して安

定的

にデータを保

持するためには

,不

揮発

性記

憶媒

体にデータを記

憶する必

要が

ある.

Page 3: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

磁気ディスク装置

磁気

ディスク装

置磁

気記

憶媒

体を塗

布され

た円

盤(disk)が

1本

の軸

(spindle)の周

りを等

速度

で回

転している.

ヘッドによりデータの

読み

取り

/書

き込

みが

行わ

れるディスク

表面

の円

をトラック

(track)という

トラックは

複数

のセクタ

(sector),ブロック

(block),または

ページ

(page)と呼

ばれ

る単

位に分

割さ

れる.

ブロックの

アドレスは

ディスク面

の認

識番

号,トラック番

号,ブロ

ック番

号の

3組

みで与

えられ

る.

データベース論

北村

泰彦@

関西学院

大学

磁気ディスク装置

ディスクアクセスの

手順

1.アームを移

動してヘッドを該

当するトラックに位

置付

ける.(シ

ーク時

間)

2.先

頭セクタが

ヘッドの

下に来

るの

を待

つ.

(回転

待ち時

間)

3.先

頭セクタか

ら始

まる指

定され

た数

のセクタを読

み,その

内容

を主

記憶

へ転

送する.

(転送

時間

ディスクのアクセス速度は低速

である.

ディスクの

読み

書きは

ページ

(ブロック)単

位(複

数の

連続

するセクタ)で行

う.

主記

憶中

に最

近アクセスされ

たページを一

定数

保持

しておく.

(バッファリング

)

データベース論

北村

泰彦@

関西学院

大学

ファイル

の論

理的

表現

と物

理的

表現

データベース論

北村

泰彦@

関西学院

大学

リレーションの実装

一般に一つのリレーションは一つのファイルとして実装される.

リレーション⇔ファイル

タプル

⇔レコード

属性

⇔フィールド

Page 4: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

リレーションの実装

タプルの同定

ファイルの

アクセス法

(access method)

スキャン

(scan)(順

次検

索)

探索

(search)(ブロックサ

ーチ,バ

イナリサ

ーチ)

インデックス法

(indexing)(ISAM, VSAM

, B-木)

ハッシュ法

(hashing)

データベース論

北村

泰彦@

関西学院

大学

スキャン

ファイル

中の

レコードを同

定する最

も単

純な方

法.

逐次探索

(sequential search)あるいは

線形探索

(linear search)といわ

れる.

ファイル

のレコード群

は順

序付

けられ

ており,そ

の順

番で逐

次アクセス可

能である.

レコードを探

索する際

に用

いるフィール

ドを探索

フィールド

(search field)あるいは

探索

キー

(search key)という.

レコード数

をnとしたとき,平

均n/2

のレコードをス

キャンすれ

ば求

めるレコードが

見つか

る.時

間計

算量は

O(n)で

ある.

データベース論

北村

泰彦@

関西学院

大学

2分探索

c=1;

d=n+

1;Loop:i=

(c+d)/2

if(ki =

k){print(ri );go to End;}

else if(ki <

k){c=

i;}else {d=

i;}go to Loop;End: end;

[1,2,3,4,5,6,7,8,9],k=6,c=

1,d=

10,i=5

[1,2,3,4,5,6,7,8,9],k=6,c=

5,d=

10,i=7

[1,2,3,4,5,6,7,8,9],k=6,c=

5,d=

7,i=6

最悪log

2 (n+1)回

の探索で

所望のレコードが見つかる.時

間計算量は

O(log

2 n)である.

データベース論

北村

泰彦@

関西学院

大学

ブロック探索

c=1;

d=m

;w

hile(d<=

n) {if(k

d =k){

print(rd );go to End;}

if(kd >

k){i=

scan(rc ,rc+1 ,...,rc+

m-1 );

print(ri );go to End;}

else {c=

d+1;

d=d+

m-1;}}

End: end;

[(1,2,3),(4,5,6),(7,8,9)],k=8,c=

1,d=3

[(1,2,3),(4,5,6),(7,8,9)],k=8,c=

4,d=6

[(1,2,3),(4,5,6),(7,8,9)],k=8,c=

7,d=9

scan(7,8,9)

平均

(√n-1/2回

の探索で所望のレ

コードが

見つかる.時

間計

算量

はO

(√n)である.

Page 5: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

インデックス法

データ部と索引部からなる.データ

部はレコードをキー順に格納した

ものである.索

引部はデータペー

ジの

先頭

レコードの

キー値

とその

データページへの

ポインタをペア

にした索引レコードを順に格納

したものである.

あるキー値をもつレコードの検索

は,検

索部

を探

索して読

むべ

きデ

ータページを特定

し,該

当するデ

ータページを読み

出せ

ばよい.

レコードをキー値の順に読み

出す

ことや

,データページを順

次読み

出すことも可

能である.

新たなレコードを追加する際には

,それより大きなキー値を持つレコ

ードを後にずらす必要があるの

で,

問題が生じる.

データベース論

北村

泰彦@

関西学院

大学

インデックス

• 社員

ファ

イル

はキ

ー社

員番

号に

対し

て非

順次

ファ

イル

(nonsequential

file)

•イン

デッ

クス

は社

員番

号に

対し

て順

次フ

ァイ

ル(s

equenti

al file)

インデックス

(index)はある要

素とその

ポインタ

(pointer)を示

す二

項リレーションで

ある.

データベース論

北村

泰彦@

関西学院

大学

インデックス

インデックスを生成することにより,所望の

レコードの位置決めが容易になる.

しかし,インデックスもまた大きなファイル

になることがあり,そのスキャンやサーチ

に時間がかかる.→

多段インデックス

(multilevel index)

データベース論

北村

泰彦@

関西学院

大学

多段インデックス

前提デ

ータ数:2

10

インデックス:5

段4分木

(45=

210)

アクセスコスト

スキャン:2

10÷2=

29=

512インデックス:(4

÷2)×

5= 10

インデックスは

二次

記憶

への

フェッチ回

数も削

減できる.

Page 6: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

ISAMインデックス

データファイル

を順

次ファイル

化したもの

位置

決めに必

要なインデックスファイル

のアクセ

ス回数

を減らすことができる.

データベース論

北村

泰彦@

関西学院

大学

B-木ファイル

インデックスが

レコードの

挿入

や削

除に対

応して

動的

に変

化し,常

に高

効率

のレコードアクセスを

可能

とする.

ファイル

の更

新に伴

うインデックスの

保守

にコス

トが

かか

る.

n個

のレコードを格

納した

B木

の高

さは

O(log(n))

となるの

で,指

定したキー値

をもつレコードの

検索

のために読

み出

さなけれ

ばならないページ数

もこのオーダとなる.

ルートを除

いてディスク中

の各

ページの

空間

使用

効率

は最

低でも

50%である.

データベース論

北村

泰彦@

関西学院

大学

B木正

整数

dに対して,

d次の

B木

とは

ページをノードとして以

下の

条件

を満

たすル

ート付

木である.

ルートから各リーフノードまでのパスの長さは全て同じである.

ルート以外のノードはキー値の順に並んだ

i個の

(d≤i≤2d)のレコ

ード

R1 ,…

,Ri を

持つ.

ルートはキー値の順に並んだ

i個の

(1≤i≤2d)のレコード

R1 ,…

,Ri を

持つ.

i個のレコードをもつ非リーフノード

Nは

i+1個の子ノードポインタ

PTR1 ,…

,PTRi+

1 をもつ.ポインタ

PTRj (1≤j≤i+

1)の指す部分木に

格納されたすべてのレコードのキー値

Kは次の条件を満たす.た

だし

Key(Rj )は

Nのレコード

Rj の

キー値を表す.

j=1の

とき

K<Key(R

1 )i<

j<i+

1の

とき

Key(Rj-1 )<

K<Key(R

j )j=

i+1の

とき

Key(Ri )<

K

データベース論

北村

泰彦@

関西学院

大学

B木(d=

1)

Page 7: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

B木レ

コード挿入の手順

挿入

レコードは

リーフノードに格

納することとする.挿

入レコードの

キー

値を用いて検索の際と同様に

B木

をたどり,レコードを格

納すべ

きリーフ

ノード

Nを特定する.

もし,

Nに入

っているレコード数

が2d

個未満ならば

,Nの適当な位置に挿

入レコードを格納して終了する.それ以外の場

合は以下による.

Nの

レコード数

が2d

個のときはオーバフローが生

じるのでノードの分割

を行う.まず,新たなノード

N'を

確保

し,挿

入レコードも含

めた

2d+1個

のレコードのうちキー値の小さい順

にd個

をNに,大

きい順

にd個

をN

'に格

納する.さらに,それらの中間のキー値をもつレコード

Rと

N'へ

のポインタ

PTR(N

')をペアにして,

Nの親ノードへ挿入する.

親ノードでは

Rと

PTR(N

')のペアを挿

入レコードと見

なして,上

記の

手順

と同

様の

処理

を行

う.ただし,ノードの

分割

がル

ートまで波

及し

Nがルート

となった場

合には

,親

ノードへ

Rと

PTR(N

')を挿入する代わりに,新たなノ

ードをルートとして確保し,

PTR(N

),R,PTR

(N')を

格納

する.この

時点

でB

木の

高さが

1増加することになる.

データベース論

北村

泰彦@

関西学院

大学

B木

キー値

26の

レコードを挿

入後

のB木

データベース論

北村

泰彦@

関西学院

大学

B木レ

コード削除

の手

順検

索の

際と同

様に

B木をたどり,削除対象レコードを格納

したノード

Nを特定する.

Nがリーフ

ノードか非

リーフノードかで以下

のように処

理が

異なる.

[Nが

リーフノードの場

合]

もし,

Nに入っているレコード数が

d+1個以上ならば,

Nから削除対象レコードを削除して終了する.そ

れ以外の場合は以下による.

Nの

レコード数

がd個のときはアンダーフローが

生じるので,

Nと親

ノードを共

有する

Nの右または

左の

ノード

N'を

調べ

る.いずれ

かの

ノード

N'の

レコード数

(iとする)が

d+1個以上ならば,

Nの削除対

象レコ

ード以

外の

d個

のレコード,

N'の

i個の

レコード,親

ノード中

のその

中間

のキー値

を持

つレコード

Rの

合計

d+i+

1個

のレコードを再配

分する.いま

N'が

Nの

右ノードとすると,上

記d+

i+1レコードの

うちキー値

の小

さい順

に(d+

i)/2をNに,大きい順に(d+

i)/2個を

N'に

格納する.さらに,その中間のキー値

をもつ

レコードを親

ノードの

Rの位置に格納して終了する.

N'が

Nの

左の

ノードの

場合

も同

様の

処理

をして終

了する.もし,

Nの

右および左

のいずれ

のノードの

レコード数

もd個の場

合は以下による.

Nとその右

または左の

ノード

N'を

融合する.いま,

N'が

Nの

右の

ノードとすると,

Nの

削除

対象

レコード以

外の

d-1個

のレコード,

N'の

d個のレコード,親ノード中のその中間のキー値をもつレコード

Rの

合計

2d個

のレコードをまとめて

Nに格納し

N'を

削除する.さらに,親ノードから

Rと

N'へ

のポインタ

PTR(N

')のペ

アを削除する.

N'が

Nの左

のノードの

場合

も同

様の

処理

をする.

親ノードでは

Rと

PTR(N

')のペアを削

除対

象レコードとみ

なして,上

の手

順と同

様の

処理

を行

う.ただし,

ノードの

融合

が波

及し

Nが

ルートとなった場

合には

,レコードに入

っているレコード数

が2個

以上

の場

合に行

うもの

とし,それ

以外

の場

合は

ルートを削除

する.この

時点

でB木

の高

さが

1減少することになる.

[Nが非リーフノードの場合

]削

除対

象レコードが

N中

のj番

目の

レコード

Rj の

場合,ポインタ

PTRj+

1 が指

す部分木の最も左のリーフノ

ード

N'の

先頭

レコード

R'を

Nの

Rj の

位置に格納する.

N'は

リーフノードであるのでその中の

R'を

上に述

べた手順で削除

する.

データベース論

北村

泰彦@

関西学院

大学

B木

キー値

22および

33の

レコードを削

除後

のB木

Page 8: 三層スキーマ構造 DBMS データベース論(第 北村 …kitamura/lecture/db-ocu/...データベース論(第 6 回): データベースアーキテクチャ ファイルのアクセス法と編成法

データベース論

北村

泰彦@

関西学院

大学

B+木B

+木は

B木と同様にページをノードとする

バランス木である.

レコードはリーフノードにのみ格納し(デー

タ部),非リーフノードにはキー値のみ格納

する(索引部).

データベース論

北村

泰彦@

関西学院

大学

B+木

データベース論

北村

泰彦@

関西学院

大学

ハッシュファイル

レコード

Ri の

キー値を適当なハッシュ関数を用いてハッシングし,格

納すべきパケットを決定するようにしたもの.

あるキー値を持つレコードの検索はキー値をハッシングしてバケット

を決定し,該当するページのみを読み出せばよい.新たなレコードを

挿入する際には,ハッシングで格納すべきバケットを決定する.もし

該当バケットに空きがない場合にはオーバーフロー処理を行う.レコ

ードの削除はバケット中で該当バケットを削除する.

あるキー値を持つレコードの検索が高速である反面,範囲検索やキ

ー値の順にファイル中のレコードを読み出すことは対応できない.