データベースのさまざまなACIDプロパティの実際の例を探しています。
Atomicity-ある口座から別の口座に資金を移動するトランザクションには、最初の口座からの引き出し操作と2番目の口座への入金操作が含まれます。入金操作が失敗した場合、引き出し操作も行わないでください。
一貫性-当座預金口座を追跡するデータベースでは、トランザクションごとに一意の小切手番号しか存在できない場合があります
分離-残高を検索する出納係は、同じ口座からの引き出しを伴う同時取引から分離する必要があります。出金トランザクションが正常にコミットし、テラーが再び残高を確認した場合にのみ、新しい残高が報告されます。
耐久性-システムのクラッシュやその他の障害によって、トランザクションの結果やデータベースの内容が失われてはなりません。多くの場合、耐久性は、選択した特定の時点(バックアップなど)からすべてのトランザクションを「再作成」できる個別のトランザクションログによって実現されます。
(ルドルフィエの実世界の例の要約 リンク )
•Atomicity-ユーザーの観点からは、トランザクションは完全に完了する(つまり、関連するすべてのデータベーステーブルが更新される)か、まったく完了しません。エラーまたは中断が発生した場合、その時点までに行われたすべての変更は取り消されます。
•整合性-データベース内のすべての整合性条件は、トランザクションごとに維持され、データベースをある整合性のある状態から別の整合性のある状態に移行します。
•分離-各トランザクションは他のトランザクションから分離されているため、各トランザクションは一貫したデータベース状態の一部であるデータにのみアクセスします。
•耐久性-トランザクションが完了したとユーザーに報告された場合、データベースへの変更は、その後のハードウェアまたはソフトウェアの障害後も存続します。
リレーショナルデータベースのデータを操作するために使用する任意のPerlスクリプトを取得し、その上部に「BEGIN」、下部に「COMMIT」を配置すると、Perlスクリプトが機能したか、効果がなかったことがわかります。データベース全体(mysqlにDDLステートメントを挿入した場合を除く)。原子性は、堅牢なソフトウェア(および私のお気に入りのプロパティ)を設計するときにそのような保証を得るのに非常に強力です。