Clustrixデータベースは、トランザクション マネージャーで Paxos を使用する分散データベースです。Paxos はデータベース内部で使用され、メッセージを調整し、分散システムでトランザクションの原子性を維持します。
- コーディネーターは、トランザクションが発生したノードです
- 参加者は、代わりにデータベースを変更したノードです。
- トランザクションリーダーは、トランザクションに代わってコードを実行したが、状態を変更しなかったノードです
- アクセプターは、トランザクションの状態を記録するノードです。
トランザクションのコミットを実行するときは、次の手順が実行されます。
- コーディネーターは各参加者に PREPARE メッセージを送信します。
- 参加者はトランザクション状態をロックします。PREPARED メッセージをコーディネーターに送り返します。
- コーディネーターは ACCEPT メッセージをアクセプターに送信します。
- アクセプターは、メンバーシップ ID、トランザクション、コミット ID、および参加者を記録します。ACCEPTED メッセージをコーディネーターに送り返します。
- コーディネーターは、コミットが成功したことをユーザーに通知します。
- Coordinator は、各 Participant と Reader に COMMIT メッセージを送信します。
- 参加者とリーダーはトランザクションをコミットし、それに応じてトランザクションの状態を更新します。COMMITTED メッセージをコーディネーターに送り返します。
- コーディネーターは内部状態を削除し、これで完了です。
これはすべてアプリケーションに対して透過的であり、データベース内部に実装されています。したがって、バンキング アプリケーションの場合、アプリケーション レベルで行う必要があるのは、デッドロック競合の例外処理を実行することだけです。大規模なデータベースを実装するためのもう 1 つの鍵は同時実行性です。これは通常、MVCC (Multi-Version Concurrency Control) によって支援されます。