はじめに
AerospikeはNoSQLデータベースであり、キーバリュー、ドキュメント、グラフを扱える分散データベースです。
以下のページにも詳細を記載していますが、このページではよくある質問をまとめてみました。
Aerospikeの紹介
Aerospikeのアーキテクチャ
目次から知りたい情報を探して御覧ください。
Aerospikeとは
Aerospikeとはなんですか?
キーバリュー、ドキュメント(JSON)、グラフを扱える分散データベースです。
Aerospikeはソフトウェアですが、現在は様々なご利用環境を提供しています。
Aerospikeは有償ですか? 無償版はありますか?
Aerospikeは有償版であるEnterprise Edition(以降:EE)と無償版であるCommunity Edition(以降:CE)があります。
詳細は以下に記載していますが、大きな違いはデータ量、サーバ数、サポートの有無、一部機能の有無、オプション追加の可否です。
Enterprise EditionとCommunit Editionの違い
ご質問のある方は、こちらからお問い合わせください。
NoSQLデータベースについて
NoSQLデータベースとは?
NoSQLデータベースとは、Not Only SQLデータベースの略で、RDB(リレーショナル・データベース)とは異なる、データベースです。
データがリレーショナルではないため、複数サーバへの分散・複製が可能になります。
NoSQLデータベースのデータモデルは?
NoSQLといっても様々なデータモデルがあります。
キーバリュー、ドキュメント、グラフが特に多く利用されています。
キーバリューとはなんですか?
キーバリューとは
キーバリューとは、ユニークなキーに複数のバリューが設定されているデータベースのモデルです。

RDBとの違いは?
RDBと同じように見えますが、カラムの定義が不要であり、また、レコード毎にbinがすべて必要なわけではないなど、RDBより自由度が高いデータになります。
RDBのようにwhere文やjoinの利用などの使い方は得意ではなく、キーでのデータの取得が効率的に行える事を最優先に構成しています。
キーバリューのメリットは?
高速でのデータの読み込み・書き込み
キーでのデータの取得を効率的に行うことを優先して構成されているため、高速(低レイテンシ)でのデータの読み込み・書き込みが可能です。
複数サーバでのデータの分散・複製により、高可用性、高スループット、大量データ
レコード間の関係性を排除しているため、データを複数サーバに分散させ、また、一つのデータを複数レコードに複製することが可能になります。
複数サーバに分散・複製することにより、サーバが落ちても稼働しているサーバで稼働を続けることができます。また、サーバを増やすことで大量データを扱え、また、大量のアクセスにも対応できるようになります。
ただし、これにより一貫性が低いというデメリットが発生します。
キーバリューは何に使われますか?
そもそもキーバリューは、大量データの高速処理が必要なSNSのために開発されました。
SNS以外にもネット広告やゲームなど広く利用されています。
現在では、高速な処理のため金融系でも利用されています。
ドキュメントDBとはなんですか?
ドキュメントとは
JSONやXMLなど自由度の高い構成のデータを扱うデータベースです。
例えば製品や部品の情報など、画一化できない情報を扱うことができます。
特にJSONでは、ネストしたLIST、MAPの利用が可能であり、プログラムとの整合性もよく、JSONから各言語のデータ形式に変換が容易に行えます。

ドキュメント(JSON)DBのメリットは?
効率的なJSONデータの操作
JSONデータをテキストデータとしてデータベースに保存した場合には、JSONデータを操作するにはプログラムに読み込む必要があります。しかし、ドキュメントDBでは、JSONデータをプログラムに読み込むことなく操作が可能になるため、JSONデータが効率的に操作できます。
複数サーバでのデータの分散・複製により、高可用性、高スループット、大量データ
キーバリューと同様、複数サーバの分散・複製により、高可用性、高スループット、大量データに対応可能です。
ドキュメントDBは何に使われますか?
BOMなどの非構造・半構造なデータを扱うシステムで利用されています。
グラフDBとはなんですか?
グラフDBとは
データ同士のつながりを表現するグラフ構造に基づいてデータを格納するデータベースです。
RDBが苦手なデータ間の関係性をたどる操作を高速に処理することができます。

グラフDBのメリットは?
データの関係だけであればRDBでも表現できますが、RDBではデータの関係性を深くたどる操作は苦手なため、グラフDBが有用になります。
グラフDBは何に使われますか?
データの関係性を深くたどる操作が得意なため、不正検知やレコメンデータションなどで利用されています。
Aerospikeについて
Aerospikeの構成は?
サーバとクライアントの構成
Aerospikeは複数サーバで構成されます。
他のNoSQLデータベースでは複数種類で構成される場合がありますが、Aerospikeのサーバは1種類しかありません。
マスターサーバもなくシェアードナッシングであるため、サーバの台数は自由に構成することができます。
この複数サーバをあわせてクラスターと呼びます。

