Scalar DL: Scalable and Practical Byzantine Fault Detection Middleware for Transactional Database Systems
今回はスケーラブルかつ実用的なビザンチン故障検知ミドルウェアであるScalar DLの概要を紹介します。Scalar DLが解決する課題については、以前のエントリを参照ください。(英語版)
概要
Scalar DLはデータベース上で稼働し、下位のデータベースを変更することなく、ビザンチン故障検知機構を提供するミドルウェアです。
Scalar DLは、ユーザに対して単一データベースのビューを提供し、内部で以下の二つのデータベースサーバを異なる管理ドメイン*で管理します。
- プライマリデータベースサーバ(Ledgerサーバ):アプリケーションのデータを保持するプライマリデータベースレプリカを管理し、トランザクションのコミットを行う
- セカンダリデータベースサーバ(Auditorサーバ):プライマリデータベースレプリカと同じデータを保持するセカンダリデータベースレプリカを監査の目的で管理する
双方のサーバはContractと呼ばれる決定性を有する関数(ビジネスロジック)を保持し、与えられた入力に基づき状態と結果を導出します。
Scalar DLのビザンチン故障検知プロトコルのポイントは、LedgerとAuditorがトランザクションの半順序を非中央集権的かつ並行に同意することです。当該プロトコルでは、Auditorがクライアントから受け取ったトランザクションを競合に基づいて半順序に整列し(Orderingフェーズ)、Ledgerが並び替えられたトランザクションを実行・コミットし(Commitフェーズ)、AuditorがLedgerから受け取った順序結果を検証します(Validationフェーズ)。この3フェーズのプロトコルにより、双方の管理ドメインが(故障なく)正しく動作する限りにおいては、双方のデータベースは正しい(つまりstrict serializableな)同一の状態と結果を導出します。すなわち、もしどちらかのドメインにおいてビザンチン故障が発生する場合、データベースの状態または結果は食い違うため、その結果、クライアントがその食い違いを観測することでデータベースにおけるビザンチン故障を検知します。プロトコルのさらなる詳細については、今後のエントリで説明をする予定です。
*管理ドメインとは、一つの組織や管理機関が管理する、ノードとネットワークの集合です。
設計目標
Scalar DLの設計目標は以下の通りです。
改ざん検知性
Scala DLはデータベースシステムにおけるビザンチン故障を検知することで、データベースシステムに改ざん検知性を提供します。Scalar DLは、どちかの管理ドメインが正しく動作する限りは、ビザンチン故障を検知します。
スケーラブル
Scalar DLは各データベースレプリカを構成するノード数の増加に比例した性能スケーラビリティを実現します。各データベースレプリカにおいては、データ分割とレプリケーションにより高い性能とクラッシュ耐性を提供する(複数ノード構成の)分散データベースを用いることが可能です。
正しさ
Scalar DLはデータベースのトランザクションを並列に実行しつつ、正しさを保証します。Scalar DLの安全性(safety)は、Scalar DLが管理するデータベースシステムにおいて、双方の管理ドメインが正しい場合はStrict Serializabilityを提供し、どちらかの管理ドメインが故障している場合は、ビザンチン故障を検知します。Scalar DLの正しさについては、今後のエントリにおいてさらに説明します。
データベース非依存
Scalar DLはScalar DBを用いて実現されているため、データベース非依存のミドルウェアです。データベースシステムにおけるビザンチン故障検知機構をデータベースの変更なく、また、データベース固有の機能を用いずに実現します。Scalar DLは現状で、PostgreSQL、MySQL、Oracle Database、MySQL SQL Server、Apache Cassandra、Apache HBase、Amazon Dynamo DB、Amazon Aurora、Azure Cosmos DBとこれらと互換性があるデータベース上で稼働します。
クラウド非依存
LedgerおよびAuditorはコンテナ化されたミドルウェアであるため、Scalar DLはクラウド非依存です。Scalar DLはAWS CloudとAzure Cloudにおいて本番の稼働実績があり、Oracle Cloud、Google Cloudにおいては稼働確認が済んでいます。
まとめ
Scalar DLの概要と設計目標について説明しました。Scalar DLの主要な利点は、スケーラビリティおよび実用性を犠牲にすることなく、ビザンチン故障検知機構を提供することです。今後のエントリでは、Scalar DLのさらなる詳細や有用な機能について説明していく予定です。