Excellent! What is missing from hbase that you need to support your app engine work?
On the differences from python, I think you are going about it the right way where you keep a running list that implementers used-to pythonisms can consult. I'd suggest you add a link to your project to the "Supporting Projects" page. Are the hbase jars now available in a maven repo? (It looks like it reading your pom). Are you writing your own gql parser? (It looks that way -- thats great). You might want to take a look at Michael Gottesman's skunkworks openengine project over on github: http://github.com/gottesmm/openengine/tree/master St.Ack On Fri, Mar 6, 2009 at 4:46 PM, Spencer Gibb <[email protected]> wrote: > 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. > > -- > [email protected] > > 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 >
