Re:Why I Migrated Away From MongoDB
by edwardcapriolo on Monday September 17, 2012 @01:51PM
(#4533813)
MongoDB is not even remotely close big table architecture. It has a different data model and a different sharding model, and just about a different everything.
Re:Why I Migrated Away From MongoDB
by stingraycharles on Tuesday September 18, 2012 @09:56AM
(#4537970)
I know that MongoDB is very different in architecture from BigTable (as opposed to HBase and BigTable, for example), but I always understood that the fundamental way they choose to assign and lookup regions to regionservers (or, in mongodb terminology, shards and shard servers) was based on the BigTable architecture.
Could you elaborate on the differences in the sharding model between the two?
You said that you don't like the availability issues then state "but at the moment MongoDB is about as good as it gets."?
Just. Wow.
Get your head out of the sand mate. MongoDB is nowhere NEAR as good as it gets.
Re:Why I Migrated Away From MongoDB
by stingraycharles on Tuesday September 18, 2012 @09:54AM
(#4537961)
I think you misunderstood what I meant; I meant that MongoDB is as good as it gets for our requirements, not availability-wise. I agree if availability is your only concern, there are far better solutions.
The majority of the NoSQL databases are based on Amazon's Dynamo: loosely coupled replication. MongoDB is one of the few (next to Hbase and a few others) that adopts Google BigTable's architecture: data is divided in Ranges, and each mongod node serves multiple Ranges.
This means MongoDB is able to provide atomicity where it's harder with other SQL databases. In particular, we need to be able to do some sort of "compare and swap" operation that is guaranteed to be atomic/consistent, while still being able to have our mongod nodes distributed over multiple datacenters.
In Dynamo-based architectures, in order to provide the same amount of atomicity, you always end up writing to at least half + 1 the amount of replicated nodes you have available in your cluster. This is more awkward, and reduces the flexibility of the whole (the atomicity guarantee Mongo provides also works for stored javascript procedures, for example).
Having said that, we're using MongoDB about 3 years in production at this point, but we're far from happy about the availability it provides (issues like MongoDB not detecting that a node has gone down, failing to fail over, etc). We run a HA service, and to date all of our failures in uptime have been either the fault of our hosting provider or mongodb not failing over when it should. As such, we're always looking for a better alternative to move to, but at the moment MongoDB is about as good as it gets.