User:Paulcolmer/sandbox

An in-memory data grid is a highly scalable, highly resilient, performance-centric software datastore, storing data in memory across geographically dispersed servers, using a non-relational, shared nothing architecture, in support of distributed applications.

In-memory data grids consist of the following characteristics:


 * Data is structured in a key-value store, rather than in a relational structure. Relational structures are used in relational database management systems (RDBMS).
 * The key-value store is accessed via a hash algorithm.
 * Then data can be distributed like a fabric, across one or more servers, in one or more locations.
 * Supports application programming interface (API) queries from distributed applications using Java or .NET development frameworks.
 * If a server in the data grid fails, the system is able to re-balance with no disruption to the applications that rely on the data.

In simple terms an in-memory data grid is analogous to the virtualisation of servers and operating systems, in that server and storage resources can be virtualised across a pool of servers. For the IMDG the data is virtualized across a pool of servers.

Here is a simplified recipe for understanding an IMDG, based on the well established concepts of RDBMS:


 * 1) Take a relational database.
 * 2) Restructure the database in a way that helps better meet the business need, using a non-relational structure.
 * 3) Break up the database into many pieces to form one or more distributed clusters.
 * 4) Replicate the distributed cluster topology across one or more locations, to provide resilience and data availability.
 * 5) Allow the pieces to be connected to form a fabric and to run in the RAM of all the servers, to allow regular updates to occur.
 * 6) Structure and manipulate the data through a series of vendor provided APIs, built on Java and/or .NET application frameworks.
 * 7) This is an in-memory data grid.