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