The GridGain Key-Value Store Database Increases Performance and Reduces Memory Consumption
A key-value database, or key-value store, is a database for storing, retrieving, and managing associative arrays, a data structure commonly known as a dictionary or hash table. Each hash table contains a collection of objects, or records, which can contain many different fields, each containing data. The records are stored and retrieved using a key (the key-value) that uniquely identifies the record and allows the system to quickly find the data within the database.
GridGain® software includes a powerful key-value database (key-value store). The GridGain key-value store is a distributed partitioned hash map with every cluster node owning a portion of the overall data set. As more nodes are added, more data can be stored and the cluster resources can be better used. The system supports distributed ACID transactions, scan and continuous queries, collocated processing and more.
What is a Key-Value Store?
A key-value store (or key-value database) is designed for storing, retrieving, and managing both structured and unstructured data. The store contains objects, or records. Each record contains many different fields, and each field contains data. These records are stored and retrieved using a key that uniquely identifies the record, and is used to quickly find the data within the database. A single record in the store is represented as a key-value pair. The key is used both as a primary key for value processing and to define what partition (or shard) the pair belongs to. It can help to navigate to the cluster node that stores a pair’s replica in constant time - O(1). This algorithmic read and write operations complexity provides the means to scale the key-value stores indefinitely without sacrificing performance.
GridGain is a JCache (JSR 107) Compliant Key-Value Database
The GridGain key-value database has the same basic capabilities of similar key-value stores. However, it also complies with the JCache (JSR 107) specification and supports distributed ACID transactions, SQL with distributed joins, scan and continuous queries, and collocated processing.
JCache enables applications to create and work with an in-memory distributed cache of objects through the JSR 107 API. JCache provides a simple to use yet very powerful API for data access. It allows users to spend their time on the core business logic of their application without having to focus on the finer details of implementing caching. In addition, the specification purposely omits any details about data distribution and consistency which allows vendors freedom in their own implementations.
JCache support provides:
- An in-memory key-value store
- Basic cache operations
- ConcurrentMap APIs
- Collocated processing
- Events and metrics
- Pluggable persistence
JCache API support allows applications to be vendor neutral, making it relatively easy to switch between JCache supporting products.
Key-Value Store with Pluggable Persistence
The GridGain key-value store supports third party databases for persistence needs, including RDBMS, NoSQL, and Hadoop. This approach provides optimal performance and scalability because all data is stored in RAM. It also does not require users to rip-and-replace their existing data layer architecture. This approach does require the full data set to be in memory for use cases such as SQL or scan queries.
GridGain Persistent Store
The key-value store can hold and process data in RAM and on disk when you enable the optional GridGain Persistent Store feature. In this configuration, data and indexes are not required to be kept in memory and there is no warm-up required of the cluster after a node or cluster restart. All queries sent to the key-value store can be spanned across both RAM and disk tiers.