Doubling-down on in-memory data
Memory is faster than disk. People realize that when they need to support high performance on-line applications. Recently many traditional database providers latched onto this and started “washing” their offerings with in-memory variations. At the same time, new companies are jumping into the In-Memory Data Grid (IMDG) space with unproven offerings. However, enterprise data is not something many are willing to experiment on.
VMware has virtually pioneered the IMDG, even before it was a category. Its vFabric GemFire team has been at this for a while now with a proven, production-grade offering called GemFire. In its latest release, GemFire 7.0 brings a couple of key enhancements for developers and IT pros alike:
- Improving developer productivity
- Increasing operational efficiencies
These improvements are in addition to the already proven data consistency and reliability that many have come to expect form GemFire in their scale-out data architectures. Once more, VMware has shown, both the technical knowhow and the necessary experience in enterprise-grade in-memory data to support on Cloud-scale.
Modern application development meets modern data
GemFire 7.0 helps developers get productive quickly. While developers always had the GemFire API to write transactional, web-oriented applications, the Spring Data GemFire project makes that experience even easier by enabling a declarative approach with the familiar Spring Framework. Do take a look at the GemFire documentation as we’ve added a section on the Spring Data GemFire project. In the documentation, you’ll find several samples of either approach.
Increasingly, developers are looking to support mobile devices with their applications. I’m excited to announce that GemFire 7.0 now supports JSON documents natively. GemFire now delivers the very same scale-out, low latency and real-time query capabilities for JSON document content often used in mobile devices. GemFire also enables you to query across both key-value/object data as well as JSON documents. Additional, GemFire’s renowned support for ACID transactions and the unique continuous query capabilities are extended to JSON documents. Bottom line, you get all the benefits of GemFire with support for this popular document data format.
Making it easier for IT Operations
Under the covers, GemFire 7 brings a completely redesigned JMX federated MBeans strategy to manage and monitor GemFire. Because it is integrated directly into all of the GemFire processes, JMX standard enables IT to administer the entire GemFire distributed system, either natively or using additional 3rd party tools like JConsole.
GemFire 7 also updates the command shell called gfsh (pronounced “gee – fish”), which amongst many other things allows admins to easily start and stop GemFire servers and locators, configure individual members, create and populate regions, deploy JARs dynamically, detect and debug deadlocks, manage disk-stores and import and export data snapshots.
Using Pulse, admins can examine many of the vital GemFire information in real time, including the total amount of memory, CPU, and disk space used by members, uptime statistics, client connections, WAN connections, and critical notifications. Pulse also connects to a GemFire JMX manager to provide a complete view of the GemFire deployment. Using the browser-based Pules UI you can drill down from a high-level cluster view to examine individual members and even regions within a specific member, to filter the type of information and level of detail. See GemFire Pulse for more information
Data at Cloud-scale
GemFire supports a variety of topologies depending upon your situation. You can handle the simple cases and move to more sophisticated deployments as your data needs change.
In any one of these deployments, GemFire’s performance goes beyond simple data delivery. Its architecture is built to assure speedy recovery of failed members while keeping up with the explosion in structured and unstructured data many of the organizations are currently experiencing. Here are some of the characteristics that drive GemFire architecture.
Most products in the IMDG category strive to increase data performance by shifting their focus away from disk. Many of these implementations, however, tend to suffer from either being too relaxed with respect to data consistency, lack support for managing referential data integrity, or are limited by the available process memory of a single machine.
In contrast to these products, GemFire manages data by distribution across cluster of nodes. Using dynamic replication and partitioning capabilities, GemFire delivers the necessary flexibility of full replication or fault tolerant partitions, across selected nodes or persistence regions within these nodes.
Regardless of the partitioning strategy, GemFire ensures that all copies of a data eventually reach a consistent state on all members and clients that host the region. This consistency checking is enabled by default, and, applies even to GemFire members that replicate region events across WAN.
For detail description of the GemFire consistency model please see Consistency for Distributed Updates.
As modern applications increasingly put strain on traditional database technology, GemFire’s distributed data management capability allows applications to scale while serving millions of real-time users, potentially across geographically dispersed regions.
GemFire is designed with the goal of completely eliminating the bottlenecks associated with managing data on disk. It manages its data in-memory, across a cluster of nodes to achieve near linear throughput increase while in the same time supporting an increasing number of concurrent clients. It is important to point out that GemFire can deliver that level of scalability using commodity hardware or virtualized infrastructure.
Long-distance Data Synchronization
GemFire enables its data grid to span across long distances. Whether this is in town or across continents, GemFire assures local data access based on its linearly scalable Active-Active data synchronization solution.
To further enhance the Active-Active data synchronization, GemFire transparently handles network performance and reliability issues by resolving any data inconsistencies that may arise when these peers return online. This feature enables each application instance to realize the required data access performance while ensuring data consistency even in most unreliable network scenarios.
Native Support for Memcached Clients by Using Gemcached
Gemcached is a lightweight adapter that now allows memcached clients to automatically connect to GemFire. GemFire includes an embedded Gemcached server which listens for connections from memcached clients. The Gemcached server transparently translates the traditional memcached protocol connections to the underlying GemFire APIs. This improvement gives memcached clients an immediate access to rich GemFire features such as replication and high-availability without the need for modification of existing code. For more information on GemCached see the vFabric GemFire Users Guide.
Just like in previous versions, objects managed in memory by GemFire can be easily queried using familiar, SQL-like syntax including many of the advanced querying constructs like projections and aggregations. Using its new paging architecture, GemFire further reduces its indexing footprint while increasing performance.
The highlights above are just scratching the surface, for more insight on what’s new in GemFire 7 check here:
About Mark ChmarnyDuring his 15+ year career, Mark Chmarny has worked across various industries and most recently as a Cloud Architect at EMC where he developed Cloud Computing solutions for both Service Provider and Enterprise customers. At VMware, Mark is a Data Solution Evangelist in the Cloud Application Platform group. Mark received a Mechanical Engineering degree from Technical University in Vienna, Austria and a BA in Communication Arts from Multnomah University in Portland, OR.