ACID トランザクション
トランザクションとは
データベースやデータストレージシステムにおけるトランザクションとは、1 つの作業単位として扱われるあらゆる操作のことです。トランザクションは、完全に実行される、もしくは全く実行されないかのいずれかで、ストレージシステムを一貫した状態に保ちます。トランザクションの典型的な例として、銀行の 預金口座から現金を引き出す処理が挙げられます。この場合、預金口座から現金を引き出したか、もしくは全く引き出さなかったか、どちらかの処理が発生し、中間の状態はありません。
ACID 特性:原子性、一貫性、独立性、永続性
ACID とは、トランザクションを定義する4つの重要な特性、Atomicity(原子性)、Consistency(一貫性)、Isolation(独立性)、Durability(永続性)の頭文字をとった略語です。データベース操作にこれらの ACID 特性がある場合は、ACID トランザクションと呼ぶことができます。また、これらの操作を適用したデータストレージシステムは、トランザクションシステムと呼ばれます。ACID トランザクションにより、テーブルの読み取り、書き込み、変更の各処理で次の特性が保証されます。
- 原子性(A):トランザクションの各ステートメント(データの読み取り、書き込み、更新、削除)は、1 つの単位として扱われます。ステートメントは、実行されるか、あるいは全く実行されないかのいずれかです。この特性は、ストリーミングデータソースがストリーミングの途中で障害が発生した場合などに、データの損失や破損が発生するのを防ぎます。
- 一貫性(C):トランザクションがテーブルに、事前定義された予測可能な方法でのみ変更を加えることを保証します。トランザクションの一貫性により、データの破損やエラーが起きた場合でもテーブルの整合性を保ち、意図しない実行結果を防ぎます。
- 独立性(I):複数のユーザーが同じテーブルで読み書きを同時に実行しても、トランザクションが分離され、同時進行のトランザクションが相互に干渉したり、影響を受けたりしないようにします。実際は、同時に発生していも、各要求は単独で発生しているように扱われます。
- 永続性(D):システム障害が発生した場合でも、正常に実行されたトランザクションによるデータの変更が保存されることを保証します。
ACID トランザクションによるメリット
ACID トランザクションは、データの信頼性と整合性を最大限に高めます。部分的にしか操作を完了できなかった場合でも、データの一貫性を保つことができます。例えば、データベースのテーブルへの書き込み中に、予期せず電源が切れた場合、ACID トランザクションがなければ、データは一部のみ保存され、残りは保存されない可能性があります。その結果、データベースの一貫性は失われ、復旧は困難で時間のかかるものとなります。
Delta Lake の ACID トランザクションの保証により、信頼性と一貫性のあるデータを提供
ACID トランザクションは、これまでデータウェアハウスのみが持つ特性でしたが、Delta Lakeは、データレイクにこの特性を提供します。これにより、新たなデータがテーブルに書き込まれても、ユーザーは、データの一貫性のあるリアルタイムなビューを見ることができます。各書き込みは、順序付けられたトランザクションログに記録される独立したトランザクションとなるためです。Delta Lake は、最高レベルの独立性(直列化可能な独立性)を採用し、1 つのテーブルでの読み取り/書き込みの一貫性と信頼性を確保しています。ACID トランザクションの実装により、Delta Lake は、ラムダアーキテクチャの問題である複雑さ、データの誤表示、ラムダパイプラインが壊れた後に必要となるリワークや再処理などを効果的に解決します。また、ユーザーは、データに対して複数の同時トランザクションを実行できます。データソースやストリームでエラーが発生した場合でも、Delta Lake は、トランザクションの実行を中止し、データをクリーンで元の状態に保つことを保証します。ACID トランザクションによる大きなメリットは、ユーザーが Delta Lake のデータを信頼できることです。データアナリストは、ダッシュボードの準備の ETL 実行に Delta Lake を使用することで、データアナリストが見ている KPI が、データの実際の状況を表していることを信用できます。機械学習のエンジニアは、特徴量エンジニアリングに Delta Lake のテーブルを利用することで、変換や集約が意図したとおりに実行できているか、または全く実行できなかったかを確信できます(その場合、通知を受けます)。データに対して持っているメンタルモデルが、実際のデータに反映していると信頼できる価値は計り知れません。