AEROSPIKE

お問い合わせ
< BLOGに戻る

伝統的なメモリの克服するか vs ストレージの妥協するか

  • Twitter
  • Facebook
  • Instagram
  • note
  • Qiita

何十年もの間、データベース業界は一見避けられないトレードオフに直面してきました。

メモリ(RAM)の速度を通じてパフォーマンスを優先すべきか。

それともハードディスクやソリッドステートドライブ(SSD)などのストレージソリューションを使用してコストとスケーラビリティを優先すべきか。

この課題は従来、スケーラブルなデータ管理システムを使用するリアルタイムアプリケーションの範囲と効率を制限してきました。

NoSQLデータベースソリューションは、不正防止やパーソナライズされたレコメンデーションエンジンなどの消費者向けアプリケーションにとって不可欠な高性能、低レイテンシ、高スループットの要求を満たすために、インメモリ技術に大きく依存してきました。

そして、このアプローチはNoSQLの最高のパフォーマンスが純粋なインメモリシステムと同義であるという認識につながることがよくありました。

本記事では、AerospikeのHybrid Memory Architecture™(HMA)に焦点を当て、解説します。

HMAは、メモリの速度とSSDの経済性とスケーラビリティの利点を提供することで、これらの従来の妥協点を超越する特許取得済みのソリューションです。

インメモリインデックス作成とSSDストレージへの直接的で効率的な操作を独自に組み合わせることで、大幅に低コストで迅速なデータ処理を可能にします。

また、大規模で高性能なワークロードをサポートするだけでなく、大規模な場合、同等のインメモリシステムと比較して最大80%低いコスト効率で実現します。

より多くのRAMは常に良いのか?速度とキャッシングの神話

メモリは本質的にストレージよりも高速です。

そのため、インメモリソリューションがシステムパフォーマンスを最高にする最良の方法であり、大量のメモリ使用量を持つキャッシングソリューションが次善の策であるという前提から始めるのは理にかなっています。

これらの考え方が実際にどの程度うまく機能するのか、見てみましょう。

マイクロ秒のレイテンシー:SSDの可能性

従来の回転ディスクは、SSDとは異なります。

主にその機械的な性質のため、リアルタイムアプリケーションに必要な予測可能なパフォーマンスを支えることはできませんでした。

まず、読み書きヘッドの物理的な動きとディスクの回転レイテンシが大きなレイテンシを引き起こすため、効率的に直接読み取りを行うことができません。

次に、機械的なヘッドは一度に一つの位置にしかないため、並列かつランダムな読み取りアクセスを効果的に処理することができず、同時に処理できる操作の速度と数が制限されます。

SSDはこれらの欠点を克服し、並列でランダムアクセス読み取りを可能にします。

したがって、リアルタイムアプリケーションを構築するためのRAMの実用的な代替手段となります。

SSDはランダムアクセス性能と並列データ処理に優れており、非常に高いスループットでデータへの直接読み取りアクセスを可能にします。

RAMのデータアクセス時間がナノ秒単位で測定されるのに対し、SSDのアクセス時間は顕著に高く、マイクロ秒単位です。

しかし、この差は通常サブミリ秒の読み取り時間を必要とするリアルタイムアプリケーションにとっては無関係です。

すべてのSSD操作は、RAMのナノ秒レベルのレイテンシと比較してマイクロ秒レベルのレイテンシを導入しますが、これらの小さな増分は全体的なアプリケーションのパフォーマンスに大きな影響を与えません。

効果的な並列処理により、1秒あたり数百万の操作でもこれらのRAM-SSDの差は蓄積されません。

その代わりに、ネットワークの遅延などローデータアクセス時間以外の要因が、全体的なシステムのレイテンシーにおいてはるかに大きな役割を果たします。

キャッシングは両方の利点を兼ね備えているのでは?

同様の誤解として、キャッシングアーキテクチャは完全に常駐するインメモリデータベースの次に良いもので、頻繁にアクセスされるデータにはRAMの低レイテンシを、残りのデータにはストレージの低コストをもたらすというものがあります。

キャッシングは、より大きく遅いデータストアから選択されたデータを、より高速なストレージメディアに保存して迅速にアクセスするプロセスです。

明確にしておくと、AerospikeのHMAはキャッシングアーキテクチャではありません。

すべてのデータはSSDに保存され、インデックスのみがRAMに存在します。

キャッシングのメリットは限定的で、特に高スループットで低レイテンシを要求するユースケースでは、さらなるレイテンシーを導入する可能性があります。

これらの環境では、通常「テールレイテンシー」が問題となり、データベーストランザクションの最も遅い5%、1%、または0.1%が不釣り合いに遅い応答時間となります。

