目次(まとめ)
- データベースに対する一連の処理を「トランザクション」と呼ぶ
- 「トランザクション」の競合を避けるために「ロック」をかける
- 「トランザクション」において「ACID特性」が求められる
- 参考文献
こんにちは、みっちゃんです。
「データベース」とは、さまざまなアプリケーションで使用するデータを保存・蓄積しておくものです。
今回の記事では、「データベース」の中に保存されているデータに対して、何かの処理(例えば、データの書き換え)を行うときの仕組みについて紹介したいと思います。
データベースに対する一連の処理を「トランザクション」と呼ぶ
例えば、あるスーパーマーケットの商品在庫管理データベースを考えます。
このデータベースには、りんごの在庫が100個、みかんの在庫が50個、といったように、商品名とその在庫数が保存されています。
いま、りんご10個の注文が入ったとします。
データベースに「在庫数の確認」を行うと、りんごは100個あります。
したがって、りんご10個を販売することができます。
販売後、データベースの「在庫数の更新」を行い、りんごの在庫数が90個になります。
このように、データベースに対して、「現状の数値の確認」を行い、何らかの操作をして「数値を更新」する一連の処理を「トランザクション」と呼びます。
「トランザクション」の競合を避けるために「ロック」をかける
「データベース」は、複数の人がデータを共有する際に便利なものです。
したがって、「トランザクション」もまた、複数の人によって実行される可能性があります。
そのときに問題になるのが「競合」です。
例えば、AさんとBさんが同時にデータベースにアクセスして「りんご」の数を更新しようとしてしまうと、りんごの在庫数を正しく更新できません。
この問題に対処するために、Aさんがトランザクションをしているときには、Bさんがトランザクションできないように「ロック」する仕組みがあります。
ただし、Aさんのトランザクション完了に必要なデータをBさんがロックして、Bさんのトランザクション完了に必要なデータをAさんがロックしているような状況が発生してしまうと、AさんもBさんもトランザクションを完了できない状況に陥ってしまうので注意が必要です(デッドロック)。
「トランザクション」において「ACID特性」が求められる
「トランザクション」には、以下に示すような4つの特性が必要です。
頭文字をとって「ACID特性」と呼ばれています。
- 原子性(Atomicity)
- 一貫性(Consistency)
- 隔離性(Isolation)
- 耐久性(Durability)
原子性
トランザクションに中途半端な処理はありえない。「処理完了」か「もとのまま」のどちらか。
一貫性
データベースの内容に食い違いがないようにする。
隔離性
複数人がトランザクションを行なっても、正しく処理できるようにする。
耐久性
データベースに障害が発生しても、回復できるようにする。
情報処理試験の選択問題で問われるので、覚えておきましょう。
参考文献
きたみりゅうじ「キタミ式イラストIT塾 応用情報技術者」技術評論社