DBMSの役割と機能 - Fukumori

2016/5/8
DBMSとは
DBMSの役割と機能
OS
ア
プ
リ
O
S
SQL
Data
Base
Management
System
Data Base
Data Base Management System
福森 俊一郎
NO.3 第6章
NO.13 第3章
テキストP107
DBシステムの基本構造
テキストP110
DBMSの機能
データベースシステム(DataBase System)
1.データベースの管理
データモデル
DBMS
データ構造
一貫性
整合性
Data Base File
a.データ定義機能
DBのスキーマ記述・定義
b.データ操作機能
データの検索や更新
c.データ制御機能
データ定義や操作時におけるDB内容の正常維持管理
DB管理
システム
DB言語
SQL
DBアプリ
データ定義
データ操作
DD
Data
Dictionary
DB操作
システム
2.トランザクション管理
3.同時実行制御
4.障害回復管理
BackUp
File
Logging
File
5.機密保護管理
Work File
Program Library
テキストP112
トランザクション処理・管理
概念
Aさん
トランザクション(transaction)とは
DBを利用するとき、複数の処理を一連のもとしてまとめる単位
①A
1.銀行の送金処理
A口座から、10万円を引き出して、B口座に入金。
A口座とB口座の処理が完了して、送金処理が完了。
DB
Aの口座
80万円
2.切符の予約
DB
の予約が取れなければ意味がない。この場合、東京から新大阪ま
での予約を取り消す必要がある。
口座データ Read
②A 10万円を引き算
③A 口座データ Write
時間
DB
Bの口座
25万円
¥10万円
東京から和歌山へ予約。東京から和歌山へ直通はないので、
乗換が必要。新大阪までの予約が取れても、大阪から和歌山まで
10万円
をAからBへ送金
トランザクション
時間
作業の論理単位(Logical Unit of Work)
例
Bさん
トランザクション
④B 口座データ Read
⑤B 10万円を足し算
Aの口座
70万円
⑥B 口座データ Write
DB
Bの口座
35万円
1
2016/5/8
トランザクション処理・管理
適切な実行
ACID
原子性 トランザクションの処理は、全体として実行されるか、実行さ
れないか、どちらかであることが保証される。
ACID特性の保証
整合性(一貫性) データベースの内容は矛盾がなく整合したもので
ある必要がある。
1.原子性(Atomicity)
2.整合性・一貫性(Consistency)
隔離性(独立性) 複数のトランザクションを並行処理したとき、それ
ぞれのトランザクションの実行は隔離されている必要がある。
3.隔離性・独立性(Isolation)
4.耐久性・永続性(Durability)
耐久性(永続性) 完了したトランザクションによるデータベースの変
更結果は、その後に障害があっても失われない。
詳細は次
ページ
原子性
ATOMICITY
整合性
CONSISTENCY
RollBack(元に戻す)
①
何
れ
か
で
な
い
と
ダ
メ
②
お
か
し
い
終
了
後
の
状
態
例1
(
処
理
終
了
後
DB
DB
Aの口座
55万円
Bの口座
35万円
)
DB
DB
Aの口座
70万円
Bの口座
30万円
例2
Commit(確定)
隔離性(独立性)
ISOLATION
DB
DB
Aの口座
80万円
Aの口座
70万円
耐久性(永続性)
トランザクション1
DB
DB
Aの口座
70万円
Aの口座
70万円
DB
DB
DB
Bの口座
25万円
Bの口座
35万円
Bの口座
35万円
時間軸
DURABILITY
DB
Bの口座
35万円
DB障害
時間軸
回復
処理
DB
参照、更新など
Aの口座
80万円
トランザクション2
DB
Bの口座
25万円
2
2016/5/8
Bさん
トランザクション
ACID特性を保証するための機能
10万円
をAからBへ送金
Aさん
1.同時実行制御(並行処理制御)
トランザクション
時間
隔離性の保証
①A
DB
DB
②A 10万円を引き算
2.障害回復
Aの口座
80万円
トランザクションの実行中に障害が発生
時間
口座データ Read
Bの口座
25万円
③A 口座データ Write
・・・・・・原子性や整合性が失われる
¥10万円
トランザクション終了後の耐久性の保証
DB
DB
④B 口座データ Read
⑤B 10万円を足し算
Aの口座
70万円
10万円
をAからBへ送金
Aさん
SQL文の実行で開始。明示的な開始宣言はない。
開始
トランザクション
①A
終了
コミット(正常終了)
Bさん
トランザクション
トランザクションの開始と終了
開始
Bの口座
35万円
⑥B 口座データ Write
DB
②A 10万円を引き算
COMMIT文
Aの口座
80万円
正常終了し、トランザクション中の変更を有効にすること
DB
口座データ Read
Bの口座
25万円
③A 口座データ Write
実際の処理はメモリー上で。COMMITでDBに反映。
¥10万円
ロールバック(異常終了)
DB
ROLLBACK文
何らかの理由でトランザクションをアボート(途中放棄)する場合、
⑤B 10万円を足し算
Aの口座
70万円
処理開始前の状態に戻ること
DB
④B 口座データ Read
Bの口座
35万円
⑥B 口座データ Write
コミット
COMMIT & ROLLBACK
-100,000円
トランザクション
開始
同時実行制御の必要性
コミット
トランザクション
商品A 20個
の注文を受けました
商品A 30個
の注文を受けました
DB
+100,000円
トランザクション1
トランザクション2
①100を読み込む
②100を読み込む
DB
-100,000円
トランザクション
開始
トランザクション
ロールバック
障害
商品Aの在庫数
100
③30を減算し
それを書き込む
④20を減算し
それを書き込む
3
2016/5/8
同時実行制御 無い場合
トランザクション1
同時実行制御 ある場合
①100を読み込む
DB
DB
DB
商品Aの在庫数
100
商品Aの在庫数
70
商品Aの在庫数
80
トランザクション1
③30を減算し
それを書き込む
(DBロック解除)
①100を読み込む
(DBロック)
③30を減算し
それを書き込む
DB
DB
DB
商品Aの在庫数
100
商品Aの在庫数
70
商品Aの在庫数
50
④DBを読み込む
(DBロック)
⑤20を減算し
それを書き込む
(DBロック解除)
時間
時間
トランザクション2
④20を減算し
それを書き込む
②100を読み込む
②100を読み込もうとする
ロックがかけられている
ので「待ち状態」になる
トランザクション2
ロックによる同時実行制御
1. ロックとは
ロックの粒度
(排他制御とも呼ばれる)
ロックの粒度
読書きする対象データを他のトランザクションからアクセスされるこ
とを制限すること。
単位
粒度
小
大
2. 2相ロッキング法
制御
難
容易
待ち時間
短
長
(1)第1相 トランザクションを実行する前にロックをかける
タプル(行)
テーブル
データベース
(2)第2相 処理終了後にロックを解除する
ロックの粒度がタプル(行)ならば・・・・
3. ロックの種類
すでにかかっているロック
(1) 専有(占有)ロック
(2) 共有ロック(読取用)
かけようとす
るロック
ロックなし
共有ロック
専有ロック
共有ロック
可
可
不可
専有ロック
可
不可
不可
デッドロック(死の硬直)
ロック
学生ID
学生名
役職ID
001
三井秀高
109
ゼミ長
002
山田健二
106
HP管理者
003
鈴木望
109
ゼミ長
障害回復
役職名
トランザクションA
同時アクセス可能
トランザクションB
障害の種類
1.論理障害
トランザクション 1
ロック
データベース内のデータの論理矛盾
人為的なミスによるデータの消去
A
ロックをか
けられない
システムプログラムやアプリケーションソフトのバグで起こる障害
ネットワークの異常切断によるトランザクションの異常終了
B
ロック
ロック
トランザクション 2
2.物理障害
ハードディスクのクラッシュ
ディスクの容量不足
デッドロックの回避方法
1.処理の開始時点でトランザクションが必要とする全てのデータにロックをかける
2.タイムアウト。一定時間ロック待ちのトランザクションを探す
3.待ちフラグ。
電源異常
火災、洪水、津波など
4
2016/5/8
ログファイルとチェックポイント
実際の障害回復手順
Aは復旧の必要なし
B,C,Dはロールフォアード
Eはロールバック
コミット完了時でも、実際にDBに反映前に障害が発生している可能性があるため
障害回復に必要な機能とファイル
障害回復
1.ログ(またはジャーナル)
1. UNDO
DBに対して行ったすべての操作を時系列に記憶しておくファイル
2.バックアップ
ある時点でのDBのコピー。例えば、業務開始前。
3.チェックポイント
トランザクション処理におけるデータの更新は、直にディスク内の
データを操作せずに、まずメモリー上のバッファの内容を更新するの
が通常の処理方法。
このバッファの内容と、ディスク上のDBの内容を一致させるタイミ
ングのことをチェックポイントと呼ぶ。
障害の基本処理
トランザクションがDBに対して行ったすべての処理の取り消し
を行う。
これにより、DBがトランザクション開始前の状態に戻る
2. REDO
コミットしたトランザクションの再実行を行う
原則
実行中でコミットしていないトランザクションは UNDO
コミットしたトランザクションの結果が失われた場合は REDO
障害回復
障害の回復方法
1.トランザクション障害(アプリのバグ。対象は1つのトランザクション)
実行中のトランザクション UNDO
2.システム障害(対象は複数のトランザクション)
実行中のトランザクション UNDO
コミットしたトランザクションで更新データが失われた場合 REDO
3.媒体障害(対象は複数のトランザクション)
システム回復後、バックアップデータを基にDBを回復
コミットしたトランザクションを REDO
セキュリティ管理
1. パスワートの利用
正規利用者か否かの判断。正規の利用者にDBの利用を許可。
2. 暗号の利用
解読方法を知っている者のみ、DBの読み取りを可能
3. ログの利用
不正アクセスの発見、抑止効果
4. アクセス権の利用
役職、職務権限などで利用可能な範囲や参照・更新などを設定
例 参照はOK 更新はNG
5