こんにちは、エアロスパイクです。
3部にわたって、現代の分散データベースの要点について紹介しています。
前編では、水平スケールについて、中編では垂直スケールについてご紹介しました。
本記事では、強い一貫性について解説します。
強い一貫性と可用性の最大化
分散システムに強い一貫性を実装する際に課題となるのは、高いパフォーマンスと公平な可用性を維持する方法を見つけることです。
私たちのシステムは、ロスターと呼ばれるクラスタノードのリストにアルゴリズムを基づかせることでこれを実現しています。
ロスターベースの強い一貫性
ロスターはクラスターを形成するノードのリストです。
ロスターは、定常状態において完全に形成されたクラスターがどのように見えるかを定義します。
各ノードは自分がロスターの一部であることを知っており、ロスター内の他のすべてのノードを知っています。
したがって、1つ以上のノードが何らかの理由で存在しない場合、残りのノードはどのノード(または複数のノード)が欠落しているかを即座に知ることができます。
この情報を使用して、ノードは特定のデータ項目が一貫して利用可能であることを決定するルールを定義します。
これらのルール(VLDB 2023の論文で説明)は、クラスタ内の異なるノード間でデータがどのように複製および同期されるかを決定し、一般的な障害状況において、強く一貫性のあるデータベースシステム内のすべてのデータの可用性を保証します。
非定員制かつロスターベースのエアロスパイクコンセンサス
例えば、この方式では即時一貫性を確保するために同期レプリケーションを使用します。
私たちのモデルでは、読み取り操作は、最新バージョンを取得するためにデータの1つのコピーだけにアクセスする必要があります。
対照的に、書き込み操作は、データの一部が書き込まれる特定のパーティションで共有されるすべてのノードにわたって複製されます。
すべての書き込みが複数のノード間で同期的に複製されるようにすることで、Aerospikeはノード障害やネットワーク問題が発生した場合でも、データが失われないことを保証します。
地理分散シナリオにおける読み取り操作は、読み取りを開始するクライアントに最も近いノードに送信されるため、読み取り待ち時間が最小限に抑えられます。
このように、私たちのロスターベースのスキームは、先に説明した効率的な垂直スケールと水平スケールアルゴリズムによって生み出されたパフォーマンスヘッドルームを利用し、強く一貫性のある分散データベースシステムでは他には不可能なはるかに高いパフォーマンスと可用性を提供します。
例えば、1つの重要な結果は、分散データベースが2つのコピーを使用して強い一貫性を維持できることです。
これはまた、強力な一貫性のために最低3つのコピーを必要とする他のコンセンサスベースのアルゴリズム(例えばRaft)と比較して、強力な一貫性の非常に効率的な実装をもたらします。
Aerospikeのロスターベースの方式では、障害発生時に追加のコピーを生成することがありますが障害状況が解決されると、余分なコピーは削除されます。
ネットワークの分断(つまり、スプリットブレインシナリオ)や障害は避けられないことに注意してください。CAP定理の範囲内では、強く一貫性のある分散システムは、スプリットブレインシナリオのいかなるタイプに対しても100%の高可用性を提供しながら強い一貫性を持つことはできません。
私たちのロスターベースのアルゴリズムは、多くの一般的な障害シナリオ中にシステムの可用性を最大化しますが、複雑なネットワークやノードの障害に対する万能薬ではありません。
強い一貫性で読み取り性能を維持
私たちの垂直スケールアルゴリズムは非常に予測可能な高性能を提供します。
強い一貫性の設定でその性能を読み取りに維持するために、Aerospikeは2種類の読み取り一貫性レベル(線形化可能性または逐次一貫性)をサポートしており、読み取り一貫性レベルはアプリケーションの読み取り操作ごとに選択できます。
線形化可能性はより厳格なモデルです。
読み取りは遅くなりますが、古いデータを返すことはありません。
逐次一貫性はより緩やかな強い一貫性モデルです。
読み取りは通常、強い一貫性設定のないシステムと同じくらい速いですが、稀な障害状況でわずかに古いコミット済みデータを返すことがあります。
性能テストでは、複製ファクター2の場合、最終的な一貫性(APモード)と逐次的一貫性の間に性能(スループットとレイテンシーの両方)の違いはないことを示しました。
予想通り、線形化可能性による一貫性で実行すると、スループットとレイテンシーが低下します。
しかし、そのような状況でも、システムは依然として単一ノードで秒間100万トランザクション以上をサブミリ秒のレイテンシーで処理できることに注意してください。
以下の表は、異なる一貫性レベルで動作する5ノードクラスターのエアロスパイクベンチマーク結果を示しています。
これらは5億のキー、レプリケーションファクター2で実行されました。
Aerospikeはメモリ内で永続性を持つように設定されました。
線形化可能性と逐次的一貫性は強い一貫性の二つの形態であり、どちらの設定でもデータの損失はあり得ません。
稀に、逐次的一貫性設定で以前にコミットされたデータの古い読み取りが発生する可能性がありますが、線形化可能な一貫性の場合、そのような可能性は存在しません。
地理分散アクティブ・アクティブ・システム
強い一貫性は、地理的な位置に関係なく、すべてのノードにわたって最新のデータを必要とするアプリケーションにとって極めて重要です。
よくあるケースは、個人間の少額の現金消費者支払いです。
ある人から別の人への支払いが正常に処理されると、この状態を永久に維持する必要があります。
このような状況で一般的な要件は、地理的に分散したサイト(数千マイル離れている)に拠点を置く単一のデータベースシステムの2つ以上のコンポーネントがトランザクションを共同でコミットすること、つまり、トランザクションがコミットされた場合に、このトランザクション状態が地理的に分散したすべてのサイトで利用可能になることです。
このセクションでは、ロスターベースの強い一貫性アルゴリズムによって地理分散トランザクションがどのように効果的に処理されるかについて、距離を超えたシームレスな運用を保証する技術と戦略に焦点を当てて掘り下げていきます。
最新の地理分散データベースでは、同期および非同期のアクティブ・アクティブ・システムの両方をサポートする必要があります。
この二重のアプローチにより、異なる地域間でのデータの複製方法やアクセス方法に柔軟性がもたらされます。
同期システムでは、トランザクションは即座にすべてのノードにレプリケートされ、リアルタイムで即時の強い一貫性が保証されます。
任意の時点で、各データはそれを共有するすべてのレプリカ間で同一です(さもなければ書き込み操作はコミットされない)。
対照的に、非同期システムはレプリケーションに多少の遅延を許容するため、強い一貫性が重要な要件ではないシナリオでは効果的です。
Aerospikeはこの2つのモデルをサポートしています。
強い一貫性を持つ同期アクティブ-アクティブはマルチサイトクラスタリング(MSC)と名付けられ、非同期アクティブ-アクティブはクロスデータセンターレプリケーション(XDR)と名付けられています。
この柔軟性により、Aerospikeは幅広いユースケースとパフォーマンスニーズに対応することができます。
地理的に分散されたトランザクションの管理とは、一貫性、可用性、パフォーマンスのバランスを取ることです。
ロスターベースアプローチの活用、リード・ワン、ライト・オール・スキームの採用、調整可能な一貫性の提供、同期および非同期システムのサポート、分散された強い一貫性を持つクラスタの可用性の限界への挑戦により、当社のデータベース・テクノロジーは、世界中のトランザクションの効率的かつ効果的な処理を保証します。
これらの戦略は、今日の相互接続された世界において不可欠なデータの完全性とシステムの回復力を維持する上で極めて重要です。
最新の分散データベースで未来を切り開く
ここまで、スケールアウトとスケールアップ、高いパフォーマンスと可用性を備えた強い一貫性の実装、地理分散トランザクションの習得など、最新の分散データベースの要点を解説してきましたが、データマネジメントの状況が急速に進化していることは明らかです。
これらの柱は単なる技術的な進歩ではなく、相互接続が進む世界におけるデータ課題へのアプローチ方法の転換を意味しています。
一歩先を目指す企業にとって、最新の分散型データベースの導入はもはや単なるオプションではなく、必要不可欠なものとなっています。
それは、簡単に拡張できて、世界中で正確にデータを処理し、圧倒的なスピードで情報を処理するシステムを採用することです。
イノベーションと実用性が融合することで、データインフラは堅牢であるだけでなく、インテリジェントで将来性のあるものになります。