要求の高いアドテク分野では既に広く利用されているAerospikeですが、最近は、リアルタイムのミッション・クリティカルな処理が必須の金融業、eコマース、通信業、インターネット販売といった他の業界にも展開をしています。その結果、新たな要件が必要となりました。例えば、金融業では、入力データを一群の条件(述語)でフィルタリングする必要があります。そのため、Aerospikeはその原点であるキー・バリュー・ストアを超えて、述語フィルタリングのような機能を追加し、このような企業の幅広いユースケースに適応できるようにしています。

Aerospikeのバージョン3.12のリリースをアナウンスさせていただきます。このバージョンでは、高スケーラビリティと高パフォーマンスのデータベースをご提供するという弊社の最重要ミッションをさらに推し進めています。イン・データベース・フィルタリングのような興味深い機能や、ご要望の多かった運用に関する機能、スケーラビリティの向上、実績ある高パフォーマンスのさらなる最適化を行っています。

イン・データベース・フィルタリング

Aerospikeは、キー・バリューのアクセスを高い一貫性と高パフォーマンスで提供しつつ、そのクエリとスキャンのサービスは、保守や分析に必要な様々な機能を提供しています。この機能を拡張するため、Aerospikeは今回、データベースの主要内部コンポーネントとして、インメモリ・フィルタリングを実装し、より高度な分析に対応できるようにしました。

この要求の高かった機能では、任意の表現を書くことができ、個々の列の内容を基に、クエリやスキャンの結果をフィルタリングすることができます。この表現は、高速化のため、C言語で実行されます。

この機能への最初のプログラミング・インターフェイスは、基本的な内部APIであり、低レベルのネットワーク・プロトコルを表現したものですが、詳細は、PredExp Javaに記載されています。弊社では、より容易な高レベルなクエリ・インターフェイスをご提供すべく開発を進めていますが、この機能を今すぐ使いたい開発者の方のために、まずはご提供することを優先しました。

「直近で変更されたデータ」とか「もうすぐ有効期限が切れるデータ」といったメタデータ操作に関する大きなスピード向上を見ることができると思います。しかし、対象操作の複雑さや潜在的なネットワークのボトルネック等が速度に大きく影響を及ぼします。それゆえ、単純な操作の組み合わせが倍以上速い結果を出すことがあり得ますし、より複雑な操作の場合はより大きな差となるかもしれません。

一方、フィルタでは、Luaを学ぶ必要もなく、プログラミングしたり、デバッグしたり、管理したり、ユーザ定義関数(UDF)をデプロイする必要もありません。サポートされるフィルタデータは、そのレコードが直近で書き込まれたのはいつか、というようなメタデータ、個々のbinの値、リストやセット内のデータを含みます。操作には、標準の等式、不等式、また、ANDやORの論理演算、正規表現が使用可能です。

このコアとなる機能を開発することは、Aerospikeは、高パフォーマンスのトランザクション解析のためのさらなる柔軟性を提供する重要なステップとなりました。この機能は、直ちに、Community Edition (CE)とEnterprise Edition (EE)の両方で、正式リリース(GA)となります。

CPUピニングとNUMA拡張によるパフォーマンス最適化

Aerospikeは、データ位置とCPUピニングに関する最適化により、Community Edition (CE)とEnterprise Edition (EE)の両方で、最高速のデータベースであることをこれからも継続していこうと考えています。これらの変化は、データベースのパフォーマンスがストレージに依存しない、DRAMによる設定を対象としています。

シンプルに、新しい“auto-pin” configurationを利用することにより、パフォーマンスは、10%から45%、向上します。この機能は、Aerospike’s 3.11 versionで導入された“sprigs”機能による、DRAMインデックスのためのメモリ・バス・バンド幅の利用を大幅に削減したことと関連があります。

auto-pin設定変数を“cpu”とすることで、サーバのネットワーク・インタラプトは、そのポートを使うスレッドになるように、同じコアに行くように紐づけられます。このことは、Aerospikeがそのサーバ上の唯一のプロセスである限り、さらにパフォーマンスの貢献に寄与します。auto-pin変数は、“numa”とすることも可能であり、さらなるパフォーマンスの向上が期待されます;ただし、この設定は、ラック・アウェアネス設定と共に使う場合は正しい信頼性保証の観点から注意が必要です。この設定をご利用になりたい場合、弊社サポートにコンタクトすることをお薦めします。

スケール・アップの向上

新しいデバイスや高密度RAM構成をサポートするため、1サーバ上の1つのnamespaceのオブジェクト数の制限を40億件から320億件に拡張しました。その結果、各namespaceは、各サーバ上の2TBのDRAMを使うことができるようになりました。

この機能は、弊社の大規模ユーザからのご要望であり、そのユーザはnamespace当たり40億件の制限を回避するため、複数のnamespaceを使っていました。このサーバ当たり320億件という新しい制限で、クラスタが128ノード、リプリケーション・ファクタが2(各レコードがクラスタ内に2つ保持されている)の場合、namespace当たり2兆個のレコードが保持できることになります。

この機能は、Aerospike Enterprise Editionでご利用可能です。

NamespaceとSetのデータ削除

