ACID とデータベース トランザクションの関係は?
ACID はデータベース トランザクションを提供しますか、それとも同じことですか?
誰かがこのトピックを啓発できますか。
ACID とデータベース トランザクションの関係は?
ACID はデータベース トランザクションを提供しますか、それとも同じことですか?
誰かがこのトピックを啓発できますか。
ACIDは、データベースを変更するときに適用する一連のプロパティです。
トランザクションは、ACID プロパティの一部を実現するために使用される一連の関連する変更です。トランザクションは、ACID プロパティを実現するためのツールです。
原子性とは、すべてのトランザクションが発生するか、まったく発生しないことを保証できることを意味します。1 つのユニットとして複雑な操作を行うことができます。オール オア ナッシングです。クラッシュ、電源障害、エラー、またはその他の理由により、関連する変更の一部のみが発生した状態になることはありません。
一貫性とは、データの一貫性を保証することを意味します。関連データに対する制約に違反することはありません。
分離とは、あるトランザクションがまだ完了していない別のトランザクションからデータを読み取ることができないことを意味します。2 つのトランザクションが同時に実行されている場合、それぞれがシーケンシャルに実行されているかのように世界を認識し、一方が別のトランザクションによって書き込まれたデータを読み取る必要がある場合、もう一方が完了するまで待機する必要があります。
永続性とは、トランザクションが完了すると、すべての変更が永続的なメディア (ハードディスクなど) に記録されていることが保証され、トランザクションが完了したという事実も同様に記録されることを意味します。
したがって、トランザクションはこれらのプロパティを保証するメカニズムです。これらは、関連するアクションをまとめてグループ化する方法であり、全体として操作のグループをアトミックにし、一貫した結果を生成し、他の操作から分離し、永続的に記録することができます。
ACID は、トランザクション処理エンジンの望ましいプロパティです。
DBMS は (それが良いものであれば) 特定の種類のトランザクション処理エンジンであり、通常はこれらのプロパティを完全ではありませんが非常に広範囲に公開します。
しかし、これらのプロパティを公開できる他のエンジンも存在します。かつて「TP モニター」と呼ばれていた種類のソフトウェアがその好例です (現在ではほとんどが Web サーバーに相当します)。
このような TP モニターは、DBMS 以外のリソース (プリンターなど) にアクセスでき、ユーザーに対して ACID を保証します。プリンターがトランザクションに関与している場合の ACID の意味の例として、次のようなものがあります。
ACID プロパティは非常に古く、データベース理論の重要な概念です。このトピックに関する多くの投稿を見つけることができることは知っていますが、これは RDBMS の非常に重要なトピックであるため、回答を共有したいと思います。
データベース システムは、すべてのトランザクションが特定の特性を持つ多くの異なるタイプのトランザクションを扱います。この特性は ACID プロパティと呼ばれます。ACID プロパティは、すべてのタスクを実行するために、すべてのデータベース トランザクションの被付与者を取得します。
Atomicity : すべてをコミットするか、何もコミットしないかのいずれかです。
一貫性 : トランザクションのすべてのルールと制約を検証するという点で一貫した記録を作成します。
分離: 2 つのトランザクションが互いに認識されないようにします。
耐久性 : コミットされたデータは永久に保存されます。 この記事からの参照:
ウィキペディアを引用するには:
ACID (原子性、一貫性、分離、耐久性) は、データベース トランザクションが確実に処理されることを保証する一連のプロパティです。
トランザクションをサポートする DBMS は、これらすべてのプロパティをサポートするよう努めます。商用 DBMS (およびいくつかのオープンソース DBMS) は、ACID の完全な「サポート」を提供します。 ACIDness を減らします - したがって、完全なトランザクション動作の保証を失います。
データベースの ACID プロパティ: