Professional Documents
Culture Documents
Eric Redmond
@coderoshi
Terminology
basho
basho
(btw, were hiring)
NoSQL is not a
useful model.
the premiss
Sorry
NoSQL is ill-defined
NoSQL is ill-defined
NAASQL
Pronounced: Nazgl
Perceived Deficiencies
Slower development
Actual Deficiencies
High Availability
NoSQL is a
Bad Classifier
DB Classifications
Classify by Models
Graph
Columnar
Key/Value
Document
Graph
http://en.wikipedia.org/wiki/Graph_database
Cypher
START
x=node(0)
MATCH
x
RETURN
x.name
Graph Stores
Titan (distributed)
Key/Value Stores
LevelDB (embeddable)
Column Store
row keys
w
o
r
w
o
r
"a key"
"a key"
column family
column family
column: "value"
column: "value"
column: "value"
column: "value"
column: "value"
column: "value"
Columnar Stores
Accumulo (compressed)
Document Datastore
{
"_id"
:"2612672603",
"_rev"
:
"4db7ca268e236e5bf9a52224",
"name"
:
"Sant
Juli
de
Lria",
"country"
:
"AD",
"Umezone"
:
"Europe/Andorra",
"populaUon"
:
8022,
"locaUon"
:
{
"laUtude"
:
42.46372,
"longitude"
:
1.49129
}
}
Document Stores
Cassandra (K/V)
ArangoDB (Document)
Graph
Other
Classify by Topology
Single Node
Mesh Network
Tree/Star Topologies
Single-Node
Neo4j (graph)
LevelDB (key/value)
HBase (columnar)
CouchDB (document)
Why Distribution?
http://aphyr.com/posts/313-strong-consistency-models
Harvest/Yield Tradeoff
You cant guarantee 100% harvest and 100% yield
Synchronicity is not
the only problem
Synchronicity is not
the only problem
Intention is the problem
Mesh Networks
Riak
HBase
Couchbase
BigCouch
Partial Mesh
Riak + MDC
HBase
Cassandra
Tree/Star
Mongo
HBase
PostgreSQL/MySQL cluster
Classify by Natural
Distribution
Hard to distribute
Graphs
Relational Joins
Easy to distribute
Key/values
What else?
HA/SC, Harvest/Yield
The Future
#emotionalAppeal
Harvest/Yield: http://radlab.cs.berkeley.edu/people/
fox/static/pubs/pdf/c18.pdf
SC Models: http://aphyr.com/posts/313-strongconsistency-models