基本情報技術者試験

データベースのACID特性とは? | 基本情報技術者試験過去問解説

こんにちは、フルスタックエンジニアのryuです。

今回の記事は、基本情報技術者試験過去問解説です。データベースのACID特性について解説します。ACID特性とは、一貫性(consistency),原子性(atomicity),耐久性(durability),独立性(isolation)の頭文字を取ったものでトランザクション処理を行う上で必要不可欠とされる性質です。さらに詳しく解説します。

サーバー構築を実践で身につけるInfraAcademy

※本ページには、プロモーション・アフィリエイトリンクが含まれています

ACID特性に関する問題

今回の記事では、以下の問題について解説します。

トランザクションが,データベースに対する更新処理を完全に行なうか,全く処理しなかったのように取り消すか,のどちらかの結果になることを保証する特性はどれか。

ア:一貫性(consistency)

イ:原子性(atomicity)

ウ:耐久性(durability)

エ:独立性(isolation)

出典:平成28年春期 問28

答えは、『イ』の「原子性(atomicity)」です。今回の記事では、データベースのACID特性について詳しく解説します!

ACID特性とは?

ACID特性とは、トランザクション処理で必要な性質のことです。ACIDはそれぞれの特性の頭文字を取っています。特性は以下の通り。

  • 原子性(atomicity)
  • 一貫性(consistency)
  • 独立性(isolation)
  • 耐久性(durability)

トランザクション処理はデータベースにデータを書き込んだり削除したりする処理のことです。このトランザクション処理に上記のACID特性が無いと、データベースの中身の整合性が取れなくなります

ACID特性とは、信頼性のあるデータベースにするための性質になります。では、次にそれぞれの特性について詳しく解説します。

ACIDのそれぞれの特性について

ここからは、ACIDのそれぞれの特性について解説します。

原子性(atomicity)

まず、原子性(atomicity)についてです。トランザクションに含まれるタスクが全て実行されるか、あるいは全く実行されないことを保証する性質のことを言います。

例えば、銀行の送金処理の場合、相手口座へ入金と自分の口座から減額する処理が走ります。このどちらかだけ実行されると矛盾が発生します。

どちらかが全て実行される、もしくはどちらとも実行されなければデータの整合性が保たれます。

一貫性(consistency)

一貫性は、トランザクション開始と終了時にあらかじめ与えられた整合性を満たすことを保証する性質です。

例えば、データに正の値を取るように条件を指定した場合、データが負の値になるような処理を行われないようにします。このようにあらかじめ与えられた条件を満たすように保証する性質が一貫性です。

独立性(isolation)

独立性は、トランザクション実行中の処理過程が外部から隠蔽され、他の処理などに影響を与えない性質のことです。

耐久性(durability)

耐久性とは、トランザクションが完了したら、その結果は記録されシステム障害などが生じても失われることがないという性質です。

データの操作などをログに保存しておき、なにか障害が発生した場合にすぐに復旧できるようにしておきます。

・関連記事:バックアップファイルとログを用いてデータベースを回復する操作はどれか

過去問解説まとめ

今回の記事では、以下の問題について解説しました。

トランザクションが,データベースに対する更新処理を完全に行なうか,全く処理しなかったのように取り消すか,のどちらかの結果になることを保証する特性はどれか。

ア:一貫性(consistency)

イ:原子性(atomicity)

ウ:耐久性(durability)

エ:独立性(isolation)

出典:平成28年春期 問28

答えは、『イ』の「原子性(atomicity)」でした。

以上で解説を終わります。当ブログでは、このようなネットワークに関する内容や基本情報技術者試験の過去問解説をしているので興味のある方は引き続きご覧ください。

参考書を読む人
基本情報技術者試験過去問解説まとめ 午前問題過去問解説 基本情報技術者試験の過去問題を詳しく解説します。エンジニアの経験から実践を交えながら解説します! ...

こちらのUdemyの講座もオススメです。

ABOUT ME
ryu@InfraAcademyというインフラ学習サービス運営
大手企業→上場ベンチャー→スタートアップでエンジニアをしていました。 インフラエンジニア歴10年以上。 Linuxやネットワークの学習ができるサービスInfraAcademyを運営中。
RELATED POST