In my previous projects I have found a strong preference to avoid a Traditional SQL database backend. Too often the impedance mismatch simply costs too much when rapidly iterating a design. Going with a schema less design is fantastic and frankly really hard to give up.
My last major project was meant to be a ‘internet scale’ service - which basically needed to be able to handle vast traffic increases without falling to pieces (I cringe just reading that sentence!). Yes – it was one of those projects and I should have jumped out of the boat upon hearing the expectations!)
Early versions of the service were built on the newly launched Azure Table Storage. I ended up not waiting for the Secondary Indexes (Good thing too because that feature, promised in 2009, is still missing 5 years later!) and made a hybrid SQL / Table combination. It appeared good on paper and it was seen as a good compromise.
The problem came from the cost of maintaining my indexes for search etc.. Basically I found I was simply working at too low a level of abstraction and trying to hide the underlining implementation was just adding too much mess in my projects.
6 months later the code was ditched and a more traditional standalone database server was adopted.
This all happened a while ago and those design decisions are fairly set in stone.
Fast forward to today and I am once again checking out what is new in cloud land for a new project. I am surprised by Azure’s apparent lack of care for their NoSQL table storage solution. It seems, in my opinion, that they are chasing the brown field projects more than new ‘green field’ ones.
I don’t have any stats for this but maybe the real problem with proprietary NoSQL solutions is that developers are shy about lock-in. I know it is something that I worry about. Can I move my service/web site out of this cloud and into another?
Google’s Cloud Services
Some Feature Highlights:
- Auto Scale
- Schema less
- SQL-Like Querying
- Redundancy (geo-replicated)
- REST Interface
- Very affordable pricing (at least it appears to be)
Some early questions/concerns:
Nuget packages for C# don’t indicate a lot of C# users
Can I store JSON documents? Does it support Full Text Search? Is there LINQ support for querying?