In-memory databases are characterised by speed and the ability to perform complex processing at very high volumes. They have become feasible because of the low cost of memory and large addressable memory spaces. Several better known ones are listed below.
Aerospike NoSQL database is a open source, clustered and distributed database optimized for reliable, high performance in-memory use. Its primary key focus delivers scalable and robust no-single-point-of-failure clustering. Rich APIs include mem- cached’s CAS interfaces, schemaless types, in-database operations like increment, synchronous secondary indexes, efficient very large lists and maps, and expressive APIs for languages like Node.js, Java, Scala, PHP, C, C#, Go, and more. By also supporting analytics queries, real-time MapReduce, and in-database computation with user-defined functions, Aerospike provides rich database primitives.
Its use of Flash and SSD technology brings Redis-like in-memory performance to persistent, large-scale datasets, while also supporting RAM datasets. Cloud integration provides Aerospike performance and robustness in high scale environments like Amazon EC2, Google Compute, Internap, GoGrid, and others.
H2 is an in-memory Java SQL database with a fast JDBC API and small footprint. It operates in embedded and server modes with clustering support. Other features include disk or in-memory databases, 2-phase-commit, cost based optimisation, and strong encryption.
Redis is an open source, BSD licensed, advanced key-value cache and store. It is often referred to as a data structure server since keys can contain strings, hashes, lists, sets, sorted sets, bitmaps and hyperloglogs, and can run atomic operations on these types, like appending to a string; incrementing the value in a hash; pushing an element to a list; computing set intersection, union and difference; or getting the member with highest ranking in a sorted set. In order to achieve its high levels of performance, Redis works with an in-memory dataset.
SQLite is an in-process library that implements a self-contained, serverless, zero-configuration, transactional SQL database engine. The code for SQLite is in the public domain and is thus free for use for any purpose, commercial or private. SQLite is the most widely deployed database in the world. It has an optional in-memory mode of operation.
Tarantool is a Lua application server integrated with a database management system. It has a “fiber” model which means that many applications can run simultaneously on a single thread, while the Tarantool server can run multiple threads for input-output and background maintenance. It integrates the LuaJIT – “Just In Time” – Lua compiler, Lua libraries for most common applications, and the Tarantool Database Server which is an established NoSQL DBMS. Thus it serves all the purposes that have made node.js and Twisted popular in other environments, with the additional twist that it has a data persistence level. It has two data engines: 100% in-memory with optional persistence and a 2-level disk-based B-tree, to use with large data sets
UnQLite is a in-process software library which implements a self-contained, serverless, zero-configuration, transactional NoSQL database engine. UnQLite is a document store database similar to MongoDB, Redis, CouchDB etc. as well a standard Key/Value store similar to BerkeleyDB, LevelDB, etc.
UnQLite is an embedded NoSQL (Key/Value store and Document-store) database engine. Unlike most other NoSQL databases, UnQLite does not have a separate server process. UnQLite reads and writes directly to ordinary disk files. A complete database with multiple collections, is contained in a single disk file. The database file format is cross-platform, you can freely copy a database between 32-bit and 64-bit systems or between big-endian and little-endian architectures. It operates as a disk based or in-memory database.
VoltDB offers the speed and scale of NoSQL databases but with the ACID guarantees, relational data models, and transactional capability of traditional RDBMSs. VoltDB’s in-memory architecture is designed for performance. It eliminates the significant overhead of multi-threading and locking responsible for the poor performance of traditional RDBMSs that rely on disks. Community and paid for editions are available.