Aerospike (database)

Aerospike is a flash-optimized and in-memory open source distributed key value NoSQL database, and the name of the eponymous company that produces it.
History.
Aerospike Database was first known as Citrusleaf 2.0. In August 2012, the company - which had been providing its database since 2010 - rebranded both the company and software name to Aerospike. 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. In 2012, Aerospike acquired AlchemyDB, and integrated the two databases' functions, including the addition of a relational data management system. 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. In February 2015, Aerospike named John Dillon, previously of Salesforce.com, as its new CEO.
Features.
Aerospike Database is modeled under the Shared-nothing architecture and written in C. It operates in three layers: a flash optimized data layer, a self-managed distribution layer, and a cluster-aware client layer. 
Aerospike is using an Hybrid memory architecture: the database indices are stored fully in RAM for quick access, while the data is stored on a persistent device using the data layer. The data layer is optimized to store the data in solid-state drive, NVMe or Persistent memory. 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 provide the ability to be 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. 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. 
The smart 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. 
The software also employs two sub-programs that are codenamed Defragmenter and Evictor. Defragmenter removes data blocks that have been deleted, and Evictor frees RAM space by removing references to expired records.