ACID特性

導入

 トランザクションとは、下図のようにある目的をもつ業務処理のひとまとまりのことを指します。DBMS(データベース管理システム)はトランザクションを受け、データに反映する機能があります。

トランザクションの例銀行口座からの預金引き出しオークションの入札
ひとまとまりの業務処理<1>引き出しが行えるか確認
<2>指定金額を引き出し
<3>預金残高を更新
<1>オークションの現在価格の確認
<2>持金から入札可能かどうかを確認
<3>入札

 DBMSはトランザクションを適切に処理する必要があります。例えば、上図左の預金引き出しの処理では、<1><2><3>の処理を連続して行い、一連の流れとしてすべて完了させなければなりません。障害等により、仮に<1><2>だけ行われ、<3>を行わずに止まってしまうと、預金がいくら残っているかが解らなくなってしまいます。このようなことを防ぐため、DBMSのトランザクション処理に求められる要件をとりまとめてACID特性と呼びます。


ACID特性とは、信頼性のあるデータベースにおけるトランザクション(データのやり取り)の持つべき性質をまとめたものです。ACIDとは、それら性質の頭文字をとったものです。
データベースを実際に作る時に最低限知っておくべき知識なので、しっかりインプットしておきたい概念です。


ACID特性とは、関連する複数の処理を一つの単位として管理するトランザクション処理に求められる4つの特性 “Atomicity”(原子性)、“Consistency” (一貫性)、“Isolation”(独立性)、“Durability”(耐久性)の頭文字をつなぎ合わせたもの。


コンピュータサイエンスで使われる“ACID”とは、データベースの一貫性を維持するためにトランザクションシステムが持つべき性質のことです。
ACIDはその性質である原子性(Atomicity)、一貫性(Consistency)、独立性(Isolation)、および永続性(Durability)の英語の頭文字から来ています。


データベースにおいて、トランザクション処理に必要とされる特性のこと。トランザクションのすべての処理が完全に実行されるか一つも実行されないことを表す原子性(Atomicity)、データに矛盾を生じないことを表す一貫性(Consistency)、他のトランザクションを干渉しないことを表す隔離性(Isolation)、正常終了したトランザクションの処理結果は失われないことを表す耐久性(Durability)の、4つの特性がある。








ACID特性とは

ACID特性とは、トランザクション処理において必要とされる4つの要素、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)を頭字語で表したものである。

「A」はAtomicity(原子性)である。これは、一連の処理は、全体として実行されるか、実行されないか、どちらかであることが保証されることを指す。

「C」はConsistency(一貫性)である。これは、処理結果がある条件や整合性を保つことが保証されるという意味である。

「I」はIsolation(独立性)である。これは、その処理について、結果だけが他から見ることができ、実行中の途中状態が他へ影響することが無いということである。

「D」はDurability(永続性)である。これは、その処理が完了したという結果を受けた段階で、結果は失われることの無い永続的なものとしてデータベースに記録されている、ということを指している。

トランザクション処理では、データベースにおけるデータの一貫性を保証するため、一連の処理全体を一個の処理単位として管理している。このとき、ACID特性が遵守されていることが、データの一貫性を保証するためには不可欠とされている。


トランザクションのACID特性は以下の表のようにまとめられます。それぞれの特性を守るためDBMSには、「コミットメント制御」「排他制御」「障害回復機能」等が備わっています。

 午前問題では「ACID特性の○○性の説明として正しいものはどれか?」という形でよく問われます。以下の表には、問題で問われるパターンもまとめておきましたので、確認しておいて下さい。

ACID特性の問題で問われるパターン

ACIDとは、信頼性のあるトランザクションシステムの持つべき性質として1970年代後半にジム・グレイが定義した概念で、これ以上分解してはならないという意味の不可分性(英: atomicity)、一貫性(英: consistency)、独立性(英: isolation)、および永続性(英: durability)は、トランザクション処理の信頼性を保証するために求められる性質であるとする考え方である[1]。

この語はその4つの性質を表す英語の語の頭字語をとって作られた合成語であり、1983年にアンドレアス・ロイター[2]とテオ・ヘルダー[3]によって提唱された。


ACIDは,原子性/一貫性/独立性/永続性の4特性のことを指しています。

1.Atomicity(原子性)
2.Consistency(一貫性)
3.Isolation(独立性)
4.Durability(永続性)

原子性というのは,これ以上分割できないこと,つまりトランザクション処理は終わるか始まらないかの2択でしかなく,中途半端に終わらないことを要求しています。仕送りの例で言うと,実家の口座から5万円引かれた段階で処理が中断されてはならないということです。原子性

一貫性というのは,トランザクションが開始時と完了時でデータベースの条件を満たすことを要求しています。仕送りの例で言うと,実家の口座に1万円しか入っていないことや,Aさんの口座にあと5万円入ってしまうと,銀行では扱えなくなってしまうような状況を表しています。一貫性

独立性というのは,トランザクション処理の開始時と完了時しか外部からは見えないことを指し,隔離性と呼ばれることもあります。仕送りの例で言うと,外部からは「実家の口座から5万円引かれた状態で,Aさんの口座にはまだ5万円が振り込まれていない」という状況が見えないことを表しています。独立性

永続性というのは,トランザクション処理の結果がずっと変わらずに保持されることを指します。仕送りの例で言うと,処理が完了した後に勝手にAさんの口座から5万円は出ていかないことを表しています。永続性


(アシッドトクセイ,ACIDプロパティ,ACID property,)ACID特性とは、トランザクション処理において必要とされる4つの要素、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)を頭字語で表したものである。「A」はAtomicity(原子性)である。 これは、一連の処理は、全体として実行されるか、実行されないか、どちらかであることが保証されることを指す。 「C」はConsistency(一貫性)である。 これは、処理結果がある条件や整合性を保つことが保証されるという意味である。 「I」はIsolation(独立性)である。 これは、その処理について、結果だけが他から見ることができ、実行中の途中状態が他へ影響することが無いということである。 「D」はDurability(永続性)である。 これは、その処理が完了したという結果を受けた段階で、結果は失われることの無い永続的なものとしてデータベースに記録されている、ということを指している。 トランザクション処理では、データベースにおけるデータの一貫性を保証するため、一連の処理全体を一個の処理単位として管理している。 このとき、ACID特性が遵守されていることが、データの一貫性を保証するためには不可欠とされている。








H2候補

  • トランザクション
  • 不可分性(Atomicity)
  • 一貫性(Consistency)
  • 独立性(Isolation)
  • 永続性(Durability)
  • 実装
  • トランザクション処理
  • CAP定理
  • BASE特性
  • トランザクションとは何か?
  • 原子性(不可分性)
  • 永続性(耐久性)

まとめ

参考

  • https://www.weblio.jp/content/ACID%E7%89%B9%E6%80%A7#:~:text=ACID%E7%89%B9%E6%80%A7%E3%81%A8%E3%81%AF%E3%80%81%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3,%E8%A1%A8%E3%81%97%E3%81%9F%E3%82%82%E3%81%AE%E3%81%A7%E3%81%82%E3%82%8B%E3%80%82
  • https://ja.wikipedia.org/wiki/ACID_(%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%A7%91%E5%AD%A6)
  • https://qiita.com/Yuto421/items/60e54c92bcf92d5374e6
  • https://e-words.jp/w/ACID%E7%89%B9%E6%80%A7.html
  • https://tips-memo.com/acid
  • https://ssaits.jp/promapedia/technology/acid.html
  • https://japan.zdnet.com/glossary/exp/ACID%E7%89%B9%E6%80%A7/?s=4

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です