-
Notifications
You must be signed in to change notification settings - Fork 2
Design
Gora is an ORM framework for column oriented datastores. The design goal is to have a common API to access and manage multiple data stores. Gora differs from Java ORM frameworks, in that the special focus is given to column oriented data bases, like Apache HBase and Apache Cassandra, however persisting objects using JDBC is also planned for the future.
The aim of Gora is similar to JDO/DataNucleus projects, however Gora differs from these in these aspects :
- JDO is complex. Although we very much love JDO, full JDO support is not planned for the short term.
- JDO is explicitly based on Java. Although Gora is primarily written in Java, using Apache Avro will ease multi language support
- JDO depends on byte code object enhancement, while Gora exends Avro compilers to generate objects from avro schema definitions
Gora supports or plans to support the following back ends
Store | Status |
---|---|
Apache HBase | implemented |
Apache Cassandra | planned |
Hadoop TFile/MapFile | planned |
JSON | planned |
Gora works as follows :
– Data beans for the application is written using Avro schemas
– The code is compiled using an extended Avro compiler. The compiled objects keep state information about the fields of the object. When the field value changes through setter methods, that field becomes dirty.
– Mapping files define the metadata about how object’s fields are mapped to the datastore’s data format.
– Data stores uses the Schema of the object (from Avro), and field dirty information to persist the fields of the object.