Aerospike (database)

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search
Aerospike Database
DeveloperAerospike
Initial release2010; 16 years ago (2010)
Stable release
8.0.0.7 / April 26, 2025; 11 months ago (2025-04-26)
Repository
  • {{URL|example.com|optional display text}}Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
Written inC
Engine
    Lua error in Module:EditAtWikidata at line 29: attempt to index field 'wikibase' (a nil value).
    Operating systemLinux
    TypeDistributed Database, key-value database
    LicenseAGPL
    Websitewww.aerospike.com

    Aerospike Database is a real-time, high-performance NoSQL database. It is 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.[1]

    History

    [edit | edit source]

    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.[2] 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.[3] In 2012, Aerospike acquired AlchemyDB, and integrated the two databases' functions, including the addition of a relational data-management system.[4] On June 24, 2014, Aerospike was open-sourced 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.[5][6][7]

    Release history

    [edit | edit source]
    Version First Release Version First Release Date Latest version Release date Features Ref
    Unsupported: 3.1 3.1.3 January 2, 2014 3.1.14 February 25, 2014

    [8]

    Unsupported: 3.2 3.2.0 March 19, 2014 3.2.9 May 12, 2014

    [8]

    Unsupported: 3.3 3.3.5 June 9, 2014 3.3.26 December 3, 2014

    [8]

    Unsupported: 3.4 3.4.0 December 8, 2014 3.4.1 January 12, 2015

    [8]

    Unsupported: 3.5 3.5.2 February 13, 2015 3.5.15 July 15, 2015

    [8]

    Unsupported: 3.6 3.6.0 August 31, 2015 3.6.4 November 10, 2015

    [8]

    Unsupported: 3.7 3.7.0 December 10, 2015 3.7.5.1 March 31, 2016

    [9] [8]

    Unsupported: 3.8 3.8.1 April 15, 2016 3.8.4 June 17, 2016
    • Secondary Index on List, Map & Geospatial

    [10] [8]

    Unsupported: 3.9 3.9.0 July 11, 2016 3.9.1.1 September 2, 2016
    • Rapid Rebalance

    [11] [8]

    Unsupported: 3.10 3.10.0.3 October 21, 2016 3.10.1.5 January 13, 2017
    • Durable Delete
    • Support IPv6

    [12] [8]

    Unsupported: 3.11 3.11.0 January 5, 2017 3.11.1.1 February 15, 2017

    [13] [8]

    Unsupported: 3.12 3.12.0 March 15, 2017 3.12.1.3 July 31, 2017
    • Predicate Filters

    [14] [8]

    Unsupported: 3.13 3.13.0.1 May 30, 2017 3.13.0.11 April 26, 2018
    • Clustering Layer refactoring
    • Required "Jump" Release before 3.14

    [15] [8]

    Unsupported: 3.14 3.14.0 June 6, 2017 3.14.1.10 April 26, 2018
    • Clustering Layer refactoring pt. 2

    [15] [8]

    Unsupported: 3.15 3.15.0.1 October 3, 2017 3.15.1.4 January 3, 2018

    [8]

    Unsupported: 3.16 3.16.0.1 February 21, 2018 3.16.0.6 March 2, 2018

    [8]

    Unsupported: 4.0 4.0.0.1 March 7, 2018 4.0.0.6 September 6, 2018

    [16] [17]

    Unsupported: 4.1 4.1.0.1 May 10, 2018 4.1.0.6 September 6, 2018

    [18] [17]

    Unsupported: 4.2 4.2.0.2 May 31, 2018 4.2.0.10 August 10, 2018
    • Increase maximum object size to 8MB

    [19] [17]

    Unsupported: 4.3 4.3.0.2 August 1, 2018 4.3.1.14 April 26, 2019
    • All Flash Namespaces

    [20] [17]

    Unsupported: 4.4 4.4.0.4 November 19, 2018 4.4.0.15 April 26, 2019
    • Change notification Framework - connectors for Apache Kafka and JMS
    • Rack aware reads

    [21] [17]

    Unsupported: 4.5 4.5.0.1 December 12, 2018 4.5.3.22 July 7, 2020

    [22] [17]

    Unsupported: 4.6 4.6.0.2 August 9, 2019 4.6.0.21 September 18, 2020
    • Added bitwise BLOB operations
    • Nested Collection Data Type API support

    [17]

    Unsupported: 4.7 4.7.0.2 September 30, 2019 4.7.0.26 November 25, 2020
    • ADQ Support

    [23] [17]

    Unsupported: 4.8 4.8.0.1 December 12, 2019 4.8.0.31 March 29, 2021
    • Support for client/server compression
    • Support for Intel Persistent Memory for storing data

    [24] [17]

    Supported: 4.9 4.9.0.3 April 8, 2020 4.9.0.36 October 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)

    [25] [17]

    Unsupported: 5.0 5.0.0.3 May 14, 2020 5.0.0.38 July 19, 2021
    • Refactor cross datacenter replication (XDR)
    • Strong consistency multi site clustering

    [26] [17]

    Unsupported: 5.1 5.1.0.3 July 31, 2020 5.1.0.42 September 20, 2021

    [27] [17]

    Unsupported: 5.2 5.2.02 October 1, 2020 5.2.0.37 October 30, 2021
    • Redesigned predicate expressions

    [28] [17]

    Supported: 5.3 5.3.0.2 December 10, 2020 5.3.0.27 October 30, 2021
    • Added expression filtering for XDR
    • Expanded Multi-Site Clustering

    [29] [17]

    Supported: 5.4 5.4.0.1 January 13, 2021 5.4.0.22 October 30, 2021
    • Added bin level convergence for active-active XDR scenarios

    [30] [17]

    Supported: 5.5 5.5.0.2 February 5, 2021 5.5.0.20 October 30, 2021

    [17]

    Supported: 5.6 5.6.0.3 May 10, 2021 5.6.0.14 October 30, 2021
    • Aerospike Expressions
    • Set Indexes
    • Per-user quotas
    • Boolean datatype

    [31] [17]

    Supported: 5.7 5.7.0.7 September 27, 2021 5.7.0.9 December 10, 2021
    • Improved memory footprint and garbage collection for secondary indices
    • Support for PKI authentication

    [32] [17]

    Latest version: 6.0 6.0.0.0 April 27, 2022 6.0.0.0 April 27, 2022
    • Storing, Indexing and Querying JSON Documents
    • Partitioned Secondary Index Queries

    [33] [17]

    Legend:
    Unsupported
    Supported
    Latest version

    Features

    [edit | edit source]

    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.[34]

    Aerospike uses a 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 a solid-state drive, NVMe, or persistent memory.[35] 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.[34] 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.[2]

    Aerospike provides single-record ACID transactions.[36] 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.[34] 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.[37][38]

    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.[34] The clustering is done using heartbeats and a Paxos-based gossip protocol algorithm.[39]

    The software employs two sub-programs that are codenamed Defragmenter and Evictor.[34][40] Defragmenter removes data blocks that have been deleted, and Evictor frees RAM space by removing references to expired records.[34][41]

    References

    [edit | edit source]
    1. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    2. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    3. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    4. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    5. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    6. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    7. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    8. ^ a b c d e f g h i j k l m n o p Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    9. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    10. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    11. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    12. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    13. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    14. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    15. ^ a b Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    16. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    17. ^ a b c d e f g h i j k l m n o p q r s Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    18. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    19. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    20. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    21. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    22. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    23. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    24. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    25. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    26. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    27. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    28. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    29. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    30. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    31. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    32. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    33. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    34. ^ a b c d e f Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    35. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    36. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    37. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    38. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    39. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    40. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    41. ^ Lua error in Module:Citation/CS1/Configuration at line 2172: attempt to index field '?' (a nil value).
    [edit | edit source]