• 検索結果がありません。

講義資料 DBMS講義

N/A
N/A
Protected

Academic year: 2018

シェア "講義資料 DBMS講義"

Copied!
16
0
0

読み込み中.... (全文を見る)

全文

(1)

データベース

第 5 回 トランザクション: アプリケーショ

ンの仕事の単位

鈴木幸市

(2)

データベース

第 5 回 トランザクション: アプリケーショ

ンの仕事の単位

鈴木幸市

(3)

今日の内容

 トランザクションとは?

 原子性 (Atomicity)

 隔離性 (Isolation)

 永続性 (durability)

 データベース以外のトランザクション

 データベースアプリケーションでのトランザクションの

指示

(4)

トランザクションの復習

 アプリケーションの処理の単位

A さんの口座の残額を読む

振り込み額を A さんの口座から減額 B さんの口座の残額を読む

振込み額を B さんの口座に加える

トランザクションの

の 途 中 で 止ま っ て は 困 る

止まったら最初 に戻ってほしい

無事ここまで処理できたら後で消 えてもらっては困る

 データベースは上記ようにトランザクションの保護や取り消

しの機能を持っている

 どこからどこまでがトランザクションかはアプリケーション

に教えてもらわないといけない

(5)

トランザクションの ACID 特性 ( 復習 )

 トランザクションの持つべき重要な 4 つの特性

 A (Atomicity)

 トランザクションが中途半端に実行されないこと

 C (Consistency)

 データに矛盾が生じる書き込みをさせないこと

 データに矛盾がないようにデータを格納できること

 I (Isolation)

 他のトランザクションが実行中であることを意識しな

いで処理できること

 D (Durability)

 一旦完了したトランザクションの結果はいかなること

があっても失ってはならないこと

 実際には程度問題あり。天変地異があってもデータを守る

場合などは、コスト問題もある

(6)

トランザクションとは (1)

 トランザクションとは、関連する複数の処理を一つの処理単位としてまとめたもの。 金融機関のコンピュータシステムにおける入出金処理のように、一連の作業を全体と して一つの処理として管理するために用いる。

 トランザクションとして管理された処理は「すべて成功」か「すべて失敗」のいずれ かであることが保証される。例えば、資金移動システムをコンピュータで処理する場 合、出金処理と入金処理は「どちらも成功」か「どちらも失敗」のどちらかであるこ とが要求される。「出金に成功して入金に失敗」すると、出金された資金が宙に浮い てしまうからである。

IT 用語事典

(7)

トランザクションとは (2)

 アプリケーションの処理の最小単位

 これ以上分けられないものなので、次のい

ずれかにしかならない

 トランザクションは「完全に」実行が完了する

( 成功 )

 トランザクションが「全く」実行されていない

(失敗 )

 実際は、データベースのソフトウェアが上

記を保証している。

成功した場合

結果は失われない。

失敗した場合

 データはトランザクション実行前の状態に戻る

原子性

Atomicity

永続性

(Durability)

一貫性

(Consistency)

(8)

トランザクションの永続性

どんな時でも?

停電

 データベースの自動リカバリ

ディスク装置破損

 ディスクの交換、データベースのバックアップを使ったリカバリ

サーバ故障

 サーバの交換、データベースのバックアップを使ったリカバリ

サーバルーム火災

 サーバルームの復旧、遠隔地に保管しておいたバックアップを使ったリカバ リ

 バックアップセンタを遠隔地にあらかじめ作っておいて、こちらで運転継続

地震によるビル倒壊

 ビル復旧、遠隔地に保管しておいたバックアップを使ったリカバリ

 バックアップセンタを遠隔地にあらかじめ作っておいて、こちらで運転継続

データベース以外の対策を事前に講じておく

どの程度の費用をかけるかにも依存する

(9)

トランザクションはアプリケーショ

ンが決める データベースで判断できないこと

 どこからどこまでがトランザクションか

 トランザクションは成功したのか失敗したのか (*1)

アプリケーションが教えてあげる必要がある

(*1) 内部エラーやアプリケーションのエラーは検出して強制的 Begin_Transaction;

( アプリケーションの処理 ) If (successful) {

Commit_Transaction; }Else {

Abort_Transaction; }

(10)

トランザクションの同時実行

 複数のトランザクションが同時に実行される

時間

T1

T2

T3

T4

T5

T6

T7

 全部途中で止まってしまったら手動復旧はとても無理。→原

子性

 他のトランザクションが動いていることを考えながらアプリ

ケーションを書くのは大変。間違ったら他のトランザクション

(11)

他のトランザクションを考えてあげる?

 他のトランザクションの邪魔をしないようにアプリケーションを

書くのは至難の業

 間違ったら影響も大きい (他のトランザクションのデータを破壊する )

アプリケーションがデータベースを占有しているように ( 他

のトランザクションが動いていないように ) 見せる

データベースが面倒をみてあげている

隔離性

Isolation

(12)

ロックを使って隔離する

 同時に同じデータを読み書きするときには、一方を待たせる (*1)

 内部では「ロック」を使う

(*1) 読むときは待たせない方法もある (MVCC, 読取一貫性 )

T1

T2

(a) に書

Commit

(a) に書

実はここまで待たせる。 これはデータベースが制 御する。

T1が a をロックして いる

(13)

トランザクションによる一貫性の保証

トランザクションとは

 データベースの状態を変えるもの

 前後の状態は正しい (一貫性のある )状態

 何が「正しい」かはアプリケーションが決める

1

2

3

4 ・・

一貫性

Consisitency

トラン ザク

ション

トラン ザク

ション

トラン ザク

ション

(14)

なぜトランザクションが必要か?

 失敗したときの回復をやりやすくする

 アプリケーションの設計を楽に

 データベースに格納してあるデータを正しく

 正しい書き込みをきちんと保存する

 書き込んだデータが失われないようにする

 複数のアプリケーションが同時に動作でき

るようにする

 アプリケーションの中ではデータベースを独

り占めしているように見える

 正しく書き込まれたデータだけが他のトラン

ザクションから見えるようになる

(15)

トランザクション復習

 アプリケーションの処理の最小単位

原子性

 開始と終了はアプリケーションから教えてもらう

隔離性

 読み書きのタイミング調整

 データベースがやってくれる

永続性

 データベースがやってくれる

 永続性の保証のレベルは事前の対策や費用にも依存する

一貫性

 どこで故障しても、アプリケーションとして正しい

状態になっている

(16)

トランザクション復習問題

 「トランザクション」の考え方が必要な理

由を簡単に書け

参照

関連したドキュメント

これらの定義でも分かるように, Impairment に関しては解剖学的または生理学的な異常 としてほぼ続一されているが, disability と

ヒュームがこのような表現をとるのは当然の ことながら、「人間は理性によって感情を支配

自分は超能力を持っていて他人の行動を左右で きると信じている。そして、例えば、たまたま

たとえば、市町村の計画冊子に載せられているアンケート内容をみると、 「朝食を摂っています か 」 「睡眠時間は十分とっていますか」

親子で美容院にい くことが念願の夢 だった母。スタッフ とのふれあいや、心 遣いが嬉しくて、涙 が溢れて止まらな

   遠くに住んでいる、家に入られることに抵抗感があるなどの 療養中の子どもへの直接支援の難しさを、 IT という手段を使えば

これからはしっかりかもうと 思います。かむことは、そこ まで大事じゃないと思って いたけど、毒消し効果があ

・私は小さい頃は人見知りの激しい子どもでした。しかし、当時の担任の先生が遊びを