1秒あたり数千または数百万のトランザクション(TPS)では、これらのP95、P99、P99.9の動作は実際にはかなり不満足であり、顧客体験の低下につながります。

キャッシュは最低レイテンシー(つまり最速)のトランザクションのレイテンシーを改善します。

しかし、これらの不利な事象を減らすことはなく、これらの事象と結果として生じるレイテンシーを増加させる可能性のある追加の複雑さを導入します。

さらに、インメモリキャッシュの障害は、アプリケーションに古いデータが提供されたり、最悪の場合、キャッシュが永続ストレージのデータから再構築されるまでデータが利用できなくなる可能性があります。

テールレイテンシー(オレンジの円)を縮小する唯一の方法は、ほぼすべてのリクエストがキャッシュメモリで見つかるという、非常に高いキャッシュヒット率を達成することです。

記事が示すように、99.9%のキャッシュヒット率でさえ、依然として顕著なレイテンシのスパイクが発生します。

このような高いキャッシュヒット率に近づく唯一の方法は、データの一部が決してアクセスされないか、データベース全体をメモリに格納することです。

高性能データベースにおけるSSDの認識された課題

インメモリセットアップもキャッシュメモリ構成も常に理想的ではなく、回転ディスクが高性能データベースの要求を満たせない理由を探ってきました。

対照的に、SSDは高性能データベースワークロードにとって優れたソリューションとして浮上し、1ミリ秒未満のレイテンシで1秒あたり数千から数百万の入出力操作(IOPS)を実行できます。

しかし、SSDを効果的に活用するには、いくつかの課題を克服する必要があります。

特に、

課題1: 特殊なファイルシステムハンドラがないと、SSDリクエストは複数のステップによって遅延する

課題2: SSDは頻繁な書き込みによる摩耗レベルの問題に直面し、特に高負荷の書き込み環境下では寿命が短くなる可能性がある

課題3: SSDのような永続的ストレージデバイスは、パフォーマンスを最適化するために定期的なデフラグメンテーションが必要。これはシステムの効率性に影響を与えないように慎重に管理する必要がある

Cベースのアーキテクチャが直接SSDアクセス、速度、並列性を可能に

Aerospikeは、SSDの能力を直接アクセスして完全に活用できるように、Linux用のSSD向けカスタムファイルシステムハンドラを導入しました。

これは、SSDの本来の強みであるランダムリード能力と並列性を活用するように微調整され、非常に高い読み取りスループットを提供します。

この設計により、AerospikeはSSDを生のデバイスとして扱うことができ、データ処理の速度と信頼性の両方を向上させています。

簡単に言えば、このアプローチによりAerospikeはAPIレイヤーではなく、ハードウェアとネイティブに通信できます。

これにより、SSDをファイルシステムではなく、非常に大きな並列メモリ空間として扱います。

ディスクからメモリのようなパフォーマンスを

AerospikeのHMAアプローチの主なメリットは、永続的ストレージへの読み取りと書き込み操作に予測可能な低レイテンシーを提供することです。

究極的に、これらの読み取り/書き込み操作が時間を要します。HMAではインデックスアクセスにディスクI/Oは発生しません。

これは、インデックスがメモリ内にあるためです。

データ読み取りの場合、アイテムがすでにメモリにキャッシュされていない場合(例:アイテムが最近読み取られたか書き込まれた場合)、AerospikeはSSDからデータを取得するための単一のI/Oを実行します。

SSDのI/Oの読み取りレイテンシは、ランダムアクセスにほとんどペナルティがないため、Aerospikeは読み取りと書き込みにサブミリ秒のレイテンシーでメモリのようなパフォーマンスを提供できます。

図2:他のデータベースはSSDにアクセスするために複数のステップを導入します

他のいくつかのデータベースシステムもSSDの利点を活用しようとしています。

しかし、図2が示すように、直接アクセスではなく、以下のようなバッファプールベースのストレージアーキテクチャに関わる複数のステップによって遅延が生じます。

  • 遅いオペレーティングシステム(OS)ファイルシステムを通じてアクセス要求を行い、
  • ページキャッシュにアクセスし、
  • ブロックインターフェースにアクセスし、
  • ファイルシステムインターフェースを通じてSSDにアクセスします。

ホットスポットを減らしSSDの寿命を延ばすための書き込み管理

SSDの摩耗レベルの課題に効果的に対処して寿命を延ばすために、Aerospikeはコピーオンライトやログ構造化ファイルへの大規模ブロック書き込みなど、複数の戦略を組み合わせて採用しています。

ログ構造化ファイルのメカニズムは、非常に高い書き込みスループットを可能にするだけでなく、摩耗レベリングの問題にも対処します。

