Dynamic Management Capabilities Added to Gemfire Enterprise 6.0
Gemstone has announced the release of Gemfire Enterprise 6.0 with features that support, "dynamic adjustment of compute resources to meet service demands without any interruption to operations." Gemfire provides an in-memory persistence layer, a "data fabric," as a middle tier between applications and data sources to enhance performance by offering data access services as memory speeds. (See InfoQ, May 8, 2008.) This new release extends Gemfire's management functions allowing dynamic management of the data fabric.
With built-in instrumentation that captures throughput and latency metrics, GemFire enables applications to sense changing performance patterns and proactively provision extra resources and trigger rebalancing of predictable data access throughput and latency without the need to overprovision capacity. Together, the new features combine to offer unprecedented improvements in ease-of-use and manageability of data over a distributed architecture.
Although cloud computing is not explicitly mentioned, Gemfire Enterprise 6.0 does offer cloud-like functionality; e.g., "support for the 'data elasticity' required to manage dynamically changing workloads across globally dispersed data centers."
In addition to the dynamic management features at the core of this release, the 6.0 version offers:
- "Data aware application behavior routing" - with a set of extensions that enhance scalability and parallelization by balancing data and application behavior to increase throughput.
- API extensions for C++ and C# - in addition to current Java APIs
- Cost-based query optimization for higher performance and smaller memory footprint.
- Some developer productivity enhancements based on the ability to browse and edit data across the entire data fabric, execute ad hoc queries, and creation of real-time table views.
The developer productivity tools are responsive to the needs of teams engaged in iterative development, i.e. agile teams.
Gemstone has a long history as a provider of object database solutions, but is better known today for its Gemfire and Maglev (scalable Ruby development environment) offerings. One of the "surprises" discussed by Kent Beck in his QCon San Francisco talk in 2009, was the "flattening of data models" and the need for alternatives to the highly structured data solutions offered by relational databases. To the extent that the trend noted by Kent continues, the developer community might find solutions like Gemfire and the Gemstone object DB of increasing interest.
Oracle Coherence Data Grid
* "Data aware application behavior routing"
* Full-featured API for C++ and C#
* Cost-based query optimization
Cameron Purdy | Oracle Coherence
Native C++ caching, not just API
Isn't it true that Coherence offers an C++ API to the clustered cache services in JVMs? GemStone built a native cache implementation in C++ - so we can manage native C++/C# objects without serialization, deserialization, with eviction, native disk overflow in the C++ process, memory management, etc. All this besides being able to converse with a cluster of JVMs that host data in a highly partitioned or replicated manner using a simple, portable "on the wire" object representation. Turns out, interoperating between Java, C++ and .NET applications using GemFire is far more efficient than using efficient formats like Google Protocol Buffers (by a factor of 2 or higher).
There is a lot more on GemFire 6.0 on our GemFire community site
Re: Native C++ caching, not just API
Isn't it true that Coherence offers an C++ API to the clustered cache services in JVMs?
Among other things, that is certainly true.
GemStone built a native cache implementation in C++
Yes, Coherence has had a native C++ cache implementation for a few releases now. Since Coherence 3.4 (about a year ago), we have also had a near cache implementation. And a continuous query cache implementation. We even have local indexes and query support :-)
All this besides being able to converse with a cluster of JVMs that host data in a highly partitioned or replicated manner using a simple, portable "on the wire" object representation.
Yes, Coherence introduced the Portable Object Format (POF) a full three years ago now, with implementations in C#, C++ and Java. It sounds like you have done something very similar. It would have been nice if there had been a standard format back then, but now there are things like Google Protocol Buffers.
Turns out, interoperating between Java, C++ and .NET applications using GemFire is far more efficient than using efficient formats like Google Protocol Buffers (by a factor of 2 or higher).
Of course ;-) Some of our customers use Google Protocol Buffers. Google Protocol Buffers may not be as optimized as POF, but they are supported by Coherence. In fact, we even support customers plugging in their own proprietary wire / serialization formats, which are surprisingly common in banks.
Cameron Purdy | Oracle Coherence