Title: About Apache Gora™

About Gora

Why Gora?

Although there are various excellent ORM frameworks such as JPA, Apache OpenJPA, Hibernate, etc for relational databases, data modeling in NoSQL data stores differ profoundly from their relational cousins. Moreover, data-model agnostic frameworks such as JDO are not sufficient for use cases, where one needs to use the full power of the data models in column stores (for example). Gora fills this gap by giving the user an easy-to-use in-memory data model and persistence for big data framework with data store specific mappings and built in Apache Hadoop™ support.

The overall goal for Gora is to become the standard data representation and persistence framework for big data. The roadmap of Gora can be grouped as follows:

Who is Gora For?

Gora is a framework primarily aimed towards

  • Hands on Developers required to deal with data volumes which justify Big Data storage solutions classified under the NoSQL umbrella.
  • Developers who seek a Java friendly (REST-style) API for mapping Java objects to and from NoSQL technologies.
  • Development and/or Testing Engineers looking to quickly set up and deploy applications on top of Big Data storage mediums. This includes testing how applications are suited to underlying data stores as data stores are easily interchanged.
  • Developers interested in technology agnostic storage methods for addressing data storage tasks.
  • Decision Makers looking to implement a flexible storage framework under the most liberal open source license available.

Background

ORM stands for Object Relation Mapping. It is a technology which abstacts the persistency layer (mostly Relational Databases) so that plain domain level objects can be used, without the cumbersome effort to save/load the data to and from the database.

Gora extends this concept to introduce Object-to-Datastore Mapping where the underlying technological implementations rely mostly on non-relational data modeling. In essence Gora provides storage abstraction for NoSQL technologies.

Gora differs from current solutions in that:

  • Gora is specially focussed at NoSQL data stores, but also has limited support for SQL databases.
  • The main use case for Gora is to access/analyze big data using Apache Hadoop™.
  • Gora uses Apache Avro for bean definition, not byte code enhancement or annotations.
  • Object-to-data store mappings are backend specific, so that full data model can be utilized.
  • Gora is simple since it ignores complex SQL mappings.
  • Gora will support persistence, indexing and anaysis of data, using Apache Pig, Apache Lucene, Apache Hive, etc.

What Platform(s) does Gora work on?

Gora builds nightly on Ubuntu.

The software has been tested and verified to run on the following platforms:

  • Mac OSX 10.9.3
  • Linux Mint
  • Ubuntu

Gora does publish .zip artifacts for Windows users, however there is no gurantee of platform compatibility.

Please provide platform compatibility issues and/or feedback to our mailing lists.

Which Languages/Technologies do I need to know to use Gora?

  • Gora is written in Java.
  • Configuration however requires a working knowledge of syntax for JSON and XML.
  • You should be able to use the command line terminal.
  • You should be able to use Apache Maven from the command line.
  • You should be able to edit simple flat files using a text editor.