データベーストランザクションは、データベース上の一連の操作を含み、トランザクションによってデータベースはある一貫した状態から別の一貫した状態へと変換されます。
データベーストランザクションには2つの役割があります:
データベース操作シーケンスに対して、失敗から正常な状態へ復旧する方法を提供し、異常な状況下でもデータベースが一貫性を保つ方法を提供します。
データベースの複数の同時アクセスに対して、分離の方法を提供し、複数の同時操作によってデータベースが矛盾した状態に陥ることを防ぎます。
データベーストランザクションには4つの特性があります:原子性、整合性、分離性、永続性。これら4つの属性は通常、ACID特性と呼ばれます。
原子性
OceanBaseデータベースは分散システムであり、分散トランザクションが操作するテーブルやパーティションは異なるマシンに配置されている可能性があります。OceanBaseデータベースは2段階コミットプロトコルを採用してトランザクションの原子性を保証し、複数のマシン上のトランザクションがすべて成功裏にコミットされるか、すべてロールバックされるかを確保します。
整合性
トランザクションは、データベースをある一貫した状態から別の一貫した状態へ変更しなければなりません。整合性と原子性は密接に関連しています。
分離性
OceanBaseデータベースは、OracleおよびMySQL互換モードをサポートしています。Oracleモードでは、Read Committed分離レベルとSerializable分離レベルがサポートされています。MySQLモードでは、Read Committed分離レベル、Repeatable Read分離レベル、Read Uncommitted分離レベル、およびSerializable分離レベルがサポートされています。
永続性
単一のマシンについて言えば、OceanBaseデータベースはredo logによってデータの変更を記録し、WALメカニズムによってダウンタイム後の再起動時にデータを復旧できるようにします。トランザクションが一度コミットされると、トランザクションデータは決して失われることはありません。クラスタ全体について言えば、OceanBaseデータベースはpaxosプロトコルを使用してデータを複数のレプリカに同期し、過半数のレプリカが存続している限りトランザクションデータは決して失われることはありません。