‘コピーオンライト’とは、SSD上の同じブロックでデータを直接修正するのではなく、システムが新しいブロックに変更を書き込み、オブジェクトのインメモリインデックスエントリの参照を更新し、書き込みが成功するまで元のデータを保持することを意味します。

このアプローチは、SSD全体により均等に摩耗を分散させ、ホットスポットを避け、SSDのすべての領域が均一に摩耗することを保証します。

また、高性能データベース操作に不可欠なサブミリ秒の読み取りと書き込みレイテンシを維持します。

シームレスなデフラグメンテーションとSSDの最適化

SSDの寿命を最大化するためのこれらのステップ、特にログ構造化ファイルシステムとコピーオンライトメカニズムは、バックグラウンドデフラグメンテーションを通じた継続的な空間回収を必要とします。

これは、揮発性メモリではあまり問題にならないのに対し、SSDのような不揮発性ストレージでは一般的な要件です。

Aerospikeは、デフラグメンテーションが通常の操作と並行してシームレスに実行されるシステムを設計しました。

これにより、データベースの書き込みスループットに影響を与えることなく、実行時にブロックのタイムリーな回収が保証されます。

このアプローチでは、システムはブロックのフィルファクタ(つまり、有効なデータで埋められたブロックの量)を監視するマップを維持します。

フィルファクタが低すぎる(設定可能な値)場合、つまり使用されていない空間が多い場合、そのブロックはデフラグメンテーション対象としてフラグが立てられます。

デフラグメンテーションプロセスは、スパースデータを効率的に少数のブロックに統合し、有効なデータを書き込みバッファに移動します。

このバッファは、データがSSDに永続的に書き戻される前に一時的にデータを保持します。

Aerospikeは、通常のクライアントリクエスト用と、デフラグメンテーション中のデータ用の別々の書き込みバッファキューを使用することで、運用効率を向上させています。

システムを円滑に稼働させ、SSDの寿命を保つために、Aerospikeは利用可能なバッファ空間に基づいてデフラグメンテーションの速度を管理し、空の書き込みブロックを優先します。

この戦略により、ストレージ容量の最適な使用が確保され、時間の経過とともにSSDのパフォーマンスが維持されます。

高密度ノードの管理

Aerospike HMAの導入は、従来のインメモリアプローチのみに依存するセットアップの10分の1程度のサイズのクラスタで、サブミリ秒のレイテンシで1秒あたり数百万のトランザクションを達成します。

この効率性は、コスト削減、管理の簡素化、ノード障害の減少など、大きな利点をもたらします。

しかし、より少ないノードでこのような高いトランザクション率をサポートするには、各ノードが例外的な効率で動作する必要があります。

SSDは必要なストレージ密度を提供しますが、これらの高密度ノードを高性能に最適化するには、いくつかの重要な戦略が必要です。

これらの戦略により、各ノードが必要なスループットを提供し、低レイテンシを維持できるようになり、SSDの集中使用によって引き起こされる課題に効果的に対処します。

「ストライピング」と呼ばれる技術を使用してデータを複数のSSDに分割し、洗練されたハッシュ関数を使用することで、Aerospikeはデータがディスクとノード全体に均等に分散されることを保証します。

この方法は、単一のSSDがボトルネックになることを防ぎ、それによってシステム全体の効率性とパフォーマンスを向上させます。

異なるサイズの読み取りと書き込みブロック: これをさらに効果的にするために、Aerospikeは読み取りブロック(RBLOCKS)と書き込みブロック(WBLOCKS)に異なるサイズのデータユニットを使用します。

小さな読み取りブロック(128バイト)を設定することで、小さな量のデータの整理とアクセスが可能になり、2TBまでのSSD空間を効率的に使用します。

一方、大きなSSD書き込みブロック(1〜8MB)を設定することで、SSDの寿命とデータベースのパフォーマンスの両方を最適化する大きなデータ書き込みを確保します。

ハードウェアの最適化:ノード効率の向上

Aerospikeは、システムの運用効率を最大化することを目的とした複数のハードウェア最適化を通じて、ノードのパフォーマンスを大幅に向上させました:

CPUとNUMAピニング: 特定のプロセスやスレッドを特定のCPUやコアに専用化し、メモリアクセスをデータを必要とするCPUに密接に整列させる(NUMAピニング)ことで、Aerospikeはレイテンシを減少させ、スループットを最大化します。この方法により、各コアが完全に利用され、リソースの無駄を避け、データ処理を加速します。

ネットワークパフォーマンス向上のためのアプリケーションデバイスキュー(ADQ): ADQは、特定のアプリケーショントラフィックを専用のキューに割り当てることで、ネットワークトラフィック管理を最適化します。ADQの対象を絞ったキューイングにより、Aerospikeは競合を最小限に抑え、ネットワークトラフィックをより効率的に管理できます。この精密な制御により、ネットワークレイテンシが減少し、アプリケーションの出力トラフィックをレート制限することで、より予測可能なパフォーマンスが保証されます。

