

Ask HN: Introduction to NoSQL? - sjs382

I have trouble wrapping my head around NoSQL. Maybe because relational databases seem so natural to me?<p>Anyone have a good introduction to NoSQL style databases?  When it's appropriate to use them, (dis)advantages of using them, how to query?  Ideally a tutorial of how to build a simple app?
======
figured
Here are a few resources for Couchdb:

* an intro: <http://aimee.mychores.co.uk/2008/09/07/post/320>

* a use case: <http://kore-nordmann.de/blog/couchdb_a_use_case.html>

* CouchDB Implementation: [http://horicky.blogspot.com/2008/10/couchdb-implementation.h...](http://horicky.blogspot.com/2008/10/couchdb-implementation.html)

* joins in couchdb: <http://www.cmlenz.net/archives/2007/10/couchdb-joins>

* peepcode: <http://peepcode.com/products/couchdb-with-rails>

------
emileifrem
For the Neo4j graph database, check out:

* the 10 minute code-level getting started guide: <http://wiki.neo4j.org/content/Getting_Started_Guide>

* a full-blown reference example, including diagrams, graph layout screen shots, code walk through etc: <http://wiki.neo4j.org/content/IMDB_Example>

* the domain modeling gallery, which shows how to model a bunch of domains in a graph db: <http://wiki.neo4j.org/content/Domain_Modeling_Gallery>

* popular blog post about how to model a social network in Neo4j: [http://blog.neo4j.org/2009/09/social-networks-in-database-us...](http://blog.neo4j.org/2009/09/social-networks-in-database-using-graph.html)

* how to work Neo4j in python, ruby, clojure, scala & grails: <http://wiki.neo4j.org/content/Main_Page#Language_bindings>

If you have more questions, feel free go all mailing list on us:
<https://lists.neo4j.org>.

Hope that helps!

------
thomaspaine
I think Redis is one of the easier NoSQL databases to pickup, because it's
easy to install and is mainly just a key-value database with some bonus
features. Your entire DB is stored in memory and persistence is done by
asynchronous writes to disk, so it is possible that you could lose data if
something were to reboot for instance, but it also means that it's really
fast.

Simple twitter clone with Redis:
<http://code.google.com/p/redis/wiki/TwitterAlikeExample>

~~~
sjs382
Entire thing is stored in memory? Uh oh... Haha

------
dageroth
NoSQL is not really one specific database type, quite a lot of very different
apporaches fall under the label. Starting from Key/Value Stores like redis,
over documentbased structures like couchdb and Column-oriented approaches like
Google's BigTable and Apaches HBase to graph-Databases like neo4j. And these
aren't even all types of NoSQL approaches.

Their use depends pretty much entirely on what you'd like to do. Network-
Structures are naturally best suited for graphbased databases. For Scaling
Issues and really fast access redis seems good (haven't used it) and if you
are working on really, really large datasets Hbase combined with hadoop might
be worth a look.

Here is a small overview presentation:
[http://www.slideshare.net/chrisbaglieri/non-relational-
datab...](http://www.slideshare.net/chrisbaglieri/non-relational-
databases-2143723)

------
bjclark
There's lots of types of NoSQL dbs, where would you like to start? Are you
looking for a DocumentDB or a Key/Value store or a Graph DB or a column
oriented db?

Do you have a preference on what language an example app or tutorial is in?

~~~
sjs382
I guess I'm just looking for an introduction to both. They can be different
documents, of course, but it would be nice to have one that compares different
types, too.

No preference RE: language. Python or PHP would be nice but I can read Ruby as
well.

------
Tichy
CouchDB the definitive guide - a work in progress, but it's free and amusing
to read: <http://books.couchdb.org/relax/>

~~~
sjs382
Exactly what I was looking for. Thanks!

------
drhowarddrfine
Chapter 5 of The Art of Unix Programming by esr, "Textuality". That's the
reason I haven't used databases for simpler things in years.

