NoSQL Data Store
A NoSQL (often interpreted as not-only-SQL) database provides a mechanism for storage and retrieval of data that is modeled in ways other than the tabular relations used in relational databases. Motivations for this approach include simplicity of design, horizontal scaling, and finer control over availability. The data structures used by NoSQL databases (e.g. key-value, graph, or document) differ from those used in relational databases, making some operations faster in NoSQL and others faster in relational databases.
Hazelcast and NoSQL
Hazelcast is the leading open source in-memory data grid. Hazelcast is often used as an in-memory key-value store. According to a JRebel Labs 2014 survey, Java developers named Hazelcast the 4th most popular NoSQL technology, compared to MongoDB, Apache Cassandra, and Redis. Hazelcast is a rapidly up-and-coming NoSQL technology.
Hazelcast is In-Memory
One reason for Hazelcast’s popularity is the extreme performance of its in-memory component, which has been shown in independent benchmarks to be ten times faster than Apache Cassandra in reads, and also faster in writes. In the case of vanilla out-of-the-box Hazelcast, Hazelcast is in-memory only: the benchmark author produced a write module using Hazelcast APIs and was writing to solid-state drives (SSDs).
Hazelcast is Performant
Hazelcast is an extremely performant NoSQL key-value store which can be used in clustered and distributed fashion, which means that in addition to being highly performant, Hazelcast scales out easily, dynamically and elastically. This makes Hazelcast an extremely powerful choice for Java developers.
Hazelcast Has No Single-Point-of-Failure
Hazelcast uses peer-to-peer data distribution to provide no single-point-of-failure. By default, Hazelcast has data stored in two locations in the cluster, thus enabling any node to spontaneously go down with no loss of data, and the application can continue operating with no apparent change. As you scale out and increase the number of nodes, the resiliency of this network increases, as the exposure to the loss of a single node gets smaller as the network grows.
Hazelcast Uses Java API
Another reason Hazelcast is an extremely powerful choice for Java developers is the API, which in addition to the JCache API, Hazelcast provides the familiar Java.util collection classes: map, list, set, and queue. The API also has topics, semaphores, atomic, and distributed locking.
Hazelcast Avoids Garbage Collection
Hazelcast focuses on latency and makes it easier to cache/share/operate terabytes of data in-memory. Storing terabytes of data in-memory is not a problem, but avoiding garbage collection to achieve predictable, low latency and being resilient to crashes are big challenges. By default, Hazelcast stores your distributed data (map entries, queue items) into Java heap which is subject to garbage collection. As your heap gets bigger, garbage collection might cause your application to pause tens of seconds, badly affecting your application performance and response times. High-Density Memory Store is Hazelcast with native memory storage to avoid garbage collection pauses. Even if you have terabytes of cache in-memory with lots of updates, garbage collection will have almost no effect; resulting in more predictable latency and throughput. The Hazelcast Direct Memory implementation uses NIO DirectByteBuffers and doesn’t require any defragmentation.
With new backup implementation, data owned by a node is divided into chunks and evenly backed up by all the other nodes. In other words, every node takes equal responsibility to backup every other node. This leads to better memory usage and less influence in the cluster when you add/remove nodes.