It is important to note that NoSQL technologies are not planning to replace relational databases. NoSQL databases are supposed to be an option if your data does not fit well within the traditional relational database structure.
@ M C Williams: I think we have found a situation where a NoSQL database will outperform an SQL database: Creating reports from logs of web service/asset accesses.
At least, our initial testing seems to bear this out so far, but, of course, we are still testing. We are starting with an initial data set of 32 million entries (rows) and have seen response times to queries under 10 seconds from MongoDB versus over 4 minutes from MySQL. Now, those were some of our initial results from our testbed on a basic install of each database and importing the data set to each.
We are now trying some tuning to try to make it as fair a test as we can.
"I do not feel obliged to believe that the same God who has endowed us with sense, reason, and intellect has intended us to forgo their use."
-- Galileo Galilei
Remember that the "S" in "SQL" stands for "Structured". So when you find yourself in a situation where you are having difficulty in fitting your data into the SQL kind of structure, maybe that's the time for NoSQL. On the other hand it's possible that you're just having difficulty because you don't have enough SQL experience; this kind of decision is never clear-cut.
M C Williams
Joined: Nov 11, 2005
Sounds interesting - I have been doing a fair amount of reporting from webapp log files recently. I'd be interesting in seeing more about what you have done (though probably not in this thread as to not hijack it further )
More on the subject of this thread, I come at this from working with relational databases for years, so I find it easy to visualize my data storage needs this way when working on a design. In my one experience with ORM tools (TOPLink) I wasn't too impressed with it, and could never understand why developers would want to hide from the tables and the SQL. Perhaps that is why I have a hard time wrapping my brain around the benefits and practical uses of a NoSQL-type approach.
I think when reporting you are dealing with the actual data, as it lies in the tables while what ORMs do is make it easy to allow interaction with the data - Make them objects so that you can do business logic with them. That, in my opinion is what makes ORMs click.
For RDBMS, the basis is relational theory and on Web Scale, there are physical problems that are not addressed. Relational Theory does not account for the physical limitations that go into making the data always available and consistent. It could be argued that this is exactly where NoSQL comes in, but I think its also got to do with the ability of not making the schema center stage.
No, I don't that they will "dominate" per se. I believe that RDBMSs will be important for a long time. However, I do think that there are quite a few use cases that are more compelling for NoSQL databases than for RDBMSs.
Could you please elaborate on the cases where NoSQL gets applicable as against RDBMS?
NoSQL is about "data management scalability at low cost" first and foremost. There are some technical features that are also important, but they come secondary. With enough effort (HW and SW) you can solve most of the technical problems with RDBMS systems. However, the whole reason that NoSQL was invented was to deal with the fact that it’s too expensive to manage Big Data using general purpose RDBMS systems.
As per the CAP theorem, a distributed system can satisfy any two of these guarantees at the same time, but not all three. RDBMS products focus on CA, where as NoSQL products focus on AP. There is a very nice White-Paper on OTN about NoSQL DB technology that I would highly recommend you all to read.