NoSQL Zone is brought to you in partnership with:

Developer with experience in a variety of different systems and technologies, with a customer focus and balance with business goals. Particularly interested in backend and large scale systems, and also interested in high level architecture, and API design. Always open to feedback in order to keep learning and improving as a professional. Rodrigo is a DZone MVB and is not an employee of DZone and has posted 39 posts at DZone. You can read more from them at their website. View Full User Profile

MongoDB, Maturity, and "let's implement ourselves"

09.15.2012
| 4830 views |
  • submit to reddit

One common theme I've seen in the past few years is developers downplaying products and features that typically take a long time to implement and to get to a mature state, like data store and data replication. Even when the discussion is finished with the answer is that "our problem is much more limited", "it can't be that difficult", or the plain "we're smart than they are", I haven't been really convinced that the advocates of implementing their own feature (you name it) really knew the consequences of moving forward with it.

An example of how some things are very complex, let's take a look at MongoDB. Here you can find a couple of good posts on the topic of maturity:

How much credibility does the post "Don't use MongoDB" have?
Which companies have moved away from MongoDB and why?
Goodbye MongoDB
Don't use MongoDB

10gen is the company behind MongoDb and we're talking about tens of people working on this system for years - and it still has its issues. This is just normal. I once heard that it takes around 10 years to have a mature DB system - yes, 10 years.

Above you can see that replication is one of the common issues. If you go ahead and download MongoDB source code, you will see that it is under 7,000 lines of code. To repeat the common question: "How hard can it be?", how hard can it be to get 7,000 lines of code right? :-)

Long time back, when I worked on the Linux kernel, my changes amounted to around 5,000 lines of code. Those were the hardest 5,000 lines of code I wrote - hardest to get to work, to get to some stability. And I was able to make good progress with a lot of people trying it out and providing feedback, but it was still far from really declaring a stable patch that anyone in the world could use. And that was a code for non-distributed system, without all the complexities of remote failures, network partition, etc.

 

Published at DZone with permission of Rodrigo De Castro, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)