Thursday, December 5, 2013

Apache Camel meets Gora!

Introduction

 NoSQL and Big Data have definitely become two of the most popular buzzwords nowadays. And since one works with NoSQL databases can easily understand why this is. NoSQL databases come in different flavors that focus on specific areas and problems as it has been taught to us with the CAP theorem.

 This is also the reason we have ended up with so many of them already. Something that is both good and bad in the same time. From one point of view you have very specialized solutions to your problem but from another point of view, there are so many different servers and APIs that make your mind ready to blow-up some times.

And this is where Apache Gora comes into the rescue!

As described in the Apache Gora homepage :
The Apache Gora open source framework provides an in-memory data model and persistence for big data. Gora supports persisting to column stores, key value stores, document stores and RDBMSs, and analyzing the data with extensive Apache Hadoop™ MapReduce support. Gora uses the Apache Software License v2.0. Gora graduated from the Apache Incubator in January 2012 to become a top-level Apache project.
This description clearly points out, this extra step that I totally love in Gora, which is to integrate and support Apache Hadoop™ MapReduce. This feature from my point of view seems to combine in a beautiful way storage and processing under one library.

Exploring more Gora and trying to further learn the framework, I start working on an Apache Camel component for Gora. Trying this way to marry Apache Gora with another one of my ASF favorites.

Based on wikipedia entry :

Apache Camel is a rule-based routing and mediation engine which provides a Java object-based implementation of the Enterprise Integration Patterns using an API (or declarative Java Domain Specific Language) to configure routing and mediation rules. The domain-specific language means that Apache Camel can support type-safe smart completion of routing rules in an integrated development environment using regular Java code without large amounts of XML configuration files, though XML configuration inside Spring is also supported.
And from the marriage of the two, camel-gora component came in life!


Camel-Gora Component

Just the past week, or so, I have finished, and contributed back to the Apache community, the camel-gora component that I was working for a few days. The camel-gora component gives the ability to utilize Apache Gora through camel.

It is early work yet but you can get both the latest and the original source at the github repository while more informations about the contribution and its current state can be found at the CAMEL-4817 issue in Apache JIRA.

Finally as one can guess, documentation writing is not one of my favorites to do and yet is not ready. However this is a work in progress and I will try to finish as soon as possible. Therefore in the mean time you can refer for some usage examples in the form of tests here.

P.S I will try to keep examples updated to the reflect the latest changes and in a future post give some example uses and ideas for the component!



1 comment:

  1. Documentation updated, you could refer to https://github.com/ipolyzos/camel-gora/wiki for more. Also the documentation submitted to ASF and hope to soon see it in the official repos.

    ReplyDelete