Print

Print


The thing is, the NoSQL stuff is pretty much just a key-value store.  
There's generally no way to "query" the store, instead you can simply 
look up a document by ID.

If this meets the needs of your application, all you need is a key-value 
store, and not any kind of query, then it's definitely going to be a lot 
less overhead than an actual SQL rdbms, and simpler to manage, with 
advantages for scalability and replication etc.  The reason it's simpler 
and more performant, is well, because it's _simpler_, you don't actually 
have querrying or joining abilities.

But if you are actually going to need querrying on values other than 
ID...   SQL rdbms is a pretty standardized, well understood way to do 
this.  There are certainly other ways -- you could combine a "noSQL" 
key-value store with Solr/Lucene, for instance.  Which in some cases may 
get you even better performance and more flexiblity than an rdbms 
solution.  But it's (IMO) going to be a bit harder to set up and manage 
and use in your favorite development environment, precisely because 
rdbms is such a time-tested standardized mature approach. 

So, as usual, the right tool for the job. If all you really need is a 
key-value store on ID, then a "NoSQL" solution may be the right thing.  
But if you need actual querrying and joining, then personally I'd stick 
with rdbms unless I had some concrete reason to think a more complicated 
"nosql"+solr solution was required.  Certainly if you are planning on 
using Solr _anyway_ because your application is a search engine of some 
type, that would lessen the incremental 'cost' of a nosql+solr solution.

[ Note that if all you want is a "schemaless" storage, you CAN just 
stick large chunks of binary or text in an rdbms 'blob' or 'text' 
column.  You won't be able to efficiently search on these -- but you 
aren't able to efficiently search in a 'nosql' solution either.  So you 
_can_ use an rdbms like a "nosql" solution to store arbitrary data, no 
problem.  If you're using an rdbms, you can have _other_ columns in 
addition to your blob/text one, that you can populate for select and 
join.  If you _aren't_ going to need those -- then there's be no reason 
to do it in an rdbms (even though you could), you would indeed then just 
want to use a 'nosql' key-value store solution which will be higher 
performance.  So the conclusion again I think is that rdbms is _more 
powerful_ than nosql, but that power comes with a performance cost.  If 
you don't need it, nosql.  If you do need it -- there's no reason you 
can't store "structureless" units of data in text/blob in an rdbms too. ]

Peter Schlumpf wrote:
> I'd opt for the first response.  I hope NoSQL is not flash in the pan.  It makes eminent sense to me.  SQL is just one way of looking at data.  A level of abstraction.  What authority says that SQL is the only or the best way of looking at a dataset?  Or the MARC record format for that matter?  They certainly weren't inscribed on stone tablets.   These things can become mind prisons.  I think it's refreshing that there are those willing to look at databases beyond SQL.
>
> Peter Schlumpf
> www.avantilibrarysystems.com
>
>
> -----Original Message-----
>   
>> From: Thomas Dowling <[log in to unmask]>
>> Sent: Apr 12, 2010 10:55 AM
>> To: [log in to unmask]
>> Subject: [CODE4LIB] NoSQL - is this a real thing or a flash in the pan?
>>
>> 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
>> work."
>>
>> "Schedule that 2012 re-migration to Oracle or Postgres now."
>>
>> "Bwahahahah!!!"
>>
>> Or something else?
>>
>>
>>
>> (<http://en.wikipedia.org/wiki/NoSQL> is a good jumping-in point.)
>>
>>
>> -- 
>> Thomas Dowling
>> [log in to unmask]
>>