Aerospikeの紹介

# はじめに
Aerospikeは、キー・バリュー型のNoSQLデータベースとして、提供が開始されました。
そして現在、このNoSQLデータベースを核に、リアルタイムデータプラットフォームとして拡張を続けています。
これにより、Aerospikeは高性能はNoSQLデータベースとしての利用から、高い一貫性を求める金融システムでの利用まで、幅広く使われています。
拡張を続けるAerospikeとは何なのか、詳しく知っていただき、触れていただくきっかけになれば幸いです。

:::note
無償のエディションや、有償版の評価ライセンス（制限あり）もありますので、気軽にご利用いただけます。
:::

# Aerospikeとは
Aerospikeは、アメリカのマウンテンビューにあるAerospike社が提供する製品、ソリューションおよびサービスを表す名称です。
このAerospikeの核となるのは、リアルタイム・マルチモデルNoSQLデータベースであるAerospike Database 6です。
ここでは、Aerospike Database 6を中心に、Aerospikeを紹介します。

Aerospike社サイト
https://aerospike.com/
Aerosike日本語サイト
https://aerospike.com/jp/home/

:::note
リアルタイム・マルチモデルNoSQLデータベースって？
簡単に書くと **『超高速で、様々なデータモデルが、様々な構成（メモリ、SSD等）で使えるNoSQLデータベース』** です。
:::

