InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Dynamic Management Capabilities Added to Gemfire Enterprise 6.0

Posted by Dave West on Jun 23, 2009

Sections
Architecture & Design,
Development,
Operations & Infrastructure
Topics
.NET ,
Java ,
Clustering & Caching ,
Artifacts & Tools ,
Architecture ,
Data Access
Tags
GemStone ,
In-Memory Persistence ,
Caching ,
GemFire

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 by Cameron Purdy Posted
Native C++ caching, not just API by Jags Ramnarayan Posted
Re: Native C++ caching, not just API by Cameron Purdy Posted
  1. Back to top

    Oracle Coherence Data Grid

    by Cameron Purdy

    This is similar to Oracle Coherence, which also provides:



    * "Data aware application behavior routing"

    * Full-featured API for C++ and C#

    * Cost-based query optimization



    Peace,



    Cameron Purdy | Oracle Coherence

    coherence.oracle.com/

  2. Back to top

    Native C++ caching, not just API

    by Jags Ramnarayan

    Cameron,

    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

    regards,
    Jags Ramnarayan

  3. Back to top

    Re: Native C++ caching, not just API

    by Cameron Purdy

    Hi Jags -



    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.



    Peace,



    Cameron Purdy | Oracle Coherence

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.