5. Define NoSQL
(from: http://martinfowler.com/bliki/NosqlDe nition.html)
Not using the relational model (nor the SQL language)
Open source (mostly)
Designed to run on large clusters (mostly)
Based on the needs of 21st century web properties
No schema, allowing elds to be added to any record without controls
6. 4 kinds of NoSQL Database
Key-Value (e.g. BerkeleyDB, Redis)
Document (e.g. MongoDB, CouchDB)
Column Family (e.g. Cassandra, Vertica)
Graph (e.g. Neo4j, In niteGraph)
Most content stolen from NoSQL Distilled: A Brief Guide to the Emerging
World of Polyglot Persistence Paperback – August 18, 2012 by Pramod J.
Sadalage, Martin Fowler
7. Key Value
Definition
A simple hash table, primarily used when all access to
the database is via primary key
Example
<SEThobbit:name"baggins"
OK
<GEThobbit:name
"baggins"
9. Document Database
Definition
... documents are self-describing, hierarchical tree
data structures which can consist of maps, collections
and scalar values.
Example
{
"_id":1,
"name":{
"first":"Bilbo",
"last":"Baggins"
},
"comment":"Aren'twegladthishobbitbusinessisdone?"
}
11. Column Family Stores
Definition
... store data with keys mapped to values and the
values grouped into multiple column families, each
column family being a map of data
Example
{
"bilbo":{
age:"eleventysix",
surname:"baggins"
},
"frodo":{
nickname:"Mr.Frodo",
surname:"Baggins"
}
13. Graph Databases
Definition
... store entities and relationships between those
entities.
Example
create(bilbo:Hobbit{name:'BilboBaggins'});
create(frodo:Hobbit{name:'FrodoBaggins'});
create(bilbo)-[:UNCLE_OF]->(frodo);
17. Chart or Graph?
From Ancient Greek su x -γραφω (-graphō), from
γράφω (gráphō, “to scratch, to scrape, to graze”),
from whence also -graphy.
Wiktionary
18. Chart or Graph?
Every invariant and covariant thus becomes
expressible by a graph precisely identical with a
Kekuléan diagram or chemicograph.
JJ Sylvester, 1878
image: Wikipedia
45. About Neo4j
Drivers for Java, Ruby, Python, Scala, Perl, Clojure (and more)
GPL Community edition
AGPL Enterprise
Written in Java and Scala
Open sourced in 2007
https://github.com/neo4j/neo4j
http://neo4j.com