最適なパフォーマンスで動作する分散型データベース システムの特徴とは? Aerospike の CTO 兼創設者が解説します
分散型データベースを管理する場合、ミッションクリティカルな要点の概要を説明することから始めることが重要です。
すべてのトランザクション、読み取り、書き込みがリアルタイムであることを望まない人なんていないのではないしょうか。
多くの人にとって、リアルタイムの要素が最も重要です。
では、高いスループットと低レイテンシーが交渉の余地のない場合に集中すべき領域は何でしょうか?
Aerospike の CTO 兼創設者である Srini Srinivasan (以下スリーニ)は、ウェビナー「最新の分散型データベースの 4 つの本質」で、データベース管理の中核となる原則を概説しています。
これら 4 つの原則を検討する前に、いくつかの概念を定義しましょう。
データベース管理とは
データベース管理とは、データの編成、保存、取得です。
これには、保存されたデータから最大限の価値を引き出すための設計、実装、サポートが含まれます。
データベース管理システム (DBMS) の特定のタイプの 1 つは、分散型データベース管理システム(DDBMS) です。
この場合、データベースはさまざまな場所のさまざまなクラスター ノードにデータを配置し、すべてを 1 つの共有ネットワークに接続します。
ただし、分散データベースの運用には独自の課題が伴います。
データがさまざまな地理的位置にある複数のノードに分散していると、必然的に複雑さが加わり、CAP 定理の基礎である一貫性、可用性、分割耐性の間のバランスを見つけることが主要な目標になります。
分散型システムにおけるデータベース管理
スリーニは、完全に動作するリアルタイム DDBMS に必要な 4 つの要素をどのように分類しているかを示します。
スケールアウト
最も単純な用語で言えば、データベースのスケールアウト、つまり水平スケーリングとは、クラスターに追加のノードをプロビジョニングすることです。
「Aerospike では、シェアードナッシング データベース クラスターを構築することでこの問題に取り組みました」とスリーニは言います。
「このようなクラスターは基本的に多数のノードで構成されており、各ノードの機能、つまり特定のノードで利用可能なストレージ、CPU、ネットワーク容量の量は同一です。また、その中で実行されるコードの点でも同一であるため、単一のマスターは存在しません。基本的に、これはすべてのノードが同一の分散システムであり、分散データベースの実行に必要なさまざまなタスクを実行できます。さらに、単一障害点がないため、システムはホットスポットなしで実行できます。」
セッションでは、スリーニが動的クラスター管理とAerospike スマート クライアントについてさらに詳しく説明しいています。
後者の機能は、自動ロード バランシングを提供し、クラスター内のすべてのノードにデータとトラフィックを分散します。
スケールアップする
「スケールアップとは、ノード内で利用可能な処理ストレージとネットワーク容量のあらゆる側面を活用するシステムの能力です」とスリニ氏はプレゼンテーションで述べています。
スリーニは、スケールアップ、つまり垂直方向のスケーリングの鍵はソリッド ステート ドライブ (SSD) を活用することだと主張しています。
SSD は、フラッシュ メモリを使用して永続データを保存する最新のコンピュータ ストレージです。
これらは、読み取りと書き込みの遅延がミリ秒未満であるリアルタイム データ アクセスに不可欠になっています。
「すべてのデータを SSD に保存するだけで、ノードごとにリアルタイム アクセスに利用できるデータ量が 10 倍、あるいはそれ以上増加します」と彼は言います。
そして、このデータベース管理戦略がどのようにページ キャッシュへの依存を回避し、ノードごとのデータ アクセシビリティを大幅に向上させるかを説明し続けています。
Aerospike は、2 つの理由により、事実上すべてのリアルタイム分散システムよりも優れたスケールアップを独自に実現することができます。
1 つ目は、ハイブリッド メモリ アーキテクチャです。
これは、データとインデックスをすべてメモリ内で管理するか、メモリ内でインデックスを作成し、データを SSD に保存しながら DRAM と同様のパフォーマンスを実現するという柔軟性を提供します。
後者は、マルチスレッド化された CPU での効率であり、より大きなスケールアップのヘッドルームを可能にします。
強力な一貫性と高可用性
分散型データベース システムでは、強い整合性は、すべてのノードにわたるすべてのデータが同期されて最新の情報が反映されることを保証する特性です。
つまり、任意のノードからの各読み取り操作では、常に最新の書き込みが生成される必要があります。
スリーニは、分散型トランザクションを最適化するための強力な機能として強整合性を取り上げ、分散データがこれら 3 つのうち 2 つだけで最大化できるという CAP 定理に基づいて、Aerospike が可用性を犠牲にしないためにロスターベースの強整合性スキームをどのように使用しているかを強調しています。
重要なのは、一貫性、可用性、およびパーティション耐性です。
私たちのドキュメントでは、ノードの名簿を「定常状態のクラスターの一部であるノードのリスト」と定義しています。
すべてのロスターノードが存在し、すべてのパーティションが最新の場合、クラスターは定常状態にあり、最適なパフォーマンスを提供します。
強力な整合性の場合、これらのパーティションはロスターマスターおよびロスターレプリカと呼ばれます。
スリーニは、Aerospike が同期書き込みロジックを実行する方法や、高可用性のためのラック認識をサポートする方法など、これらの概念をさらに詳しく説明しています。
彼はまた、強い整合性に対する Aerospike 名簿ベースのアプローチが Raft システムに比べてどのようにコストを節約するのかについても明確に説明しています。
一貫性についてさらに詳しく知りたい場合は、ホワイトペーパー「Aerospike Enterprise Edition におけるデータの一貫性の探索」をご参考ください。
アクティブ/アクティブ システムの地理的分散
最後に、スリーニは、マルチサイト クラスタ向けのリアルタイム アクティブ/アクティブ ソリューションを説明しています。
グローバル トランザクションを実行するアプリケーションには、強力な一貫性のあるトランザクションを大規模に実行できる地理的に分散されたデータベースが必要です。
同期アクティブ/アクティブ レプリケーションは、データ損失なくこれを実現するのに役立ちます。
「ラック全体が故障した場合でも」とスリーニは、グローバルに分散された 3 つのラックを使用した例で説明します。
「または、スプリット ブレイン モードまたはメンテナンスのために停止した場合でも、可用性と強力な一貫性の両方を備えた状態で稼働し続ける 2 つのラックを用意できます。システム内に競合はありません。」言い換えれば、ラックは、オペレーターの介入なしで、ダウンして再結合することができます。
Aerospike Cross Datacenter Replication (XDR)の詳細については、グローバル データ ハブのレプリケーションに関するソリューション概要で、地理的に離れたクラスター間での非同期データ レプリケーションの動的制御を提供します。
Aerospike を使用して分散型データベース管理ワークフローを最適化する
分散型システムで一貫性、可用性、およびパーティション耐性の間の適切なバランスをとるには、綿密なデータベース管理と可観測性が必要です。
必要に応じて分散データベースに水平および垂直スケーリングを適切に装備し、分散トランザクションを強化するためのアクティブ/アクティブ システムの強力な整合性と地理的分散を適切に装備しないと、アプリケーションに悪影響を及ぼす可能性があります。
このような場合、重要なサービス レベル アグリーメント (SLA) が満たされないままとなり、システムのパフォーマンスと全体的な信頼性に影響を与える可能性があります。
マルチテナント、マルチクラスター展開を設定して監視する準備はできていますか?
Aerospike の可観測性と管理スタックを探索して、構成の簡素化、書き込み停止の診断、複雑な展開における障害状態の分離などを行います。詳細については、ブログ「新しい Aerospike Observability Stack で重要なものを管理する」をご参考ください。
このブログは、2023年12月13日の「Modern database management in distributed systems」の翻訳です。