Why NoSql ?
Complexity and heterogeneity of data, internet-scale horizontal-scaling, just-enough consistency, and performance requirements make the traditional approach to data-store based on only Relational Databased (RDBMS) ineffective. Modern applications are required to use databases whose data-model, queries, and consistency and distribution model, offer the right match to the task at hand, and provide the right balance between feature-set and implementation performance.
Why a Data-Structure Store ?
Key-Value stores provide a simple an efficient model for data persistence, where simple keys are used to lookup associated value. A Data-Structure stores takes this approach one step beyond, by providing a rich set of persistent data-structures that map naturally program data-structures used by developers.
Technologies of Choice
Redis is a fast data-structure NoSql database. Going beyond traditional key–value stores, Redis provides a rich set of canonical data-structures that are efficiently persisted, including: raw byte arrays and strings, lists/queues, hashes, sets, sorted sets, and hyperloglogs.
Redis support multiple deployment modes, from single-server, master-slave replication, and high-availability with a strong-consistency sentinel-driven failover on quorum, and clustering for with data replication and partitioning (sharding).
Drivers/Bindings exist for many programming languages, including Java and C#/.Net, among other. High-level programming framework such as Spring Data Redis further simplify the development of RabbitMQ and AMQP based applications.
Redis Deplyoment Architectures
Redis provides multiple mechanisms for distributed installation whose goals are are to increase fault-tolerance, high-availability, and partition data in order to deal with the limitations of memory-driven storage of data. Functionally correct applications, need to be complemented with equally sound architectures for the in-memory storage of data as done by Redis.
- In-Memory Data Partitioning
- Polyglot persistence
EInnovator can help setting up and validating Redis based solutions, and polyglot solutions based on a combination of NoSql and RDBMS databases, trough advise on architecture, configuration details, operational procedures, and application development best-practices.