ネットワークとCPUの整列: Aerospikeは並列ネットワークキューを使用し、ネットワークリクエストを特定のCPUスレッドにマッピングすることで、ネットワーク処理とCPUアクティビティを整列させます。この整列により、ネットワークリクエストの処理が最適化され、ピーク負荷時のボトルネックが防止され、一貫したパフォーマンスが確保されます。

先進的なSSD技術の活用: PCIeやNVMeなどの最先端のSSD技術を組み込むことで、Aerospikeはそれらのより高速なデータアクセス速度と高いスループットを活用します。この適応は、システムの大量のデータを効率的に管理する能力を向上させるだけでなく、トランザクションの全体的な速度も向上させます。

理論を超えて:実世界での影響の実証

小規模なクラスタから大規模なネットワークまで、実世界のユースケースを検討すると、HMAアプローチによる巨大な効率性とパフォーマンスの向上が示されます。

以下の例は、多様な業界と導入規模をカバーしています。

Adjust

グローバルアプリマーケティングプラットフォームであるAdjustは、リアルタイムデータ処理が正確な分析と不正防止サービスの提供に不可欠な競争の激しいモバイル広告分野で事業を展開しています。

Aerospikeを採用する前、Adjustは40ノードのクラスタ環境を管理していましたが、会社の急速な成長とサービスのリアルタイム要求に対応するのに苦労していました。

AerospikeのHMAに移行することで、Adjustはインフラストラクチャをわずか6ノードに統合することができました。

このノード数の劇的な削減は、大幅なコスト削減と炭素排出量の削減につながり、同時にAdjustの運用とクライアントの成功に不可欠なリアルタイムのパフォーマンスを提供しています。

TransUnion

リスクおよび情報ソリューションのグローバルリーダーであるTransUnionは、リアルタイムの不正検出と信用リスク評価の複雑な要求を管理するための高性能データプラットフォームを必要としていました。

当初450ノードで構成されていた彼らのレガシーシステムは、スケーリングとパフォーマンス効率の課題に直面していましたが、Aerospikeに移行後は運用を60ノードにまで集約することに成功しました。

この大幅な削減は、運用コストの低減とエネルギー消費の削減をもたらしただけでなく、TransUnionが比類のないデータ処理速度を達成し、顧客にタイムリーで正確なリスク評価を提供する能力を向上させました。

Criteo

多国籍広告・マーケティング技術企業であるCriteoは、リアルタイムでパーソナライズされたオンライン広告を提供するために膨大な量のデータを活用しています。

このデータを効果的に管理することはCriteoにとって不可欠であり、大規模な高速処理が可能なデータベースソリューションが必要です。

当初3000ノードのセットアップで運用していた同社は、そのフットプリントを800ノードに削減しました。

さらに、この変更によってサーバー数が70%減少しただけでなく、エネルギー使用量と関連する炭素排出量も大幅に削減されました。

これらの効率性とパフォーマンス能力により、Criteoはリアルタイムでパーソナライズされた広告コンテンツを提供する優位性を維持し、スケーラビリティと環境の持続可能性が両立できることを証明できたのです。

これらのケーススタディは、HMA技術の驚異的で測定可能なメリットを示しています。

小規模なスタートアップから大企業まで、Aerospikeは比類のない効率性、持続可能性、スケーラビリティを提供し、データ管理の分野で可能なことの定義を変えています。

最適なデータベースパフォーマンスを解放

AerospikeのHMAは、RAMのインデックスとSSD上のデータを組み合わせることで、リアルタイムで高スループットのデータベースニーズに最適なソリューションを提供します。

このアプローチは、RAMの速度とSSDのスケーラビリティとコスト効率を活用し、従来のキャッシング戦略や高価な完全インメモリシステムに関連する制限を効果的に克服します。

Aerospikeのエンジニアリングの革新、例えば直接SSDアクセスや洗練されたデータ管理技術などにより、予測可能なパフォーマンスと耐久性を維持しながら、膨大なワークロードを効率的に処理することが保証されます。

運用コストと複雑さを削減することで、HMAは現代のデータベースアプリケーションにとって優れた選択肢となります。

効率性とスケーラビリティを再定義することで、Aerospikeの技術的進歩はデータベースアーキテクチャに関する時代遅れの概念に挑戦します。

データの需要が絶えず増加する世界で、Aerospikeは持続可能な成長が可能であることを実証しています。

私たちのアプローチは、現在の高性能ニーズを満たすだけでなく、将来の需要も予測し、Aerospikeがデータベース技術の最前線に留まることを保証します。

無料トライアルはこちら

PAGE TOP