GemFire Architecture Overview
GemFire Enterprise is a high-performance, distributed operational data management infrastructure that sits between your clustered application processes and back-end data sources to provide very low-latency, predictable, high-throughput data sharing and event distribution.
GemFire harnesses the memory and disk resources across a network to form a real-time data fabric or grid. By primarily managing data in memory, GemFire enables extremely high-speed data sharing that turns a network of machines into a single logical data management unit - a data fabric.
GemFire is used for managing operational data - Unlike a traditional centralized disk-based database management system used for managing very large quantities of data, GemFire is a real-time data sharing facility specifically optimized for working with operational data needed by real-time applications - it is the "now" data, the fast-moving data shared across many processes and applications. It is a layer of abstraction in the middle tier that collocates frequently-used data with the application and works with back-end databases behind the scenes.

It does this without compromising the availability or consistency of data - a configurable policy dictates the number of redundant memory copies for various data types, storing data synchronously or asynchronously on disk and using a variety of failure detection models built into the distribution system to ensure data correctness.
Key Database Semantics are Retained
Simple distributed caching solutions provide caching of serialized objects - simple key-value pairs managed in Hashmaps that can be replicated to your cluster nodes. GemFire, provides support for multiple data models across multiple popular languages - data can be managed as Java or C++ objects natively, and GemFire offers an XML:DB compatible API to store native XML documents.
Similar to a database management system, distributed data in GemFire can be managed in transactions, queried, and persistently stored and recovered from disk.
Unlike a relational database management system, where all updates are persisted and transactional in nature (ACID), GemFire relaxes the constraints allowing applications to control when and for what kind of data you need total ACID characteristics. For instance, a very high-performance financial services application trying to get price updates distributed can take advantage of what is most important - the distribution latency; there is no need for transactional isolation.
The end result is a data management system that spends fewer CPU cycles for managing data and offering higher performance.
Continuous Analytics and Reliable Event Distribution
With data in the fabric being updated rapidly by many processes and external data sources, it is important for real-time applications to be notified when events of interest are being generated in the fabric. Something a messaging platform is quite suited to do. GemFire data fabric takes this to the next level - applications can now register complex patterns of interest expressed through queries: queries that are continuously evaluated as new data streams into the data fabric. Unlike a database where queries are executed on resident data, the data fabric can be configured to be active - it instantaneously calculates how a query result has been impacted and routes the result set "delta" to distributed client processes.
When using a messaging platform, application developers expect reliable and guaranteed publish-subscribe semantics. The system has knowledge about active or durable subscribers and provides different levels of message delivery guarantees to subscribers. The GemFire data fabric layers these messaging features on top of what looks like a database to the developer.
Unlike traditional messaging where applications have to deal with constructing piecemeal messages,, incorporating contextual information in messages, managing data consistency across publishers and subscribers, GemFire enables a more intuitive approach - one where applications simply deal with an object data model. They subscribe to portions of the data model and publishers make updates to the business objects or relationships. Subscribers are simply notified on the changes to the underlying distributed database.
Next: Topologies and Caching Architectures