トランザクションとリカバリ ~第6章~
はじめに
データベースをテーマとして徒然なるままに記述しています。何となく『そうなのね~』と解釈していただければそれで結構です.逆に言うと多少(大いに?)厳密性に関しては怪しいところを含むかもしれません.基本的には一般論として述べるつもりですが,所々筆者の独断と偏見に基づく表現も含まれることと思いますので,それを前提にお読みください.
コラムの連載予定
1 DB(データベース:Data Base)とは
2 DBシステムとファイルシステムとの違い
3 DBの歴史
4 何故正規化するのか
5 ER図とテーブル関連図
6 トランザクションとリカバリ ←現在地
7 同時実行制御
8 データの活用
9 おわりに
前回のコラム、第五章はこちら。
~第6章~トランザクションとリカバリ 目次
トランザクションとリカバリ
今まではデータの静的な整理であったが,データの処理の側面に話題を移す.
冒頭でファイルシステムとの差異に関して,排他制御とリカバリと表現したがそのあたりを中心に述べる.
▶トランザクションとは
英語のtransactionはビジネスの世界では商取引,売買,業務等と一般的には訳される.
DBの領域においてトランザクションは,一連の関連する分解不可分な処理単位という事になる.
SQL用語で表現すると,トランザクション開始(begin transactionと書くDBMSも存在する) からcommit或いはrollbackまでという事になる.
これは非常に重要な概念であり,排他制御のための資源獲得や開放およびリカバリの単位となる.
commitはデータの更新(追加(insert),変更(update),削除(delete))を確定するものであり,rollbackは更新を無かったことにする(トランザクション開始直前の時点に戻す)ものである.
▶ACID特性
(アシッドと発音,,,,,,筆者はついエーシッドと発言してしまうが)
ACIDとは,前記した固いDB概念におけるトランザクションの4つの特性であり,データの整合性と信頼性を保証する非常に重要な技術・特性である.
A(Atomicity:原子性)
トランザクションによるデータに対する一連の操作が全て実行されるか,一切実行されないかのどちらかである.
C(Consistency:一貫性)
トランザクションの前後でデータベースの正常な状態が維持される.
I(Isolation:独立性)
複数の処理が並行実施する場合でもそれぞれのトランザクションは他のトランザクションから影響されることなく独立して動作する.
D(Durability:永続性)
トランザクション完了後の結果は恒久的に保存される.
▶BASE特性 CAP定理
一方,もう少し柔らかいDBにおいてはBASE特性と言われるものがある.
それはACID特性の条件を少し緩めたものであり,大規模分散システムにおける一貫性と可用性のトレードオフ(一貫性よりも可用性を優先)を意識した設計法・特性である.
BA(Basically Available:利用可能)
基本的にいつでも利用可能である.
S(Soft state:ソフトな状態)
常に一貫性を保っている必要は無い.
E(Eventual consistency:結果整合性)
時間の経過とともに結果的に一貫性が保証されれば良い.
▶CAP定理
現在のWebサービスに代表される分散システム間の情報複製に関する定理であり,以下の3つの状態・性質を同時にすべて提供することは不可能である,という定理である.
C(Consistency:一貫性)
全てのノードにおいて最新データを取得可能.
A(Available:可用性)
一部のノードで障害が発生しても生存するノードで対応可能.
P(Partition-tolerance:分断耐性)
ネットワークが分断されても全体とじてはサービスが継続される.
本定理は分散システムを対象としているので,Pは必須である前提に立っている.従ってAを優先する(CをあきらめるPA死守とする)か,Cを優先する(AをあきらめるPC死守とする)かという事になる.
次回第7章のテーマは、「同時実行制御」についてです。
こちらからご覧ください。