Hybrid Memory Architecture

ハイブリッド・メモリ・アーキテクチャ

Aerospikeの特徴の一つとして、フラッシュ・ストレージ(SSD/PCIe/NVMe)を一台のサーバ内で並列に利用することが可能であり、高い書き込みスループット(100K〜1M TPS)配下でミリ秒以下のレイテンシを実現しています。SSDを最適利用することで1台に大量のデータを保持することができるようになり、RAMのみを使うシステムと比べ、TCOを5分の1以下にすることが可能となりました。


Aerospikeのハイブリッド・メモリ・アーキテクチャは、インデックスをメモリ(揮発性)に、データをSSDストレージ(不揮発性)に保持し、読み込みの際には、ディスクから直接、読み込みます。インデックスへのアクセスは、ディスクI/Oは発生しないため、パフォーマンスは容易に予測可能です。なぜなら、SSDから読み出す際のレイテンシは、SSDに対するランダム・アクセスもシーケンシャル・アクセスも同じため、結果として、パフォーマンスは一定となります。このハイブリッド・モデルでは、インデックスを再構築するためのスキャンが不要となります。

このランダム読み込み方法では、SSDに対する書き込みの際にも使われます。SSDの特定の場所のみを使うことを避けるため、Aerospikeでは、データ更新の際に同じ場所を使いません。その代わりに、更新の際は、大きなブロック書き込みを使って、別な場所に書き込みます。その結果、SSDを均一に使うことになり、デバイスの寿命を延ばすことになります。Aerospikeは、オペレーティング・システムが提供するファイル・システムを使わずに、フラッシュ・デバイスを直接、ブロック・デバイスとして使い、独自のデータ形式で書き込んでいます。

データ更新の際には、以前のレコードを読み出し、更新し、最新のデータを書き込みバッファに書き出します。そのバッファが満杯になった時に、ストレージに書き込まれます。

hma1

図1. ストレージ配置

読み込み単位:RBLOCKSは128バイトです。これにより、アドレス可能な空間を広げることができ、デバイス当たり2TBを保持することが可能です。書き込み単位:WBLOCKは設定可能で、通常は1MBであり、デバイスの寿命を最適化しています。

Aerospikeは、これらのデバイスを複数、使うことができ、堅牢なハッシュ関数により、データをストライピングして保持します。その結果、データに対する並列アクセスを可能とし、ホットスポットを避けることができます。

SSDはDRAMに比べて、一桁以上のデータを保持できます。デバイスのIOPSは継続的に増加しています。例えば、NVMeは、現在、デバイス当たり100K IOPSの性能を有しています。20台から30台のAerospikeクラスタを運用している多くのシステムではこの構成をとっており、数百万TPS、ミリ秒以下のレイテンシにて24時間365日、稼働し続けています。

X