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