
NoSQL v. SQL is the worst holy war ever. - cookiecaper
http://www.deserettechnology.com/journal/?p=44
======
xbryanx
The first comment on that post is quite hilarious.

------
dasil003
_NoSQL is designed to address a certain problem space and RDBMS is designed to
address another._

I don't see it that way at all.

It's more like RDBMS is the all-purpose data store that attempts to distill
the maximum number conceivable data storage, integrity constraints and lookup
requirements into a set of powerful primitives. And NoSQL is a large group of
technologies that are each optimized for specific cases which SQL is
traditionally bad at, but which don't necessarily have much in common with
each other.

~~~
bphogan
I agree with this, but I'd add that we developers tend to make an RDBMS do
everything because it's what they're familiar with. NoSQL is an alternative to
solve a specific problem, but you can't see that problem if you're ignorant of
it.

It's like my experience with SVN vs Git. I didn't know how useful and more
efficient my workflow would be if I used branches, so I never saw why Git was
useful. Sure I could branch in SVN, but it was way more work. I got involved
in a project where I had to use git, and I learned how branching works, and
now I use it all the time because I understand where it's applicable.

I don't think you have to choose MySQL over MongoDB. I think you could be very
happy using both, each for its purpose. You don't always know why you need
something until you need it. It's always good to keep an eye on what others
are doing.

~~~
wvenable
The same argument about branches in source control can made about SQL itself.
In my opinion, a large number of developers don't know how to code SQL
properly and a lot are afraid of it. They end up using an RDBMS as nothing
more than a dumb bit bucket -- often hidden behind increasingly complex
abstractions. The NoSQL movement, unintentionally, lets these programmers feel
superior about their lack of knowledge.

I don't want to argue against the legitimate use of NoSQL solutions. I just
don't think there are enough use-cases to justify the hype. For example, an
article was posted here last week about using NoSQL solution to store
e-commerce orders.

~~~
gte910h
I disagree. Lots of applications only require dumb bit buckets. There is no
real sophistication or structure to the data. Anything more is over
engineering for a large majority of products which data storage is not
particularly useful or meaningful.

~~~
bphogan
I worked on a system a couple of years ago where we ran calculations nightly
and then we write the results of this calculation to a row in a table for
caching purposes. This row was then fetched by another job to generate a PDF.
We used SQL for this because Reporting Services could build a pdf from a row
in a table.

It's not a good solution. This type of data doesn't need to be searchable.
It's using a database server as a caching mechanism. That seems wrong. Seems
like memcached, mongo, couch, or anything else would have been better.

Heck, people have been using memcached for a long time, and yet all of a
sudden people don't see a use for NoSQL setups?

Are we sure we're not just doing the same old "Defend what you know" dance?

------
rbranson
The whole idea with "NoSQL" is that you pick the best tool for the job. Most
people that push RDBMS solutions try to shoehorn an RDBMS for every possible
scenario. For modeling the majority of business data, an RDBMS is fine. There
are many problems such as graphs, logs, lossy real-time data, etc that CAN be
modeled in an RDBMS but shouldn't be.

~~~
jasonkester

      The whole idea with "NoSQL" is that you pick the best tool for the job.
    

Stop it. You're doing it again.

The whole idea of "Computer Programming" is that you pick the best tool for
the job. It has nothing to do with NoSQL.

~~~
Groxx
NoSQL is primarily a reaction to the ubiquitousness of relational DBs. It's
providing another tool aside from a hammer.

~~~
msg
Ubiquity

~~~
Groxx
Both are in nearly every dictionary around. And given the base of
"ubiquitous", I prefer adding a "ness" to denote a quality, which is extremely
common in English and can even be applied to words that don't normally accept
it, so it's an easy cognate. Something being cheesy == has cheesiness.
"Ubiquity" is more of a hacked form of a word, as it removes from the base
word.

Though I admit it's shorter, thus may eventually achieve ubiquity over
ubiquitousness.

~~~
Semiapies
Not to continue the content-free let-me-fix-that-for-ya sniping you're
answering, but "ubiquity" dates back to 1579. It's a nice, old word, not a
hack or neologism.

Nonetheless, both words are entirely proper, acceptable, and clear.

------
hartror
What it boils down to is choose the right tool for the job and sometimes that
means using two tools that do similar things. I for one won't be giving up SQL
any time soon but also look forward to replacing some of our poorly performing
sections with NoSQL (we sort of already do thanks to memcache).

------
Legion
I don't know. I think any holy war in which people aren't killed is pretty
good as far as holy wars go.

------
Raphael_Amiard
I can't help but see this post as the blog equivalent of the guy trying to
keep people from fighting in the real life, at the same time trying to draw
attention to him, and at how mature he is.The article has almost no content at
all.

