Introducing GORM for Gemfire

One of the many reasons for the rise of NoSQL datastores is the need to scale applications beyond their traditional comfort zone in the relational world. The irony is that Gemfire has been doing exactly this long before the term NoSQL was even coined by providing scale to some of the largest financial organizations in the world.

Gemfire is far more than a cache, but a complete data fabric with support for Grid Computing, Map/Reduce, continuous queries and transactional write-behind.

For those of you who attended the keynote at the hugely successful SpringOne2GX conference this may be old news. For the rest today I am pleased to announce the availability of the GORM for Gemfire plugin for Grails.

Just like GORM for Redis, the Gemfire plugin lets you use great GORM features like dynamic finders, criteria queries and named queries on top of the Gemfire distributed data fabric. GORM for Gemfire translates your queries into Gemfire’s Object Query Language (OQL.).

Beyond supporting dynamic finders the plugin also supports a rich API for executing continuous queries using a special “cq” namespace and closures:

Person.cq.findAllByLastName("Flintstone") { event ->
	if(!event.throwable) {
		println "NEW FLINSTONE ${event.newValue.firstName}"

The plugin also allows closures to be executed as Gemfire functions that are serialized across your partitioned Gemfire regions and executed where the data lives allowing commons patterns such as Map/Reduce:

def results = Plant.executeFunction([]) { ctx ->
  ctx.lastResult ctx.localData[ctx.filter.iterator().next()]
assert results[0].name == 'cabbage'

We have prepared an introductory video for those who want to get up to speed with using GORM for Gemfire within a Grails application:

GORM for Gemfire Screencast

Further information on how to get started can be found in the Gemfire plugin’s user guide and official Gemfire developer documentation. Enjoy!

comments powered by Disqus