銀行振込のデータ消失を防ぐACID特性
5分03秒 | DB基礎
基本情報技術者試験の頻出テーマを解説した音声コンテンツです。
トランスクリプト(字幕テキスト)
銀行振り込みの途中で、もし停電が起きたらどうなるか考えたことはありますか? 自分の口座からお金は減ったのに、相手には届いていないといったデータの中間状態は、想像以上に厄介な問題です。 そのような最悪の事態を防ぐために、現代のシステムにはトランザクションという概念が組み込まれています。 トランザクションは単なる処理という意味ではなく、その核心は複数の操作を1つのパッケージにすることにあります。 それは原子性(Atomicity)と呼ばれ、全部成功するか、全部失敗するかを保証するという性質を持っています。 振込を例にすれば、残高を減らす処理と増やす処理は決して切り離せないワンセットなのです。 この「0か100か」の原則が、ACID特性の「A」であり、失敗した場合は全てが巻き戻され、何も起こらなかった状態に戻ります。 次にACID特性の「C」、一貫性(Consistency)ですが、これはシステムのルールを常に守るという役割を担います。 例えば、口座残高はマイナスになってはいけないというルールがあれば、それを超える送金はそもそも許可されません。 データの辻褄が常に合っている状態を保つための、いわば門番のような役割を果たすのが一貫性です。 続いて「I」、独立性(Isolation)は、複数の処理が同時に動いても互いに干渉しないことを保証する仕組みです。 あたかもその瞬間、世界に自分しかいないかのように、各トランザクションが独立して実行されることを目指します。 ここでは安全性を高めるほど速度が落ちるため、データベース設計において性能とのバランスを取る重要なポイントになります。 最後は「D」、永続性(Durability)です。これは文字通り、一度完了したデータは消えないことを指します。 システムが応答した瞬間、その結果はたとえ直後に障害が起きても、恒久的な記録として刻まれることが保証されます。 このACID特性は銀行のような巨大システムだけでなく、Google Apps Scriptのような身近なツールでも重要です。 スプレッドシートの複数セルを更新する際も、原子性を意識しないとデータの不整合を起こす危険があります。 在庫を減らして売上を増やす一連の処理が途中で止まれば、それはビジネスにおいて致命的なエラーとなります。 トランザクションとACID特性を理解することは、単なる機能の習得ではなく、データの守り方という設計思想を学ぶことです。 身の回りのアプリで表示がおかしいと感じたとき、このACID特性のどれかが欠けていないか、設計の裏側を想像してみてください。
このコンテンツは Web society で視聴・学習できます。