tags:

views:

969

answers:

8

in this post Stack Overflow Architecture i read about something called nosql, i didn't understand what it means, and i tried to search on google but seams that i can't get exactly whats it.

Can anyone explain what nosql means in simple words?

+2  A: 

Put simply, it means not using a relational database for data storage.

Here's a relevant article: http://www.computerworld.com/s/article/9135086/No_to_SQL_Anti_database_movement_gains_steam_

Dave Costa
+6  A: 

From the NoSQL Homepage

NoSQL is a fast, portable, relational database management system without arbitrary limits, (other than memory and processor speed) that runs under, and interacts with, the UNIX 1 Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review", March, 1991, page 24, entitled "A 4GL Language". There are a number of "operators" that each perform a unique function on the data. The "stream" is supplied by the UNIX Input/Output redirection mechanism. Therefore each operator processes some data and then passes it along to the next operator via the UNIX pipe function. This is very efficient as UNIX pipes are implemented in memory. NoSQL is compliant with the "Relational Model".

I would also see this answer on Stackoverflow.

David Basarab
Never knew that NoSQL was an actual product but everyone talking about NoSQL nowadays mean non-RDBMS (see Jon's answer, for example).
Artem Russakovskii
Looking at the article (great article), I think he's referring to the NoSQL movement rather than the specific tool.
Jon Smock
+13  A: 

If you've ever worked with a database, you've probably worked with a relational database. Examples would be an Access database, SQL Server, or MySQL. When you think about tables in these kinds of databases, you generally think of a grid, like in Excel. You have to name each column of your database table, and you have to specify whether all the values in that column are integers, strings, etc. Finally, when you want to look up information in that table, you have to use a language called SQL.

A new trend is forming around non-relational databases, that is, databases that do not fall into a neat grid. You don't have to specify which things are integers and strings and booleans, etc. These types of databases are more flexible, but they don't use SQL, because they are not structured that way.

Put simply, that is why they are "NoSQL" databases.

The advantage of using a NoSQL database is that you don't have to know exactly what your data will look like ahead of time. Perhaps you have a Contacts table, but you don't know what kind of information you'll want to store about each contact. In a relational database, you need to make columns like "Name" and "Address". If you find out later on that you need a phone number, you have to add a column for that. There's no need for this kind of planning/structuring in a NoSQL database. There are also potential scaling advantages, but that is a bit controversial, so I won't make any claims there.

Disadvantages of NoSQL databases is really the lack of SQL. SQL is simple and ubiquitous. SQL allows you to slice and dice your data easier to get aggregate results, whereas it's a bit more complicated in NoSQL databases (you'll probably use things like MapReduce, for which there is a bit of a learning curve).

Jon Smock
Yeah, I'm pretty sure anyone mentioning NoSQL is talking about the concept and not a specific tool.
Artem Russakovskii
Yeah I don't think I realized there was a specific NoSQL tool before I read David's answer. I always think of the concept. Thanks, Artem.
Jon Smock
Good explanation with columns.
fastcodejava
+2  A: 

NoSql is the new database philosophy which talks about all the shortcomings of the relational database design, particularly the problems they have in scaling up for today's demanding web environments.

NoSql is quickly evolving into a movement with new tools, software and formats coming up as alternative to SQL.

RDBMS is as ubiquitous as OOP and while both of these design methodologies solve some problems wonderfully, they don't solve all.

So think of NoSql as the functional programmin of the database world.

Was this simple enough?

Cyril Gupta
+3  A: 

NoSQL is the idea that SQL-type databases don't satisfy the demands/requirements of a heavily-used database that requires transactions be reliable and failsafe (or close to it). This ties into the ideas of ACID and CAP, both things worth looking into but not something to lose sleep over unless you run a really popular site that is transaction-heavy (ie Amazon or Ebay). To get a great start on these subjects, I suggest:

http://www.eflorenzano.com/blog/post/my-thoughts-nosql/

and

http://www.julianbrowne.com/article/viewer/brewers-cap-theorem

Anthony
+1 for CAP theorem
ewernli
+1  A: 

Something everyone considering a "nosql" approach should consider:

(I shan't risk putting the image into this post as it contains a curse word, and I don't want offensive flags. So clicker beware -- there's an f-word in there. Only click if you have a sense of humor.)

http://browsertoolkit.com/fault-tolerance.png

SquareCog
+1  A: 

Found this nice article about no-sql

and this as well: NoSQL, Yes Search

Amr ElGarhy
+1  A: 

See this question.

Cal Jacobson