クライアントは、各種言語のAerospike Client Libraryを使用してAerospikeサーバにアクセスします。
Aerospikeクラスターの構成
Aerospikeのクラスターには、RDBのdatabaseにあたるnamespaceが複数あり、その中にtableにあたるset、rowにあたるRecord、columnにあたるbinがあります。

Aerospikeのデータの構成
キーバリュー、ドキュメント
ドキュメントDBはキーバリューのバリュー(bin)に入っており、他のドキュメントDBと違い、キーバリューとドキュメントを組み合わせて利用することができます。
グラフ(EEのみ)
グラフDBとして利用る場合は、Aerospikeクラスターをデータ保存用に利用し、Dockerで動作するAerospike Graph Serviceを起動し、クライアントアプリケーションからは、グラフ言語であるGremlinを使用してアクセスできます。

Aerospikeのメリットは?
高性能
Aerospike社が特許を持つ各種技術やC言語による開発などにより、低レイテンシ、高スループットをばらつきなく提供します。
低TCO
AerospikeはSSDを効率的に利用が可能で、データをメモリではなくSSDに保持していてもインメモリのNoSQLデータベース並みの性能を提供できます。
そのため、メモリ量を少なくでき、サーバ台数を減らす事ができます。
またAerosikeはサーバがシェアードナッシングであるため、サーバの増減と性能がリニアな関係であり無駄なくサーバを増加することができます。
以上によりサーバ台数を減らすことでTCOを低減できます。
管理工数の低減
Aerospikeはサーバの種類は1つしかなく、また、データの分散や複製についてもAerospikeが自動で行いますので、インストールや運用など、少ない工数で行えます。
高可用性
データの複製や再分散が自動で行われますので、複製数未満のサーバが停止してもデータが欠損せず、動作を続けることができます。
また、バージョンアップも1台ずつバージョンアップすることができますので、クラスターを停止する必要がありません。
強一貫性モード
金融系など一貫性が重要なサービスに対して、一貫性を高めたモードも提供しています。
複数レコードにわたるトランザクションもこのモードでは可能になります。
Aerospikeの利用
クラスターの利用方法は?
以下のご利用方法があります。(グラフについては後述します。ここではキーバリュー、ドキュメントの利用方法について説明します。)
Linuxのオンプレのサーバにインストールして利用する(EE,CE)
Linux環境にインストールしてご利用いただけます。
詳細はこちらを参照してください。
クラウドのインスタンスにインストールして利用する(EE,CE)
AWS、Azure、Google Cloudのインスタンスにインストールしてご利用いただけます。
Linux環境であれば、プライベートクラウドやその他のクラウドでもご利用いただけます。
Dockerで利用する(EE,CE)
Dockerを使って、macOS、Windowsでもご利用いただけます。
詳細はこちらを参照してください。
Kubernetesで利用する(EEのみ)
Kunernetesを使ってご利用いただけます。
詳細はこちらを参照してください。
DBaaS(Aerospike Cloud)で利用する(EEのみ)
Aerospikeが提供するDB as a ServiceであるAerospike Cloudでご利用いただけます。
詳細はこちらを参照してください。
ご質問のある方は、こちらからお問い合わせください。
Management Serviceで利用する(EEのみ)
利用する方のクラウドの環境でのAerospikeの運用をAerospike社にて代行するサービスです。
詳細はこちらを参照してください。
ご質問のある方は、こちらからお問い合わせください。
入手方法は?
オンプレやクラウドのインスタンスにインストールする場合は、以下よりダウンロードできます。
Community Editionのダウンロード
Enterprise Editionのダウンロード
インストール方法については、上記の利用方法は?をご確認ください。
クライアントの利用方法は?
Aerospikeの利用には、各種言語(C、Java、Go、C#、Python、Node.js、Ruby、Rust、PHP)に対応したClient Libraryを使用してアクセスします。
基本的な使用方法は、最初にAerospikeへのコネクションをオープンし、その後はそのコネクションに対して、put()、get()、delete()を行います。
さらに詳細な使用方法がありますが、基本この操作になります。
情報はどこにありますか?
こちらに日本語サイトがあり、お問い合わせも受け付けています。
こちらは本社の英語サイトです。ワールドワイドな情報を提供しています。
実際にインストールや開発を行う時に必要な情報はこちらにAerospikeのドキュメントがあります。(英語)
Aerospike社に問い合わせ、質問したい
こちらからお問い合わせください。日本語で対応いたしますので、お気軽にご連絡ください。
また、公開して良い質問であれば、この記事にコメントしてください。