最近、ご要望の高い新機能の一つは、個々のSetやNamespaceからデータを迅速に削除するものでした。実際、このような機能は、多くの適用分野があると思われます。これまでも、スキャンと削除のAPIを用いて実現は出来ていましたが、この方法は遅く、また、面倒な作業でもありました。

この3.12リリースでは、Community EditionとEnterprise Editionの両方において、SetとNamespaceのデータ削除は、単一の管理コマンド(asinfo)か単一のAPIコールで、迅速に効率的に行うことができるようになりました。これらのコールは、DRAM上のインデックスのエントリを削除し、さらに、Enterprise Editionでは、SMD (System Meta Data)サブシステムにエントリを追加し、その結果、全リスタート時点でも、それらのデータは復活しません。

このAPIと‘asinfo’コマンドは、オプションでタイムスタンプを付加することができます。これにより、ある時間幅内で更新されたデータを削除することが可能となります。時刻に関する操作ではいつものことですが、データベースの時刻合わせは十分な精度でなされていることをご確認ください。

差分バックアップとリストア

Aerospikeは、差分バックアップとリストアを、Community EditionとEnterprise Editionの双方でサポートしました。Aerospike server v3.12で導入されたフィルタリング機能により、ある時刻以降で変更されたレコードのみ、バックアップすることが可能となりました。この機能の詳細は、こちらをご覧ください。バックアップ時の新たな“data filtering options”では、時間帯を指定することが出来るようになりました。これまで通り、バックアップしたいbin、set、namespace等に対して、フィルタリング・オプションを指定することが可能です。

この機能では、タイムスタンプを利用するので、ご使用のサーバの時刻合わせの精度に依存します。Aerospike自身では、時刻同期の機能は有していないため、業界標準のntpdや同様のものを設定し、維持する必要があります。バックアップ・ツールが稼働するサーバの時刻も同期している必要があります。

この機能をサポートすることにより、ほとんどの商用システムにおいて、スケールアップ、スケールアウトの両方で、その度毎のバックアップは現実的ではないということを認識するに至りました。今後は、バックアップをより頻繁に行うことになるものと思っております。

Aerospike Management Console (AMC) v4.0

Aerospike Management Console (AMC)は、Aerospikeクラスタをモニターし、管理するためのウェブ・ベースのツールです。クラスタの現在のステイタスをライブで更新できたり、スループット、ストレージの利用利用率、クラスタの設定を一目で見ることができます。

厳密には、Aerospike Server v3.12の一部ではありませんが、このAMC v4.0のリリースは、3.12と同じタイミングとなりました。AMCの再構築の記念でもあり、このブログで触れさせていただきました。AMC version 4.0は、Goで書かれており、性能や安定性の向上が図られています。より少ないメモリで動作し、ルート権限以外で設定でき使用できるためより容易になり、データベース・ノードに対して厳密に単一の接続を使用します。その結果、より容易に素早くデプロイでき、大規模なAerospikeクラスタを扱うことができます。新たな機能としては、下記ができるようになりました。

  • 基本のHTTP認証が可能(CEと EE)。
  • 常に監視対象となるクラスタを設定可能(CEとEE)。
  • TLS対応のセキュアなAerospikeクラスタに接続可能(EEのみ)。
  • ブラウザを閉じた後でも、通知を保管し、閲覧することが可能(EEのみ)。
  • Aerospikeクラスタのアラートをメールで送信可能(EEのみ)。

リマインダ:Large Data Type (LDT)は廃止

Large Data Type (LTD)機能は、Community EditionとEnterprise Editionの両方で廃止され、将来のリリースで削除されます。そのため、LTD機能を他の方法に移行してください。移行に関するアドバイスが必要であれば、弊社にご連絡ください。

他の改善やバグフィックス

3.12リリースでは、下記の改善がなされています。

  • リークの改善:クエリにおけるサーバ・ファイル・デスクリプタのリークの改善、データ・マイグレーション中のメモリ・リークの改善。
  • クラスタ内メッセージ通信の改善:制御、トランザクション、マイグレーション等のメッセージ・タイプの配送を分離し、より信頼性の高いメッセージは配信を行います。
  • JavaとCのクライアントにおけるPredExpフィルタAPIの実装
  • Aerospike Adminの新バージョン(Aerospikeユーザの方がクラスタの統計量を見るためのツール):Asadm v0.1.8健全性確認の機能が実装されました。

より詳細な情報は、v3.12 release notesと、v3.12 toolsのリリース・ノートをご参照ください。

次のリリースでは?

次のリリースでは、いくつかの新しい機能を追加する予定です。下記は予告としてご覧ください(ただし、いつもの通り、コミットではありません)。

  • 大規模クラスタやパブリック・クラウド環境でのより高い安定性のためのPaxosクラスタリング・アルゴリズムの向上
  • ダウンタイム無しのNamespaceの追加や削除

Aerospike 3.12をダウンロードするには、download pageにお進みください。

いつもと同様に、今後の改良と拡張のため、皆様のフィードバックをお待ちしております。皆様のご意見、アイデア、ご質問は、user forumにお願いします。また、Aerospikeユーザ・コミュニティに貢献すべく、Githubにイシューを登録したり、プル・リクエストを設定してください。