AEROSPIKE

< BLOGに戻る

現代の分散データベースの要点をわかりやすくまとめてみた〜中編〜

2024.03.12分散データベース

こんにちは、エアロスパイクです。

 

3部にわたって、現代の分散データベースの要点について紹介しています。

 

前編では、水平スケールについてご紹介しました。

現代の分散データベースの要点をわかりやすくまとめてみた〜前編〜

 

本記事では、垂直スケールについてご紹介します。

 

垂直スケール: クラウドとハードウェアの最大活用

スケールアップ(垂直スケール)とは、より多くのデータ、接続、トランザクションを効率的に処理するために、個々のノードの能力を強化することを指します。

 

これは、各ノード内のプロセッサ、ストレージ、ネットワークの容量をあらゆる面で最大化することを意味します。

 

Aerospikeの垂直スケールへのアプローチは、特許取得済みのアルゴリズムを使用したソフトウェアとハードウェアの最適化の融合であり、各ノードが最大限のポテンシャルで動作することを保証します。

 

本記事では、これを実現する方法について詳しく説明します。

 

ハイブリッド・メモリー・アーキテクチャ(HMA): SSDをメモリとして活用

a three part diagram with red on left, light blue in center, and dark blue on the right

特許取得済のハイブリッド・メモリ・アーキテクチャ™(HMA)により、データをSSDに、インデックスのみをDRAMに配置

 

当社の特許技術であるハイブリッド・メモリ・アーキテクチャ™(HMA)は、垂直スケール戦略の要です。

 

このアプローチでは、ソリッド・ステート・ドライブ(SSD)で利用可能なダイレクト・ランダム・リード・アクセスを利用してミリ秒以下のリードを提供し、ログ構造化された書き込みプロセスを利用して書き込みレベリングの問題を回避し、ミリ秒以下の書き込みを提供します。

 

C言語で書かれたソフトウェアによって実現され、必要な場合にはオペレーティング・システムのファイル・システムをバイパスし、予測可能な低レイテンシーを実現します。

 

さらに、書き込みと読み出しは、複数のSSDドライブを使用して高度に並列化された方法で実行されるため、高いスループットと低レイテンシーの両方で読み取りと書き込み操作を実行することができます。

 

リアルタイムでサブミリ秒単位の読み書きを一律に提供するためには、他のデータベースシステムだとすべてのデータをメインメモリ(DRAM)に格納する必要があります。

 

その結果、ノードあたりのリアルタイム・データの保存量は比較的少なくなり(通常、DRAMの上限はノードあたり1TB)、クラスタ・サイズは数百から数千という巨大なものになってしまいます。

 

Aerospikeのシステムでは、HMAによってリアルタイムデータをSSDに保存し、そこから直接アクセスします。

 

そのため、ノードあたりのSSDストレージ容量が大きくなり(多数のドライブを使用して最大100TB)、Aerospikeのクラスタサイズは他のシステムのクラスタサイズの10倍(またはそれ以上)小さくなるのです。

 

そのコツは、処理側とネットワーク側の両方でパフォーマンスに大きな影響を与えることなく並列性を維持することです。

 

HMAはSSDをストレージ、高スループット、低レイテンシのオペレーションに最適化します。

 

これにより、高負荷の書き込みを処理しながら、負荷の高い読み込みを可能にします。

 

HMAの大きな利点の1つは、顧客の大規模なアプリケーション展開にかかる膨大なコストを削減できることです。

 

SSDをリアルタイムのデータストアとして活用することで、当社のシステムは顧客の総所有コスト(TCO)を最大80%以上まで大幅に削減することができます。

 

その結果、莫大なコスト削減と継続的な運用の簡素化(処理するサーバーの台数が減るため)の両方が実現します。

 

ノードあたりのトランザクションをスケールアップ

SSDに保存されたデータにリアルタイムでアクセスすると、ノードあたりリアルタイムでアクセスできるデータ量が10倍以上に増加します。

 

つまり、各ノードが1秒間に10倍以上のトランザクションを実行できる必要があるのです。

 

弊社は、それが可能なシステムを設計しました。

 

CPUとNUMAのピンニング: 処理効率の最大化

Aerospikeは、CPUピンニングやNUMAピンニングといった高度な技術を採用し、処理効率を最大化しています。

 

特定のプロセスまたはスレッドを特定のCPUまたはCPUコア(またはvCPU)に整列させ、これらのプロセスで使用されるメモリがアクセスするCPUにできるだけ近くなるようにします。

 

そうすることにより、システムはレイテンシを最小化し、各シングルノードに対して1秒あたりのトランザクションの非常に高いスループットを提供します。

 

このアプローチは、最新のマルチコアプロセッサを最大限に活用し、各コアが効果的かつ効率的に利用されることを保証します。

 

ネットワークからCPUへのアライメント データフローの合理化

ネットワーク処理とCPU処理の整合は、ノードあたりのトランザクションをスケールアップするもう一つの重要な側面です。

 

