Aerospike (database)

{{Short description|Open source NoSQL database}}

{{Infobox software

| name = Aerospike Database

| logo = Aerospike logo 2012.svg

| logo alt = Aerospike

| developer = Aerospike

| released = {{Start date and age|2010|df=yes}}

| latest release version = 8.0.0.7

| latest release date = {{release date and age|2025|04|26}}

| programming language = C

| operating system = Linux

| genre = Distributed Database, key-value database

| license = AGPL

| website = {{URL|https://www.aerospike.com/}}

}}

Aerospike Database is a real-time, high performance NoSQL database. Designed for applications that cannot experience any downtime and require high read & write throughput. Aerospike is optimized to run on NVMe SSDs capable of efficiently storing large datasets (Gigabytes to Petabytes). Aerospike can also be deployed as a fully in-memory cache database. Aerospike offers Key-Value, JSON Document, Graph data, and Vector Search models. Aerospike is an open source distributed NoSQL database management system, marketed by the company also named Aerospike.{{ cite web | url = http://www.forrester.com/pimages/rws/reprints/document/118782/oid/1-S3R21U | title = NoSQL Key-Value Databases, Q3 2014 | publisher = Forrester Research | date = 15 October 2014 | access-date = 29 November 2014 | author = Yuhanna, Noel }}

History

Aerospike was first known as Citrusleaf. In August 2012, the company - which had been providing its database since 2010 - rebranded both the company and software name to Aerospike.{{Cite web|url=http://www.dbms2.com/2012/08/27/aerospike-the-former-citrusleaf/|title=Aerospike, the former Citrusleaf|date=August 27, 2012|publisher=DBMS2|access-date= 17 May 2013 }} The name "Aerospike" is derived from the aerospike engine, a type of rocket nozzle that is able to maintain its output efficiency over a large range of altitudes, and is intended to refer to the software's ability to scale up.{{Cite web|url=http://www.wordiq.com/definition/Aerospike |title= Definition of Aerospike engine |publisher=Wordiq |access-date=17 May 2013 |url-status=dead |archive-url=https://web.archive.org/web/20041224150845/http://www.wordiq.com/definition/Aerospike |archive-date=24 December 2004 }} In 2012, Aerospike acquired AlchemyDB, and integrated the two databases' functions, including the addition of a relational data management system.{{cite news |title=Grim And Gritty Startup Reboot: NoSQL Company Citrusleaf Changes Name And Acquires AlchemyDB |author=Klint Finley |work=TechCrunch |date=August 28, 2012 |access-date=November 25, 2014 |url=https://techcrunch.com/2012/08/28/nosql-company-citrusleaf-lands-series-b-funding-changes-name-and-acquires-alchemydb/}} On June 24, 2014, Aerospike was opensourced under the AGPL 3.0 license for the Aerospike database server and the Apache License Version 2.0 for its Aerospike client software development kit.{{cite web |title=Aerospike: Thanks for that $20m, VCs ... next we'll OPEN SOURCE our NoSQL database |author=Jack Clark |website=The Register |date=June 24, 2014 |access-date=November 25, 2014 |url=https://www.theregister.co.uk/2014/06/24/aerospike_database_open_source/}}{{ cite web | url = http://siliconangle.com/blog/2014/06/24/aerospike-bets-on-end-users-to-monetize-subscriptions/?angle=silicon | title = Aerospike open sources NoSQL database in bid to expand customer ranks | author = Rachel Schramm | work = Silicon Angle | date = 24 June 2014 | access-date = 30 July 2014}}{{ cite web | url = http://www.infoq.com/news/2014/06/aerospike-open-source | title = Aerospike Open Sources Their In-memory NoSQL Database | author = Abel Avram | work = InfoQ | date = 24 June 2014 | access-date =30 July 2014}}

=Release history=

class="wikitable sortable"

! Version !! First Release Version !! First Release Date !! Latest Version !! Release date !! Features !! Ref

{{Version|o|3.1}}3.1.3January 2, 20143.1.14February 25, 2014{{Cite web|url=https://www.aerospike.com/download/server/notes.html |title=Aerospike Release Notes Pre 4.0 |access-date=17 Feb 2021 |url-status=unfit |archive-url=https://web.archive.org/web/20180911175400/https://www.aerospike.com/download/server/notes.html |archive-date=11 September 2018 }}
{{Version|o|3.2}}3.2.0March 19, 20143.2.9May 12, 2014
{{Version|o|3.3}}3.3.5June 9, 20143.3.26December 3, 2014
{{Version|o|3.4}}3.4.0December 8, 20143.4.1January 12, 2015
{{Version|o|3.5}}3.5.2February 13, 20153.5.15July 15, 2015
{{Version|o|3.6}}3.6.0August 31, 20153.6.4November 10, 2015
{{Version|o|3.7}}3.7.0December 10, 20153.7.5.1March 31, 2016* Geospatial queries

  • Native List data type
{{cite web |title=Aerospike 3.7.0 Release |url=https://www.aerospike.com/blog/aerospike-3-7-0-release/ |website=Aerospike |access-date=17 February 2021 |date=14 December 2015}}

{{Version|o|3.8}}3.8.1April 15, 20163.8.4June 17, 2016* Secondary Index on List, Map & Geospatial{{cite web |title=Aerospike 3.8 Release |url=http://www.aerospike.com/blog/aerospike-3-8-release/ |website=Aerospike |access-date=17 February 2021 |date=16 April 2016}}

{{Version|o|3.9}}3.9.0July 11, 20163.9.1.1September 2, 2016* Rapid Rebalance{{cite web |title=Aerospike 3.9 Release |url=http://www.aerospike.com/blog/aerospike-3-9-release/ |website=Aerospike |access-date=17 February 2021 |date=12 July 2016}}

{{Version|o|3.10}}3.10.0.3October 21, 20163.10.1.5January 13, 2017* Durable Delete

{{cite web |title=What's New in Aerospike 3.10? |url=http://www.aerospike.com/blog/whats-new-aerospike-3-10/ |website=Aerospike |access-date=17 February 2021 |date=25 October 2016}}

{{Version|o|3.11}}3.11.0January 5, 20173.11.1.1February 15, 2017* Transport Layer Security on client-server communications{{cite web |title=What's New in Aerospike 3.11? |url=http://www.aerospike.com/blog/whats-new-in-aerospike-3-11/ |website=Aerospike |access-date=17 February 2021 |date=31 January 2017}}

{{Version|o|3.12}}3.12.0March 15, 20173.12.1.3July 31, 2017* Predicate Filters{{cite web |title=What's New in Aerospike 3.12? |url=http://www.aerospike.com/blog/whats-new-aerospike-3-12/ |website=Aerospike |access-date=17 February 2021 |date=4 April 2017}}

{{Version|o|3.13}}3.13.0.1May 30, 20173.13.0.11April 26, 2018* Clustering Layer refactoring

  • Required "Jump" Release before 3.14
{{cite web |title=What's New in Aerospike 3.13 and 3.14? |url=http://www.aerospike.com/blog/whats-new-aerospike-3-13-3-14/ |website=Aerospike |access-date=17 February 2021 |ref=BLOG12-13 |date=20 June 2017}}

{{Version|o|3.14}}3.14.0June 6, 20173.14.1.10April 26, 2018* Clustering Layer refactoring pt. 2

{{Version|o|3.15}}3.15.0.1October 3, 20173.15.1.4January 3, 2018* Encryption at rest
{{Version|o|3.16}}3.16.0.1February 21, 20183.16.0.6March 2, 2018
{{Version|o|4.0}}4.0.0.1March 7, 20184.0.0.6September 6, 2018* Strong consistency Model{{cite web |title=Aerospike 4.0, Strong Consistency, and Jepsen |url=https://www.aerospike.com/blog/aerospike-4-strong-consistency-and-jepsen/ |website=Aerospike |access-date=17 February 2021 |date=7 March 2018}}

{{cite web |title=Aerospike Release Notes |url=https://www.aerospike.com/download/server/notes.html |access-date=17 February 2021}}

{{Version|o|4.1}}4.1.0.1May 10, 20184.1.0.6September 6, 2018* LDAP Support{{cite web |title=Aerospike 4.1 |url=https://www.aerospike.com/blog/aerospike-4-1/ |website=Aerospike |access-date=17 February 2021 |date=11 May 2018}}

{{Version|o|4.2}}4.2.0.2May 31, 20184.2.0.10August 10, 2018* Increase maximum object size to 8MB{{cite web |title=Aerospike 4.2: Storage Efficiency and Speed Improvements |url=https://www.aerospike.com/blog/aerospike-4-2/ |website=Aerospike |access-date=17 February 2021 |date=5 June 2018}}

{{Version|o|4.3}}4.3.0.2August 1, 20184.3.1.14April 26, 2019* All Flash Namespaces{{cite web |title=Aerospike 4.3: All Flash & Uniform Balance |url=https://www.aerospike.com/blog/aerospike-4-3-all-flash-uniform-balance/ |website=Aerospike |access-date=17 February 2021|date=August 1, 2018}}

{{Version|o|4.4}}4.4.0.4November 19, 20184.4.0.15April 26, 2019* Change notification Framework - connectors for Apache Kafka and JMS

  • Rack aware reads
{{cite web |title=Aerospike 4.4: Change Notification and Operational Improvements |url=https://www.aerospike.com/blog/aerospike-4-4-change-notification-and-operational-improvements/ |website=Aerospike |access-date=17 February 2021 |date=19 November 2018}}

{{Version|o|4.5}}4.5.0.1December 12, 20184.5.3.22July 7, 2020* Support for Intel Persistent memory for Indexing

{{cite web |title=Aerospike 4.5: Persistent Memory and Compression |url=https://www.aerospike.com/blog/aerospike-4-5-persistent-memory-compression/ |website=Aerospike |access-date=17 February 2021 |date=13 December 2018}}

{{Version|o|4.6}}4.6.0.2August 9, 20194.6.0.21September 18, 2020* Added bitwise BLOB operations

  • Nested Collection Data Type API support
{{Version|o|4.7}}4.7.0.2September 30, 20194.7.0.26November 25, 2020* ADQ Support{{cite web |title=Announcing Aerospike 4.7 – the First Commercial Database to Support the Intel® Ethernet 800 Series with ADQ |url=https://www.aerospike.com/blog/aerospike-4-7-blog-intel-adq-support/ |website=Aerospike |access-date=17 February 2021 |date=24 September 2019}}

{{Version|o|4.8}}4.8.0.1December 12, 20194.8.0.31March 29, 2021* Support for client/server compression

  • Support for Intel Persistent Memory for storing data
{{cite web |title=Aerospike 4.8: Enhanced Persistent Memory Support and Compression |url=https://www.aerospike.com/blog/aerospike-4-8-intel-pmem-support-b/ |website=Aerospike |access-date=17 February 2021 |date=10 December 2019}}

{{Version|co|4.9}}4.9.0.3April 8, 20204.9.0.36October 25, 2021* Added support for HyperLogLog (HLL) data types

  • Improve Scans for non key value access
  • Modify Eviction/Expiration (TTL) Default behavior
  • Required "Jump" Release before 5.0 (LTS)
{{cite web |title=Aerospike 4.9: New Functionality for Developers |url=https://www.aerospike.com/blog/aerospike-4-9-new-functionality-for-developers/ |website=Aerospike |access-date=17 February 2021 |date=17 April 2020}}

{{Version|o|5.0}}5.0.0.3May 14, 20205.0.0.38July 19, 2021* Refactor cross datacenter replication (XDR)

  • Strong consistency multi site clustering
{{cite web |title=Aerospike Database 5: Multi-site Clustering and Cross Datacenter Replication |url=https://www.aerospike.com/blog/aerospike-database-5-multi-site-clustering-and-cross-datacenter-replication/ |website=Aerospike |access-date=17 February 2021 |date=12 May 2020}}

{{Version|o|5.1}}5.1.0.3July 31, 20205.1.0.42September 20, 2021* Hashicorp Vault integration{{cite web |title=Aerospike Database 5.1: Security Enhancements including HashiCorp Vault Integration |url=https://www.aerospike.com/blog/aerospike5-1-hashicorp-vault/ |website=Aerospike |access-date=17 February 2021 |date=30 July 2020}}

{{Version|o|5.2}}5.2.02October 1, 20205.2.0.37October 30, 2021* Redesigned predicate expressions{{cite web |title=Aerospike Database 5.2: XDR Enhancements & Predicate Filters |url=https://www.aerospike.com/blog/aerospike5-2/ |website=Aerospike |access-date=17 February 2021 |date=30 September 2020}}

{{Version|co|5.3}}5.3.0.2December 10, 20205.3.0.27October 30, 2021* Added expression filtering for XDR

  • Expanded Multi-Site Clustering
{{cite web |title=Aerospike Database 5.3: XDR Filtering with Expressions & Expanded Multi-Site Clustering |url=https://www.aerospike.com/blog/aerospike5-3-xdr-multi-site-clustering/ |website=Aerospike |access-date=17 February 2021 |date=18 November 2020}}

{{Version|co|5.4}}5.4.0.1January 13, 20215.4.0.22October 30, 2021* Added bin level convergence for active-active XDR scenarios{{cite web |title=Aerospike Database 5.4: Usability Improvements & Human-Readable XDR Filter Expressions |url=https://www.aerospike.com/blog/aerospike-database-5-4/ |website=Aerospike |access-date=17 February 2021 |date=13 January 2021}}

{{Version|co|5.5}}5.5.0.2February 5, 20215.5.0.20October 30, 2021
{{Version|co|5.6}}5.6.0.3May 10, 20215.6.0.14October 30, 2021* Aerospike Expressions

  • Set Indexes
  • Per-user quotas
  • Boolean datatype
{{cite web |title=Aerospike Database 5.6: Developer Cornucopia |url=https://aerospike.com/blog/aerospike5-6-operation-expressions/ |website=Aerospike |access-date=12 May 2021|date=12 May 2021}}

{{Version|co|5.7}}5.7.0.7September 27, 20215.7.0.9December 10, 2021* Improved memory footprint and garbage collection for secondary indices

  • Support for PKI authentication
{{cite web |title=Aerospike Database 5.7.0.7 |url=https://discuss.aerospike.com/t/aerospike-database-5-7-0-7-september-27-2021/8857 |website=Aerospike |access-date=11 November 2021 |date=11 November 2021}}

{{Version|c|6.0}}6.0.0.0April 27, 20226.0.0.0April 27, 2022* Storing, Indexing and Querying JSON Documents

  • Partitioned Secondary Index Queries
{{cite web |title=Aerospike Database 6 |url=https://aerospike.com/blog/database-queries-json-db-6/

|website=Aerospike |access-date=11 April 2022 |date=27 April 2022}}

colspan="7" | {{Version |l |show=111100}}

Features

Aerospike Database is modeled under the shared-nothing architecture and written in C. It operates in three layers: a data storage layer, a self-managed distribution layer, and a cluster-aware client layer.{{Cite web|url=https://www.aerospike.com/docs/architecture/assets/vldb2016.pdf|title=Aerospike: Architecture of a Real-Time Operational DBMS|access-date=16 Feb 2021|orig-date=2016}}

Aerospike uses hybrid memory architecture: the database indices are stored fully in main random-access memory, while the data is stored on a persistent device using the data layer. The data layer stores the data in solid-state drive, NVMe or Persistent memory.{{cite web|title=Enhanced Persistent Memory Support and Compression|url=https://www.aerospike.com/blog/aerospike-4-8-intel-pmem-support-b/|date=December 19, 2019|access-date=2021-02-16}} Reading the data is done using a direct access to the record position on disk using a direct pointer from the primary index, and data writes are optimized through large block writes to reduce latency. This architecture to fetch all records from the persistent device and void the use of data cache. Aerospike also provides the ability to store the data fully in RAM, thus acting as an in-memory database. In that case, data would be persisted to either SSD, NVMe, PMEM or traditional rotational media.

Aerospike provides single-record ACID transactions.{{cite web |title=CAP and ACID {{!}} Aerospike |url=https://www.aerospike.com/docs/architecture/acid.html |website=www.aerospike.com |access-date=18 February 2021}} The distribution layer is responsible to replicate the data across nodes to ensure the durability and immediate consistency properties of the transaction. This allows the database to remain operational even when an individual server node fails or is manually removed from the cluster. Since version 4.0 (2018), Aerospike Database can be configured both as Available and Partition-tolerant (AP) or Consistent and Partition-tolerant (CP) under the CAP theorem.{{cite web |last1=Kingsbury |first1=Kyle |title=Jepsen: Aerospike 3.99.0.3 |url=https://jepsen.io/analyses/aerospike-3-99-0-3 |website=jepsen.io |access-date=18 February 2021 |date=2018-03-07}}{{cite web |title=Strong Consistency mode {{!}} Aerospike |url=https://www.aerospike.com/docs/architecture/consistency.html |website=www.aerospike.com |access-date=18 February 2021}}

The client cluster-aware layer is used to track the cluster configuration in the database, and manages client direct communications to all the nodes in the cluster. The clustering is done using heartbeats and Paxos based gossip protocol algorithm.{{cite web|title=Clustering {{!}} High-speed Distributed Cluster Formation|url=https://www.aerospike.com/docs/architecture/clustering.html#high-speed-distributed-cluster-formation|access-date=2021-02-16|website=www.aerospike.com}}

The software employs two sub-programs that are codenamed Defragmenter and Evictor.{{Cite web|url=http://www.aerospike.com/blog/super-storm-sandy-and-100-uptime-2/ |title=CTO Panel on Super Storm Sandy and 100% Uptime |date=December 14, 2012 |access-date=17 May 2013 |url-status=dead |archive-url=https://web.archive.org/web/20130303004951/http://www.aerospike.com/blog/super-storm-sandy-and-100-uptime-2/ |archive-date=3 March 2013 }} Defragmenter removes data blocks that have been deleted, and Evictor frees RAM space by removing references to expired records.{{Cite web|title=Documentation {{!}} Aerospike|url=https://www.aerospike.com/docs/operations/manage/storage/|access-date=2020-07-28|website=www.aerospike.com}}

References

{{reflist}}