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).
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.
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.
Take a look at this video from DNR TV, doing some hands on with MongoDB. Might be nice for a first introduction.
mongoDB website provides a great 10-step tutorial in a form of online mongoDB shell simulation. it takes 10 minutes to complete and is a really great way to get started with noSQL!
http://www.mongodb.org/ (click "try it out")
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.
There is one on Infoq Graph Databases, NOSQL and Neo4j
If you like Neo4j see this cool presentation
An excellent tutorial on CouchDB: http://net.tutsplus.com/tutorials/getting-started-with-couchdb/
Here are my NoSQL Resources:
Beginners tutorial for nosql: http://www.tutorialindustry.com/nosql-tutorial-for-beginners
for MongoDB: http://www.tutorialindustry.com/mongodb-tutorial-for-beginners
for CouchDB: http://www.tutorialindustry.com/couchdb-tutorial-for-beginners
for Redis: http://www.tutorialindustry.com/redis-tutorial-for-beginners