Re: NoSQL -vs- SQL - Mailing list pgsql-general

From Chris Browne
Subject Re: NoSQL -vs- SQL
Date
Msg-id 87ocaza0dg.fsf@cbbrowne.afilias-int.info
Whole thread Raw
In response to NoSQL -vs- SQL  (Carlos Mennens <carlos.mennens@gmail.com>)
List pgsql-general
carlos.mennens@gmail.com (Carlos Mennens) writes:
> Just wondering how you guys feel about NoSQL and I just wanted to
> share the following article...
>
> http://www.linuxjournal.com/article/10770
>
> Looking to read your feedback and / or opinions.

There's a lot there to agree with, and a lot to "not disagree" with.

A couple of places I'd dispute a bit...

  "So, what is the opposite of ACID? BASE (Basically Available,
   Soft-state, Eventual consistency), of course."

No, that's not the "opposite," by any means.

BASE represents a particular model for relaxation of the ACID model.
Indeed, it's more or less an academic codifying of the consequences of
systems like MQ-Series, which use message queues to allow several ACID
databases to talk to each other, relaxing the "total consistency" of
cross-DB transactions.

  "On the NoSQL side, the only thing in common is that there is nothing
  in common. Each NoSQL database has its own set of APIs, libraries and
  preferred languages for interacting with the data they contain. With
  an RDBMS, it is trivial to get data out in whatever format you need
  using whatever programming language you like best. Your choice of a
  NoSQL database might limit you to one or a handful of programming
  languages and access methods."

This is true, but is further, essentially, a step backwards into the way
databases were handled before SQL.  Back in the Old Days, your database
probably used IMS or CODASYL or some B-Tree library (hmm...  anything
similar here to SleepycatDB versus MongoDB versus Cassandra versus Tokyo
Cabinet?  :-)).

And the only way to extract that data was by writing a program to
traverse the data structure.  At best, you could choose between COBOL
and PL/1, and you'd have to write a separate program for each custom
retrieval.

The move from that to SQL was considered a big step *AHEAD*, because
SQL, being a declarative representation, was inherently a whole lot more
language/OS/framework-independent.  Whoops, "MongoDB is web scale"[1]
breaks all that.

"No schema" means there's no declarative representation, so the notion
of the same data being reusable without having to duplicate the
traversal logic goes away.

What I consider *particularly* bad is that this fails to recognize that
"NoSQL" represents, in considerable part, a throwback to the database
strategies of the 1960s that were consciously rejected in the adoption
of SQL.

[1]  http://andrewjstevens.com/2010/09/mongodb-is-web-scale/
--
(reverse (concatenate 'string "moc.liamg" "@" "enworbbc"))
"Any sufficiently complicated C or Fortran program contains an ad hoc
informally-specified bug-ridden slow implementation of half of Common
Lisp."  -- Philip Greenspun

pgsql-general by date:

Previous
From: Derk Jan Horstman
Date:
Subject: Re: Error while compiling on HP-UX ia64
Next
From: merlyn@stonehenge.com (Randal L. Schwartz)
Date:
Subject: Re: NoSQL -vs- SQL