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
© Copyright 2024 ExpyDoc