SQL-style JOINs can be done in CouchDB (can't speak for the other NoSQL
In CouchDB, it's called view collation:
It's a different way of thinking (as there are no tables, and map/reduce
goes through every document to generate it's output), but it is possible
to get interestingly combined data out of the whole database.
On 4/12/10 11:08 AM, Robert Sanderson wrote:
Depends on the sort of features required, in particular the access
patterns, and the hardware it's going to run on.
In my experience, NoSQL systems (for example apache's Cassandra) have
extremely good distribution properties over multiple machines, much
better than SQL databases. Essentially, it's easier to store a bunch
of key/values in a distributed fashion, as you don't need to do joins
across tables (there aren't any) and eventually consistent systems
(such as Cassandra) don't even need to always be internally consistent
If many concurrent write accesses are required, then NoSQL can also be
a good choice, for the same reasons as it's easily distributed.
And for the same reasons, it can be much faster than SQL systems with
the same data given a data model that fits the access patterns.
The flip side is that if later you want to do something that just
requires the equivalent of table joins, it has to be done at the
application level. This is going to be MUCH MUCH slower and harder
than if there was SQL underneath.
On Mon, Apr 12, 2010 at 7:55 AM, Thomas Dowling<tdowl...@ohiolink.edu> wrote:
So let's say (hypothetically, of course) that a colleague tells you he's
considering a NoSQL database like MongoDB or CouchDB, to store a couple
tens of millions of "documents", where a document is pretty much an
article citation, abstract, and the location of full text (not the full
text itself). Would your reaction be:
"That's a sensible, forward-looking approach. Lots of sites are putting
lots of data into these databases and they'll only get better."
"This guy's on the bleeding edge. Personally, I'd hold off, but it could
"Schedule that 2012 re-migration to Oracle or Postgres now."
Or something else?
(<http://en.wikipedia.org/wiki/NoSQL> is a good jumping-in point.)