OceanBaseデータベースはログの永続化を利用し、複数のレプリカ間でデータを同期します。
マルチレプリカ間ではPaxosプロトコルを用いて同期が行われます。具体的には、OceanBaseデータベースV4.0.0バージョンはファイルシステムを参考に、ログサービスを「Paxos Backed Append Only Log File System」、略してPalfとして抽象化しています。
Palfはデータベースの基盤コンポーネントであり、以下の2つのコア機能を実現する必要があります:
トランザクションシステムとして、以下の特性を備える:
トランザクションシステムのWrite-Ahead Loggingの機能要件を満たし、トランザクションの原子性と永続性を実現する。
特定の意味を持つタイムスタンプの返却をサポートし、読み書きトランザクションやスタンバイ機の弱い読み取りなど、トランザクションバージョン番号を生成する要件を満たす。
トランザクションの高性能を実現しつつ、マルチコア環境でのスケーラビリティを確保する。
分散システムとして、以下の特性を備える:
Paxosプロトコルに基づき、多数派レプリカでのデータ永続化を保証する。同時にメンバー変更を通じて災害復旧機能を提供し、高可用性と高信頼性を実現する。
非同期レプリケーションの機能を提供する。
完備した診断監視機能を提供し、診断可能で運用保守可能なシステムを実現する。
OceanBaseデータベースV4.0.0バージョンでは、1つのログはログストリーム内で一意のLSN(Log Sequence Number)で表され、LSNを用いることでメモリおよびディスク上のログを一意に特定できます。既に明確にコミットされたログは、複数のレプリカ間で完全に一致します。