
 The NoSQL Debate: Automatic vs. Manual Transmission - Anon84
http://www.25hoursaday.com/weblog/2010/03/29/TheNoSQLDebateAutomaticVsManualTransmission.aspx
======
ryandvm
Ugh. I can't believe I'm engaging in this, but there really isn't any "debate"
on this issue. At least not between people who know what the hell they are
talking about.

Most of the solutions people are talking about when they mention NoSQL are not
replacements for SQL databases. They are completely _different_ beasts. I
suppose if we're going to use strained metaphors I'd say SQL vs. NoSQL is akin
to diesel vs. a V12. That is they are both fine technologies and, except for
the very loosest of definitions, they do completely different things.

If you think NoSQL and SQL are actually battling, you need to do more
reading...

~~~
tlrobinson
I wonder how much of this crap we would see if the term was something less
inflammatory than "NoSQL".

~~~
japherwocky
is "NoSQL" really that inflammatory?

Personally, I'm drawn to Mongo, etc. because I can develop in my language of
choice, and not have to write/debug SQL of any dialect to store and retrieve
my data.

~~~
timwiseman
_Personally, I'm drawn to Mongo, etc. because I can develop in my language of
choice, and not have to write/debug SQL of any dialect to store and retrieve
my data._

An ORM with a relational database would let you do the same thing.

SQLAlchemy in Python is reasonably good for a project nearing a 1.0 release
and Linq works nicely with C#. Virtually every other major language has at
least one ORM available to it.

That is not to say that a relational database with an ORM is the way for you
to go at all, just that avoiding writing SQL code it probably not the best
reason _by itself_ to choose your database platform.

~~~
JulianMorrison
An ORM is an abstraction layer. Abstraction layers leak. Fancy abstraction
layers like Hibernate add at least as much complexity themselves as learning
raw SQL afresh.

I've learned my lesson - if I'm working over SQL, I'll _use SQL_. Either via
the direct record oriented API of the language, or using a thin abstraction
like iBATIS that wraps the inputs and outputs into convenient data-carriers.

MongoDB is different. The "document" is real to the database. When you're
saying something like "add a foo to the list of foos of record X", that is
pretty close to the low level action that actually gets performed on disk.
There is no abstraction-translation step to get out of whack.

------
pauljonas
Eh, I am old enough to remember when SQL was the new kid on the block and
received nothing but disdain from "database experts" as it was considered toy-
like and not suitable for efficiency and large data sets. I distinctly recall
meetings with DBAs where SQL (and the RDBMS platforms) were ridiculed as PC-
weenie toys for kiddie boxes. That no way could accommodate mission critical
enterprise production systems.

Now, ~20 years later, it's the SQL advocates playing the same role as those
grizzled old champions of mainframe fare hierarchical and VSAM-like
structures.

------
commondream
A lot of people drive cars with manual transmissions because they enjoy
driving them, not necessarily because they can gain any tangible benefit
beyond enjoyment.

I think the same may be true in many cases with NoSQL. I want to try something
different, and it's going to perform better for what I'm doing anyway, so why
not.

In some experiments at work we got SQL server to do a bulk import of around 1
million rows (with quite a few interspersed reads) in around 5m 30s. We got
the same inserts to happen in Mongo in less than a minute. So, we went with
Mongo. Do we need that speed? Maybe, maybe not. It sure has been fun to try
something new, though.

~~~
tpz
On the other hand, many people also drive vehicles with manual transmission
because doing so yields measurable improvements in both power output and fuel
economy. Vehicles with manual transmissions also tend to be more predictably
controlled in adverse weather conditions. Interestingly, but not necessarily
surprisingly, these points translate quite directly into the NOSQL argument.

The downside to the manual transmission is simply that when you don't care to
exert more driving effort in a given situation that doesn't benefit enough
from the increase in enjoyment, power, economy, and control, you're better off
with an automatic in that situation. As before, this aspect also translates
rather nicely. :)

~~~
wvenable
I disagree with the analogy. An ORM is like automatic transmission -- it hides
the details of switching gears but the gears are still there. SQL is manual
transmission: You have maximum flexibility to access your data in a variety of
ways with reasonable performance. NoSQL then is like having no transmission at
all! It's simpler, as there are no gears to shift and no clutch, and it's
faster under very specific conditions. Just as NoSQL has no complex query API
and is optimized to fetch your data in a very specific way.

------
lukev
One thing I've noticed is that the "NoSQL" side of the debate (such as it is)
always beats on MySQL as an example of a relational database.

MySQL, for all its virtues, is like the little kid brother of real RDBMS
systems. Getting slightly improved performance opposed to a NoSQL system is
NOT going to convince someone with a behemoth Oracle rack to switch.

I'd like to see some systems and benchmarks showing how NoSQL systems can
compete in the ridiculously high-volume, high-speed space. And yes, I know
Google does with BigTable, and that it's theoretically possible, but I haven't
seen any implementations prove they can, yet.

------
torial
Personally I found Forbes post re: SSD to be very interesting, and rather than
just claim the debate has denigrated past the point of usefulness -- just
ignore the _rant_ from the other guy and respond to the substantive comments
made by Forbes.

As a person who is investigating NoSQL as viable for a particular task, the
substantive posts on either side have been valuable to me.

------
RyanMcGreal
> Exception of type 'System.OutOfMemoryException' was thrown.