このシステムでは、並列ネットワークキューを使用し、該当する特定のCPUスレッドへのネットワークリクエスト間のアライメントを行うことで、ネットワークリクエストが効率的に適切なCPUにルーティングされるようにします。

 

このアライメントにより、ネットワーク処理の効率が向上し、高負荷状態でのボトルネックが解消され、ネットワーク操作がデータベース性能の制限要因にならないようにします。

 

Aerospikeでは、システムの垂直スケーリング機能を強化するために、ハードウェア技術の進歩を継続的に統合してきました。

 

PCIeやNVMeといったSSD技術の革新は、データアクセス速度の高速化とスループットの向上を実現します。

 

データベース・システムのアーキテクチャーは、こうした進歩を最大限に活用できるように設計されており、当社のデータベース・ソフトウェアがパフォーマンスを犠牲にすることなく、全体的にもノード単位でも、ますます大量のデータを処理できるようになっています。

 

垂直スケールに関して言えば、私たちのアプローチは各ノードの可能性を最大限に引き出すことです。

 

ハードウェアの最適化とインテリジェントなソフトウェア設計を組み合わせることで、各ノードがデータ処理の強豪となり、最

新のアプリケーションやビッグデータの要求に対応できるようにします。

 

この戦略はまた、デバイス・メーカーや主要なクラウド・プロバイダーが提供するハードウェア機能のその後の進歩を活用し続けることで、将来的にさらに優れたパフォーマンスと効率を約束します。

 

最も重要な点は、当社の垂直スケール・アプローチにより、リアルタイム・アプリケーションが必要とする予測可能なリアルタイム・パフォーマンス、高スケール、高可用性の要件を維持しながら、他のあらゆるインメモリ・データベース・システムと比較してノード(またはインスタンス)数を最大80%削減することで、お客様がコストを大幅に削減できることです。

 

 

ストレージの階層化: データストレージの最適化

当社のストレージ階層化のアプローチでは、DRAMからNVMe SSDまで、さまざまなストレージメディアをサポートし、それぞれが特定のパフォーマンス、ストレージ容量、コスト特性に合わせて選択されます。

 

1つのクラスタ内のデータは、例えばインメモリ(データとインデックスをDRAMに)、ハイブリッドメモリ(インデックスをDRAMに、データをフラッシュに)、インフラッシュ(データとインデックスをSSDに)といった異なるストレージ構成にマッピングできる別々のネームスペースに格納することができます。

 

ストレージの階層化 データ・ストレージの最適化

当社のストレージ階層化のアプローチでは、DRAMからNVMe SSDまで、さまざまなストレージメディアをサポートしており、それぞれが特定のパフォーマンス、ストレージ容量、コスト特性に合わせて選択されています。

 

1つのクラスタ内のデータは、例えばインメモリ(データとインデックスをDRAMに)、ハイブリッドメモリ(インデックスをDRAMに、データをフラッシュに)、インフラッシュ(データとインデックスをSSDに)といった異なるストレージ構成にマッピングできる別々のネームスペースに格納することができます。

a 3d bluish triangle with three bifurcations

SLAと規模の比較

 

選択されるメディアのタイプは、システム内のデータ量と、関連するビジネス・アプリケーションをサポートするために必要なパフォーマンスと可用性のサービス・レベル・アグリーメント(SLA)に依存することが多い。

 

データベースは、特定のアプリケーション要件に必要な最良の価格/パフォーマンスを得るために、さまざまなストレージ・メディア・レベルの間で最適化を可能にします。

  • リアルタイムのパフォーマンスを必要とする少量のデータ(1テラバイト未満)のアプリケーションの場合:インメモリ構成を使用し、すべてのデータとインデックスをDRAMに格納することで、最高の読み取り/書き込みパフォーマンスを実現できます。
  • 大量のデータ(数テラバイトからペタバイト)を扱うアプリケーションでリアルタイムの読み取り/書き込み性能が必要な場合:ハイブリッド・メモリ構成を使用し、データをSSDに格納し、インデックスをDRAMに保持することができます。
  • 大量のデータ(数テラバイトからペタバイト)を扱うアプリケーションの場合:比較的大きなインデックス・サイズであれば、フラッシュにインデックスを格納するコストは、メモリに格納するよりも大幅に低くなり、ミリ秒以下のレイテンシを必要とせず、膨大な書き込みスループットを必要としません。データとインデックスをSSDに格納することもできます。

 

上記のオプションの間には性能の違いがあるでしょう。

 

しかし、データとインデックスをSSDに保存することで、ノード数と総運用コスト(TCO)をほぼ80%削減できるというコストメリットと合わせて評価する必要があります。

 

このアプローチでは、パフォーマンス、容量、コストのバランスをとりながら、最適なストレージ層にデータを保存することができるので、データベースのデータ量が増加しても、導入コストを過度に増加させることなく、パフォーマンスと可用性のSLAを維持することが可能です。

  • Twitter
  • Facebook
  • Instagram
  • note
  • Qiita
PAGE TOP