SQL Azure, Sharding and NHibernate: A call for volunteers
I was quite surprised to hear that SQL Azure has a 10 GB limit for each database. That drastically reduce the amount of effort that I guess SQL Azure takes. At a guess, I would say it is simply replicated instances of databases instead of real SQL on the cloud.
One of the nice premises of working on the cloud is that you get transparent scaling. 10GB limit is not transparent. The answer from Microsoft seems to be that you need to implement Sharding. That is, you spread your logical database over several physical databases.
Usually it is done on physical database instances for the purpose of speeding up application because you get can parallelize the queries. In this case, you would need this because each database is pretty small.
Sharding is a term that was invented by Google, and a few years ago several Google engineers decided that they want to use Sharding with Hibernate. Thus, the Hibernate Shards project was born, bringing transparent sharding support to Hibernate.
The equivalent project for NHibernate was started, but porting was never complete. This is a call for volunteers to help continue the port of Hibernate Shards to NHibernate. You now have a very clear goal for why you would want that.
Having NHibernate Shards fully functional would mean that you get transparent scaling on SQL Azure. The fun part is that there isn’t a lot of thinking or design involved, the road was already traveled by, the only effort would be porting it.
And, to give some incentive, I am willing to donate an NH Prof license for all the major contributors that would finish the Hibernate Shards port.