------
thibaut_barrere
I have that wish for humanity: I'd really like people to use words that are in
proportion with what they describe.

Things like: "we're dead" (when we just talk about loosing a contract or even
closing one company), "it's totally catastrophic" (when someone cannot make it
to a meeting, or the vegetables you had planned for dinner are not available
anymore at the groceries).

Come on.

Talking about "worst holy war" for tooling trends - sorry, not for me, even
for the purpose of creating a catchy headline or of underlining a point.

Oh and yes: I use both NoSQL and SQL, sometimes in conjunction in the same
system.

~~~
coderdude
>I use both NoSQL and SQL, sometimes in conjunction in the same system.

As any sane developer would, and without having to go all-or-none either which
way. I don't understand the people who are balls to the wall for _either_
side. They both have a purpose.

~~~
thibaut_barrere
The fights around "tech X is better than tech Y" usually boil down to some
kind of fear (of being replaced, of loosing the job) or biaised-validation of
all the effort already invested in X.

------
kmuzykov
Recently I've researched all NoSQL databases(grpaph oriented to be precise).
We're building a project which I think fits best in NoSQL solution. And I did
not find any suitable solution. Either it doesn't a have client api(we're
using .NET) other then REST or plain TCP/IP (and of course I don't have time
to create my own API) Either this is just some project more like a school
homework.

Do you seriously believe that you can rely your business solution which will
run across dozen of PCs on someones experiment?

~~~
kmuzykov
Another problem is deployment, if I adopt some RDBMS system to my needs, then
I already have a bunch of web hostings supporting this type of DB or I can use
installer to deploy the DB, run a few scripts and everything is ready to run.

~~~
bphogan
Deployment isn't the issue with these - deployment can be automated just as
easily as an RDBMS. Sometimes easier. It's trivial to throw up several
instances of MongoDB for example. As for hosting solutions that support this
stuff, well, I prefer VPSs that I control to shared hosting with Mysql for
anything that's serious.

But you and I appear to have very different needs.

~~~
kmuzykov
I prefer VPSs too, but if you aim wider auditory you should at least try to
support web hosting. With RDBMS it is easy. And with NoSQL it is almost
impossible. Maybe this is just a matter of time, when NoSQL will be as much
widely used as MS SQL for example, then maybe you will be able to use MongoDB
in a web hosting.

~~~
metachor
But if one of the purported values of many NoSQL technologies is their benefit
to scalability, and you are using this tech in your application because the
app needs to scale, then does it make sense to deploy this ultra-scalable app
on shared web hosting (regardless of whether they support NoSQL tech)?

------
haberman
> Relational databases scale. NoSQL databases scale.

This is simply not true, if we're talking about horizontal scalability (which
is probably the most relevant kind of scaling these days, because it's the
most cost-effective).

You can't add more nodes to an RDBMS, keep ACID, and get linear scalability.
You just can't.

From what I know of CouchDB, you could scale it linearly if you manage the
partitioning of data yourself according to load. But if your data distribution
changes you're a bit screwed. My impression though is that most people just
use CouchDB on a single machine.

For BigTable, on the other hand, it really is just a matter of adding or
removing machines at any time and getting nearly linear scaling. The load is
dynamically balanced between machines, so this is actually practical.

Are there ways of scaling an RDBMS architecture? Yes, but they involve giving
up ACID (like having read-only replicas, for example).

So I'm not saying RDMBS's are bad, just that there is a real limitation here.

------
adamilardi
This holy war seems to just be in the open source world. I really don't see
cio's rushing to get rid of oracle/db2/sql server

------
MicahWedemeyer
Best explanation I've heard so far: NoSQL = " _Not Only_ SQL" Pick the right
tool for the job.

------
pw0ncakes
I'm going to declare something else the worst holy war ever.

Then we can have an even worse holy war than ever was before, making ourselves
both wrong.

~~~
nostrademons
I think the Crusades were the worst holy war ever.

There. Problem solved. Unless you wanna kill a few hundred thousand people and
go to war for a few hundred years.

(If I'd said "The holocaust", I could've Godwinned this thread, but that
wasn't really a holy war.)

~~~
arethuza
That's quite an interesting point - if you restrict holy wars to the "my
imaginary friend is better than your imaginary friend.... fight!" kind then
you are probably correct.

I'm trying to think of other real "holy wars" - the 30 Years War is perhaps
the only other major one I can think of. I guess most other "holy wars" are
really justs lingering fall out from conquests Ottoman invasion of Europe,
Ireland, .....

~~~
berntb
The 30 Year War was _really_ a Holy war?

Consider that Sweden, one of the big participants, was financed by the
famously Protestant country France! :-)