# Aerospikeの歴史
Aerospikeの歴史は以下の通りです。
- 2010年：キー・バリュー型のNoSQLデータベースソフトウェアとして、citrusleafの名前で提供開始。（バージョン２以前）
- 2012年：名称をAerospikeに変更。（バージョン3以降）
- 2014年：無償のオープンソース版のAerospike Server Community Editionの提供を開始。（有償版はAerospike Server Enterprise Edition）
- 2020年〜：NoSQLデータベースを核とし、以下の製品、ソリューション、サービスを提供。
    - [リアルタイムデータプラットフォーム](https://aerospike.com/products/real-time-data-platform/)
    - [リアルタイム・マルチモデルNoSQLデータベース](https://aerospike.com/products/database/)
    - [SQL analytics powered by Starbust](https://aerospike.com/products/sql/)
    - [Document Data Services](https://aerospike.com/products/document-data-services/)
    - [Aerospike Cloud: DBaaS](https://aerospike.com/products/database-as-a-service-dbaas/)
    - [Cloud Managed Service](https://aerospike.com/products/cloud-managed-service/)
- 2022年：バージョン6を提供中

:::note
要約すると、Aerospikeはキー・バリュー型のNoSQLデータベース・ソフトウェアとして提供開始し、その後、機能や関連製品を増やし、ソリューションとクラウド上のサービスの提供を始めています。
:::

# Aerospike Database 6 の特徴
ここでは、Aerospikeの核であるAerospike Database 6 の特徴を説明します。
### NoSQLデータベースとは
まず、NoSQLデータベース(以下、NoSQL)とは、リレーショナル・データベース(以下、RDB)以外のデータベースを指すもので、スキーマレスなデータベースと表すこともできます。
参考：
Wikipedia https://ja.wikipedia.org/wiki/NoSQL
AWS https://aws.amazon.com/jp/nosql/

主要なNoSQLのモデルには、以下のようなものがあります。
- キー・バリュー型
- ソート済みカラム指向
- ドキュメント指向
- グラフ指向

Aerospikeは、キー・バリュー型であり、バリューとして文字列、数値、MAP、List等を扱うカラムを持ちます。また、現在ではドキュメント(JSON)も扱えます。グラフへの対応も進行中です。

### NoSQLとRDBの比較
一般的なNoSQLとRDBを比較して、NoSQLの特徴を示します。
| 比較項目 | NoSQL | RDB |
|:-:|:-:|:-:|
| レイテンシ | ◎ 低(高速) | △ 高(低速) |
| スループット | ◎ 多 | ○ |
| 分散 | ◎ 分散が前提 | △ |
| 大量データ | ◎ 大量データが前提 | △ |
| スケーラビリティ | ◎ スケールアウト | ○ スケールアップ |
| アベイラビリティ | ◎ 重視  | △ ハードウェアで対応 |
| 一貫性 | × or △ | ◎ 一貫性を保証 |
| トランザクション | × or △ | ◎ |
| 複数テーブルの連携 | × or △ | ◎ |
| 検索(クエリー) | △ | ◎ |

:::note
NoSQLは、大量データおよびデータ増加が見込まれ、高速、大量アクセスの対応が必要なシステムに向いていますが、一貫性やトランザクションが必須の場合には向いていません。
:::

:::note warn
それぞれ傾向であり、個々のソフトウェアでは当てはまらない場合があります。
:::

したがって、それぞれの対象となるシステムは、以下のようになります。
- リレーショナルデータベース
    - 一貫性を要求されるシステム
        - 金融処理
    - 検索性能が要求されるシステム
        - ECサイト
- NoSQLデータベース
    - 高速性能が要求されるシステム
        - ネット広告
        - 不正検知システム
    - 大量データの処理が必要なシステム
        - IoT
        - データ分析
        - AI
       
### Aerospikeと一般的なNoSQLの比較
以下がNoSQLデータベースの代表的なものです。
- Apache Cassandra
- Couchbase
- MongoDB
- Redis
- DynamoDB

Aerospikeは、開発当初より他のNoSQLデータベースの問題点を踏まえて開発されています。
そのため、他のNoSQLデータベースより性能に勝っている場合が多くあります。
次に、Aerospikeと他のNoSQLとを比較して、Aerospikeの特徴をあげます。

| 比較項目 | Aerospikeの特徴 |
|:-:|:-:|
| レイテンシ／スループット | クライアントからのアクセス方法、サーバでのFlashの使用方法など、各種の技術により他のNoSQLより性能向上します。Cassandraからの移行でサーバ数を大幅に減少させた実績が多くあります。 |
| スケーラビリティ | サーバの増加によるオーバーヘッドが少ないため、スケールアウトによりスループットおよびデータ量がリニアに増加します。Petaバイトを想定して設計しています。他のNoSQLではスケールアウトを行った場合にリニアに性能向上しない場合があります。 |
| 性能の安定 | C言語で開発されており、性能の偏差が小さく、サービスレベルの目安をつけることが可能です。(レイテンシの目安は数ミリ秒以内で、多くが１ミリ秒未満) |
| データ分散 | データは、キーにより自動的に分散されるため、サーバ追加・停止時であっても利用者はデータの分散を意識する必要はありません。データの複製数は設定にて指定できます。 |
| 一貫性 | 一貫性を強化した、Strong Consistencyモードを提供します。他のNoSQLでは提供されていないものが多いです。 |
| アーキテクチャ | インデックスとデータを、メモリ、Persistenceメモリ、Flash(SSD)にデータの特性に合わせて保存することができます。Flashにデータを保存できるため、メモリに比べて安価に大量データを保存することができます。 |
| クライアント | 各種言語のクライアントを提供します。提供するのは、Java、C#、C、Go、Python等です。<br />(https://developer.aerospike.com/client/client_matrix) |
| データモデル | 各種データモデルの使用が可能です。使用できるのは、カラム(文字列、数値等、List、Map、ListとMapのネスト、GEOJSON等)、ドキュメント(JSON) です。|


:::note
他のNoSQLもアップデートしており、また、ソフトウェアによる特色もありますので、必ずしも、Aerospikeの方がすべてで性能に勝るとは限りません。ぜひ、他のNoSQLとベンチマークをしていただき、適切なソフトウェアをご利用ください。
:::

### Aerospikeのエディション

現在、Aerospikeは、３つのエディションがあります。 https://aerospike.com/products/features-and-editions/
- Community Edition
- Standard Edition
- Enterprise Edition

Enterprise Editionを評価したい場合は、Aerospikeのホームページの右上の「Try now」をクリックしていただくと、AWS上または自身のPC上での評価版の利用方法が表示されますので、ぜひご利用ください。ただし、これはシングルノード（一つのサーバ）での評価となりますので、マルチノードでご利用になりたい場合は、お問い合わせいただくか、Community Editionをご利用ください。

また、クライアントからどのようにAerospikeが利用できるかは、同じページの「Start coding immediately」からご確認いただけます。

Community Editionのご利用につきましては、以下よりご確認ください。
https://aerospike.com/download/#aerospike-server-community-edition


# 最後に
今後、Aerospikeのアーキテクチャ、評価版やCommunity Editionのご利用方法などの記事を掲載しますので、ご期待ください。

関連記事：
[Aerospikeのアーキテクチャ](https://qiita.com/aerospike_nakadai/items/6b6bc68dbc4bba0d7bd3)