hbase-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Spencer Gibb <spen...@livremed.com>
Subject Google App Engine DataStore API on HBase in java
Date Sat, 07 Mar 2009 00:46:29 GMT
In an interview with InfoQ[1] the hbase project leads said:

"...an implementation of the Google App Engine DataStore API that went
against HBase and that parsed GQL, etc., is a contribution we wouldn't
say no to."

I've been looking at doing a project using hbase (it seems the closest
to bigtable I can find).  I've also done some work on google appengine
and really like their datastore.  I've looked at some of the ORM'ish
things linked from the wiki but found none of them came close to
datastore.

With that said, I've started implementing the Google App Engine
DataStore API in java.  You can find the source here:

http://code.google.com/p/datastore/source/browse/

It is rough at this point.

Current capabilities:
- get/put/delete Model objects.
- query for all of one kind of Model
- parse simple gql (SELECT * FROM Person LIMIT 20, 100)

Future capabilities:
- be as close as possible (within java's limits) to the datasore api [2]
- be compatible with index.yaml [3]
- have different implementations (such as hypertable)

Differences:
Python's dynamic nature means there will be differences with a java
api.  Here are some of them.
-overriding static methods
python: Person.all()
java: Datastore.all(Person.class)

-keyword arguments
python: s = Story(title="The Three Little Pigs")
java: Store s = new Story(); s.setTitle("...")
python: Story.get_by_id(123, parent=parentStory)
java: Datastore.getById(parentStory, 123);

-dynamic properties
python: name = db.StringProperty(required=True)
java: @StringProperty(required=true) String name;

And probably more I can't think of right now.

Anyway, browse the code, let me know what you think.

--
spencer@livremed.com

References:
[1] http://www.infoq.com/news/2008/04/hbase-interview
[2] http://code.google.com/appengine/docs/python/datastore/
[3] http://code.google.com/appengine/docs/python/datastore/queriesandindexes.html#Defining_Indexes_With_index_yaml

Mime
View raw message