views:

28

answers:

1

Guys

I am experimenting with App engine. One of my stumbling blocks has been the support for managed relations or lack there off, this is further compounded by the lack of join support. Without getting into details of the issues I have run into (which I will post under different topic), I would like to ask two things. 1. Has any one of you used managed relations in something substantial. If so if you can share some best practices that will help. 2. Is there any good comprehensive example(s) that you have come across which you can point me at.

Thanks in advance.

A: 

I think this answer might disappoint you, but before you develop on the app engine you should read it anyway, and confirm this in the docs.

No. No one on the app engine has used managed relations for anything 'substantial', simply because Bigtable is not built for managed relations. It is a sharded and sorted array, and as such is a very different kind of data structure than what you would normally use.

Now there are attempts to set up managed relationships - the GAE/Java team is pushing JDO features that come close to this, and there's more info on this blog, but this simply isn't the natural state of things on the app engine, and you'll very quickly run into problems if you decide to spend too much time wrapping yourself in a leaky abstraction.

Its a lot easier to actually look at what bigtable really is - there are a ton of videos on the google i/o pages for 2010 and 2009 that do a fantastic job of explaining that, and then figure out ways to map your problem according to the capabilities of the datastore. It may sound unreasonable, but think about it... the GAE is a tool that can do certain things exceedingly well, and if you can figure out your problem in terms of ideas like object stores, sets, merge joins, task queues, pre-computation and caching, then you can use this tool to kick ass.

Sudhir Jonathan