views:

1097

answers:

5

Hi all,

I've seen NoSQL pop up quite a bit on SO and I have a solid understanding of why you would use it (from here, Wikipedia, etc). This could be due to the lack of concrete and uniform definition of what it is (more of a paradigm than concrete implementation), but I'm struggling to wrap my head around how I would go about designing a system that would use it or how I would implement it in my system. I'm really stuck in a relational-db mindset thinking of things in terms of tables and joins...

At any rate, does anybody know of a crash course/tutorial on a system that would use it (kind of a "hello world" for a NoSQL-based system) or a tutorial that takes an existing "Hello World" app based on SQL and converts it to NoSQL (not necessarily in code, but just a high-level explanation).

I see this having one solid answer, but if you guys feel like it should be community wiki, I'll be happy to change it.

Thanks! Chris

A: 

Take a look at this video from DNR TV, doing som hands on with mongodb. Might be nice for a first introduction.

nos
+2  A: 

Here is a decent slide show introducing MongoDB. I think some of the big differences is that most of the systems rely on Active Record or some similar database abstraction.

Also I found a wonderful free orlys book on Couch DB here, which is pretty awesome.

Joseph Silvashy
+2  A: 

At its most basic form NoSQL is really no more than a way of storing objects using some sort of key/value pairing system. You use this all the time already I assume. For instance. in javascript you can create an object named foo and then do foo['myobj'] = myobj to store stuff in the object.

All NoSQL servers really do is give you a way to add/delete/query massive arrays and still allow for persistence and fault tolerance. You can create a NoSQL in memory server in about 100 lines of code.

So let's do it this way...in CouchDB you use map/reduce...so let's create a map function do to the same as a bit of SQL code:

SELECT * FROM users WHERE age > 10

In CouchDB you provide the server with a Javascript function that gets run against every item in the database...

function (doc)
{
    if (doc.objType == "users") {
       if (doc.age > 10) {
           emit(doc._id, null)
       }
    }
}

That's all there really is to it.....it gets way more complex from there on the server end, as the server has to handle crashes, and multiple revisions of the same object, but this is just an example.

Timothy Baldridge
A: 

y_serial is written as a single Python module which reads like a working tutorial and includes many tips and references: http://yserial.sourceforge.net/

This takes the perspective of how to persist an arbitrary Python object (e.g. a dictionary data structure) in a "NoSQL" (Not only SQL) manner.

code43
A: 

There is one on Infoq Graph Databases, NOSQL and Neo4j