KVIV / NoSQL : the new generation of database servers
-
Upload
ngdata -
Category
Technology
-
view
2.402 -
download
0
description
Transcript of KVIV / NoSQL : the new generation of database servers
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
NoSQLde nieuwe generatie van database serversKVIV IT - 3/6/2010
http://www.flickr.com/photos/wolfgangstaudt/2215246206/
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Who am I
» Steven Noels - [email protected]
»Outerthought : scalable content applications
»makers of Daisy and Lily open source CMS
2
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
An evolution driven by pain.
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
History
4
hierarchical databases
IMS
OODBMS
XMLDB RDBMS
1. standardization
2. simplification
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
History
5
RDBMS NOSQL
cachingdenormalisationshardingreplication ...
3. pain
4. rethinkingthe problem
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scalability
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Numbers of scale
7
http://qos.doubleclick.net/counters/
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Types of scaling
8
» scaling for usage» volume of users
» volume of data
availabilityreplication
» scaling types of ops» concurrent read
» concurrent write
partioningconsistency
distribution
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scaling
9
database app server users
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scaling
10
database app server users
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scaling: vertical partitioning
11
database app server users
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scaling: horizontal partitioning
12
databases app servers users
complexity
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scaling through architecture
13
data layer app layer users
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Distributed systems are hard !
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
8 fallacies of distributed computing» The network is reliable.
» Latency is zero.
» Bandwidth is infinite.
» The network is secure.
» Topology doesn't change.
» There is one administrator.
» Transport cost is zero.
» The network is homogeneous.
15
Pete
r D
euts
ch a
nd Ja
mes
Gos
ling
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Scaling relational systems
16
»When scaling relational systems you loose their advantages but retain their overhead
»The pain is all about locking (i.e. writes)
»Caching alleviates the read pain to the cost of complexity
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 17
The Perspective of Cost
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Enter NoSQL
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Cambrian Explosion
19
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 20
?Buzz-oriented development
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Cambrian Explosion
21
N-O-SQL
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 22
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Common themes
23
» SCALE SCALE SCALE
» new datamodels
» devops
»N-O-SQL
»The Cloud :technology is of no interest anymore
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
New Data
» sparse structures
»weak schemas
» graphs
» semi-structured
» document-oriented
24
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
NoSQL
»Not a movement.
»Not ANSI NoSQL-2010.
»Not one-size-fits-all.
»Not (necessarily) anti-RDBMS.
»No silver bullet.
25
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
NoSQL = pro Choice
26
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
NoSQL = toolbox
27
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
The NOSQL footprint
28
AC
ID,
sim
ple
oper
atio
nal
const
rain
ts
free-structured or sparse data
SQL
NOSQL
referential integrity,typed data
high
ly scalable an
davailab
le (com
plex
ity)
HBase
Cassandra
CouchDB
MongoDB
neo4j
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
NOSQL, if you need ...
» horizontal scaling (out rather than up)
» unusually common data (aka free-structured)
» speed (especially for writes)
» the bleeding edge
29
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
SQL/RDBMS, if you need ...
» SQL
»ACID
» normalisation
» a defined liability
30
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Theory
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Academic background
»Amazon Dynamo
»Google BigTable
» Eric Brewer CAP theorem
32
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Amazon Dynamo
33
» coined the term ‘eventual consistency’
» consistent hashing
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Consistent hashing
34
- node C+ node D
http://www.lexemetech.com/2007/11/consistent-hashing.html
»multi-dimensional column-oriented database
» on top of GoogleFileSystem
» object versioning
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Google BigTable
35
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CAP theorem
36
strong consistency
highavailability
partition-tolerance
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CAP
»Strong Consistency: all clients see the same view, even in the presence of updates
»High Availability: all clients can find some replica of the data, even in the presence of failures
»Partition-tolerance: the system properties hold even when the system is partitioned
37
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Culture Clash
38
»ACID» highest priority: strong
consistency for transactions
» availability less important
» pessimistic
» rigorous analysis
» complex mechanisms
» BASE» availability and scaling
highest priorities
» weak consistency
» optimistic
» best effort
» simple and fast
spectrum
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Availability ≠ total async !
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
The Enterprise Service Bus
40
✘bus =
congestion
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Bus systems
41
» objects don’t fit in a pipe
» object ➙ message
» serialization / de-serialization cost
»message size
» queuing = cost
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Use a mixture of both
»async + sync
42
stuff which matters !
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Processing large datasets :
Map/Reduce
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Hadoop: HDFS + MapReduce» single filesystem + single execution-space
44
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
MapReduce example: WordCount
45
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Hadoop ecosystem» Hadoop Common
» Subprojects
» Chukwa: A data collection system for managing large distributed systems.» HBase: A scalable, distributed database that supports structured data storage for
large tables.» HDFS: A distributed file system that provides high throughput access to application
data.» Hive: A data warehouse infrastructure that provides data summarization and ad hoc
querying.
» MapReduce: A software framework for distributed processing of large data sets on compute clusters.
» Pig: A high-level data-flow language and execution framework for parallel computation.
» ZooKeeper: A high-performance coordination service for distributed applications.» Mahout: machine learning libaries
46
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Processing large datasets with MR
47
»Benefit from parallellisation
» Less modelling upfront (ad-hoc processing)
»Compartmentalized approach reduces operational risks
»AsterData et al. have SQL/MR hybrids for huge-scale BI
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Market overview
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Four Trends
»Trend 1 : Data Size
»Trend 2 : Connectedness
»Trend 3 : Semi-structure
»Trend 4 : Architecture
49
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 50
2006 2007 2008 2009 2010
0
250
500
750
1000
161
253
397
623
988
ExaBytes (10!") of data stored per year
3
Trend 1: Data size
Data source: IDC 2007
Each year more and more digital data is created. Over two years we create more digital data than all the data created in history before that.
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 51
Trend 2: Connectedness
4
Text documents
1990
Info
rmat
ion
conne
ctiv
ity
Folksonomies
Tagging
User-generated
contentWikis
RSS
Blogs
Hypertext
2000 2010 2020
web 1.0 web 2.0 “web 3.0”
Ontologies
RDF
Giant
Global
Graph (GGG)
Over time data has evolved to be more and more interlinked and connected.Hypertext has links,Blogs have pingback,Tagging groups all related data
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 52
Trend 3: Semi-structure
5
! Individualization of content
• In the salary lists of the 1970s, all elements had exactly one job
• In the salary lists of the 2000s, we need 5 job columns! Or 8?
Or 15?
!All encompassing “entire world views”
• Store more data about each entity
!Trend accelerated by the decentralization of content generation
that is the hallmark of the age of participation (“web 2.0”)
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 53
Trend 4: Architecture
6
DB
Application
1980s: Mainframe applications
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 54
Trend 4: Architecture
7
DB
Application
1990s: Database as integration hub
Application Application
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 55
DBDB DB
Trend 4: Architecture
8
Application
2000s: (moving towards) Decoupled serviceswith their own backend
Application Application
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Products overview
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
We welcome the Polyglot Persistence overlords.
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Categories
» key-value stores
» column stores
» document stores
» graph databases
58
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Key-value stores
» Focus on scaling to huge amounts of data
»Designed to handle big loads
»Often: cfr. Amazon Dynamo
» ring partitioning and replication
»Data model: key/value pairs
59
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Key-value stores
»Redis
»Voldemort
»Tokyo Cabinet
60
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Redis
»REmote DIctionary Server
» http://code.google.com/p/redis/
» vmware
61
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Redis Features» persisted memcache, ‘awesome’
» RAM-based + persistable
» key ➙ values: string, list, set
» higher-level ops
» i.e. push/pop and sort for lists
» fast (very)
» configurable durability
» client-managed sharding
62
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Voldemort
» http://project-voldemort.com/
63
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Voldemort
» persistent
» distributed
» fault-tolerant
» hash table
64
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Voldemort
65
API: GET, PUT,DELETE
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Voldemort
66
routing logic moving up the stack,smaller latency
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Column stores
»BigTable clones
» Sparseness!
»Data model: columns ➙ column families ➙ ACL
»Datums keyed by: row, column, time, index
» Row-range ➙ tablet ➙ distribution
67
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Column stores
»BigTable
»HBase
»Cassandra
68
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
BigTable
» http://labs.google.com/papers/bigtable.html
» layered on top of GFS
69
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
HBase
» http://hadoop.apache.org/hbase/
» StumbleUpon / Adobe / Cloudera
70
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
HBase
» sorted» distributed» column-oriented»multi-dimensional» highly-available» high-performance
» persisted» storage system
» adds random access reads and writes atop HDFS
71
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
HBase data model
72
»Distributed multi-dimensional sparse map
»Multi-dimensional keys:(table, row, family:column, timestamp) → value
»Keys are arbitrary strings
»Access to row data is atomic
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Storage architecture
73
© lars george
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Cassandra
» http://cassandra.apache.org/
»Rackspace / Facebook
74
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Cassandra
»Key-value store (with added structure)
»Reliability (identical nodes)
» Eventual consistent
»Distributed
»Tunable
» Partitioning
» Replication
75
CA
P
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Cassandra applicability
76
FIT
» Scalable reliability (through identical nodes)» Linear scaling»Write throughput» Large Data Sets
NO FIT
» Flexible indexing»Only PK-based
querying»Big Binary Data» 1 Row must fit in
RAM entirely
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 77
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 78
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Document databases
»≈ K/V stores, but DB knows what the Value is
» Lotus Notes heritage
»Data model: collections of K/V collections
»Documents often versioned
79
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Document stores
»CouchDB
»MongoDB
»Riak
»MarkLogic
80
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CouchDB
» http://couchdb.apache.org/
» couch.io
81
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CouchDB
» fault-tolerant
» schema-free
» document-oriented
» accessible via a RESTful HTTP/JSON API
82
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CouchDB documents
{ “_id”: ”BCCD12CBB”, “_rev”: ”AB764C”, “type”: ”person”, “name”: ”Darth Vader”, “age”: 63, “headware”: [“Helmet”, “Sombrero”], “dark_side”: true }
83
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CouchDB REST API
»HTTP
» PUT /db/docid
»GET /db/docid
» POST /db/docid
»DELETE /db/docid
84
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CouchDB Views»MapReduce-based
» Filter, Collate, Aggregate
» Javascript
85
function (Key, Values) { var sum = 0; for(var i in Values) sum += Values[i]; return sum; }
function (doc) { for(var i in doc.tags) emit(doc.tags[i], 1); }
map reduce
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
CouchDB
» be careful on semantics
» replication ≠ partioning/sharding !
» distributed database = distributable database
» sharded / distributed deploymentrequires proxy layer
86
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
MongoDB
» http://www.mongodb.org/
» 10gen
87
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
MongoDB
» cfr. CouchDB, really
» except for:
»C++
» performance focus
» runtime queries (mapreduce still available)
» native drivers (no REST/HTTP layering)
» no MVCC: update-in-place
» auto sharding (alpha)
88
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Graph databases
» Focus on modeling structure of data - interconnectivity
» Scale, but only to the complexity of data
»Data model: property graphs
89
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Graph databases
»Neo4j
»AllegroGraph (RDF)
90
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Neo4j
» http://neo4j.org/
»Neo Technology
91
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Neo4j» data = nodes + relationships + key/value properties
92
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Neo4j
»many language bindings, little remoting
» ‘whiteboard’ friendly
» scaling to complexity (rather than volume?)
» lots of focus on domain modelling
» SPARQL/SAIL impl for triple geeks
»mostly RAM centric (with disk swapping & persistence)
93
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Market maturization
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Rise of integrators
»Cloudera (H-stack)
»Riptano (Cassandra)
»Cloudant (hosted CouchDB)
» (Outerthought: HBase)
95
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
VC capital
»Cloudera
» couch.io
»Neo
» 10gen
»many others
96
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Experiences & (h)in(d)sights
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 98
the fireside conversations
http://www.flickr.com/photos/52641994@N00/516394238/
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
NOSQL applicability
»Horizontal scaling
»Multi-Master
»Data representation
» search of simplicity
» data that doesn’t fit the E-R model(graphs, trees, versions)
» Speed
99
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Tool selection
» be careful on the marketeese:smoke and mirrors beware!
»monitor dev list, IRC, Twitter, blogs
»monitor project ‘sponsors’
»mix-and-match: polyglot persistency
»DON’T NOSQL WITHOUT INTERNAL SYS ARCHS & DEV(OP)S !
100
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 101
Our Context: Lily
» cloud-scalable content store and search repository
» successor (in many ways) of Daisy
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
aptness
complexity
inte
rnet
ente
rpri
seco
rpor
ate
com
mun
ity
NOSQL}S
QL}
102
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Lily essentials
» (open source)
» scalable store (Apache HBase)
» and search (Apache SOLR)
» content repository
»α due mid 2010
»www.lilycms.org or @outerthought
103
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Choosing a NoSQL store for Lily: step I
» automatic scaling to large data sets
» fault-tolerance
» flexible datamodel with sparse data
» commodity hardware
» efficient random access
» community-based open source
» Java if possible
104
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
» need for consistency
» atomic single-row updates
»M/R for index regeneration
105
Choosing a NoSQL store for Lily: step II
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
HBase» datamodel with column families and cell
versioning
» ordered tables with range scans
»HDFS for blob storage
»Apache
106
Choosing a NoSQL store for Lily: step III
lily simplified architectureIIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 107
Lily client
client
client
Lily store node
store node
store node
distributed process coordination
and configuration (ZooKeeper)
query indexerupdate
WAL M/RMQ
documents2ary
indexes
WAL /
MQ
}
}
}
Lily Store Server
HBase Region Server
Hadoop DFS
index replica
replica replica
} SOLR
inverted index
REST
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 108
lily architecture
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 109
lily distributed architecture
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Distribution,durability,and availabilityis everywhere
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
When combining store and search, make sure your (search) index doesn’t become the store.
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Key lessons learned
112
» unlearning normalization is very difficult
» integrity checking in code = not so bad
» doing joins in code can be very liberating
» importance of keyspace design
» secondary indexing
» data de-normalization = size! (x3)
» schema vs. code flexibility?
» distribution is everywhereand you shouldn’t forget about it
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Mis-use cases
» SQL (or ORM) is a prerequisite
»Deeply hierarchical datasets (unless graph)
»Data integrity is listed on DBA job description
»High-security apps (enforced in DB)
»Transactional data (banking)
»Usage is highly unpredictable, combinatorial, or likely to change suddenly
113
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Reading material
»Amazon Dynamo, Google BigTable, CAP
» http://nosql.mypopescu.com/
» http://nosql-database.org/
» http://twitter.com/nosqlupdate
» http://highscalability.com/
114
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org
Questions?
115
http://www.flickr.com/photos/leehaywood/4237636853/
IIC » TECHNOLOGIEPARK 3 » B-9052 ZWIJNAARDE (GENT) » www.outerthought.org 116
» @stevenn
Thanks for your attention !