Learn about Couchbase Server 2.0 the Open Source NoSQL database.
This presentation was delivered on Feb 3rd during the FOSDEM conference ( http://fosdem.org )
2. Ge#ng
Started
with
Couchbase
Tugdual
“Tug”
Grall
Technical
Evangelist
email:
tug@couchbase.com twi0er:
@tgrall
Monday, February 4, 13
3. Ge#ng
Started
with
Couchbase
Tugdual
“Tug”
Grall
Technical
Evangelist
email:
tug@couchbase.com twi0er:
@tgrall
Monday, February 4, 13
4. Couchbase
Server
Core
Principles
Easy
Consistent
High
Scalability PE
RF O R M A N C E Performance
Grow
cluster
without
Consistent
sub-‐millisecond
applica7on
changes,
without
read
and
write
response
7mes
down7me
with
a
single
click with
consistent
high
throughput
Always
On
JSON
JSON JSO
Flexible
Data
24x365 Model
JSON N
JSON
No
down7me
for
so>ware
JSON
document
model
with
no
upgrades,
hardware
fixed
schema.
maintenance,
etc.
Monday, February 4, 13
5. Couchbase
2.0
New
Features
JSON support Indexing and
Querying
Incremental Map Cross data center
Reduce replication
Monday, February 4, 13
7. 8092
Couchbase
Server
2.0
Architecture
11211 11210
Query
API Memcapable
1.0 Memcapable
2.0 Sub:tle
Moxi
Query
Engine
REST
management
API/Web
UI
vBucket
state
and
replica7on
manager
Memcached
Global
singleton
supervisor
Rebalance
orchestrator
Configura7on
manager
Node
health
monitor
Process
monitor
Couchbase
EP
Engine
Heartbeat
Data
Manager Cluster
Manager
storage
interface
New
Persistence
Layer hDp on
each
node one
per
cluster
Erlang/OTP
HTTP Erlang
port
mapper Distributed
Erlang
8091 4369 21100
-‐
21199
Monday, February 4, 13
8. Couchbase
Server
2.0
Architecture
8092 11211 11210
Query
API Memcapable
1.0 Memcapable
2.0
Moxi
Query
Engine
REST
management
API/Web
UI
vBucket
state
and
replica7on
manager
Object-‐level
Cache
Global
singleton
supervisor
RAM
Cache,
Rebalance
orchestrator
Configura7on
manager
Node
health
monitor
Server/Cluster
Process
monitor
Indexing
&
Heartbeat
Couchbase
EP
Engine
Management
&
Persistence
storage
interface
CommunicaYon
Management (Erlang)
New
(C
Persistence
Disk
&
V8)
Persistence
Layer hDp on
each
node one
per
cluster
Erlang/OTP
The Unreasonable Effectiveness of C by Damien Katz
HTTP Erlang
port
mapper Distributed
Erlang
8091 4369 21100
-‐
21199
Monday, February 4, 13
9. Open
Source
Project
Apache
2.0
hIps://github.com/couchbase/ Gerrit: hIp://review.couchbase.org/
hIps://github.com/couchbaselabs/
Monday, February 4, 13
18. Write
OperaJon
Doc
1
App
Server
3 3
Managed
Cache 2
To
other
node Replica7on
Queue
Disk
Queue
Disk
Couchbase
Server
Node
Monday, February 4, 13
19. Write
OperaJon
App
Server
3 3
Managed
Cache 2
To
other
node Replica7on
Doc
1
Queue
Disk
Queue
Disk
Couchbase
Server
Node
Monday, February 4, 13
20. Write
OperaJon
App
Server
3 3
Managed
Cache 2
To
other
node Replica7on
Doc
1 Doc
1 Doc
1
Queue
Disk
Queue
Disk
Couchbase
Server
Node
Monday, February 4, 13
21. Basic
OperaJons
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc App
never
needs
to
know
• App
reads,
writes,
updates
docs
• MulYple
app
servers
can
access
same
document
at
same
Yme
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
22. Basic
OperaJons
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc App
never
needs
to
know
• App
reads,
writes,
updates
docs
REPLICA REPLICA REPLICA
• MulYple
app
servers
can
access
same
Doc
4 Doc Doc
6 Doc Doc
7 Doc
document
at
same
Yme
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
23. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc App
never
needs
to
know
• App
reads,
writes,
updates
docs
REPLICA REPLICA REPLICA
• MulYple
app
servers
can
access
same
Doc
4 Doc Doc
6 Doc Doc
7 Doc
document
at
same
Yme
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
24. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
ACTIVE ACTIVE ACTIVE
Doc
5 Doc Doc
4 Doc Doc
1 Doc
Doc
2 Doc Doc
7 Doc Doc
2 Doc
Doc
9 Doc Doc
8 Doc Doc
6 Doc
REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
25. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
Doc
5 Doc Doc
4 Doc Doc
1 Doc
Doc
2 Doc Doc
7 Doc Doc
2 Doc
Doc
9 Doc Doc
8 Doc Doc
6 Doc
REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
26. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc
Doc
9 Doc Doc
8 Doc Doc
6 Doc
REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
27. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc
REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
28. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc App
never
needs
to
know
REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
29. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc App
never
needs
to
know
• App
reads,
writes,
updates
docs
REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
30. Basic
OperaJons
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
• Docs
distributed
evenly
across
servers
READ/WRITE/UPDATE
• Each
server
stores
both
acYve
and
replica
SERVER
1 SERVER
2 SERVER
3 docs
Only
one
doc
ac7ve
at
a
7me
ACTIVE ACTIVE ACTIVE
• Client
library
provides
app
with
simple
Doc
5 Doc Doc
4 Doc Doc
1 Doc
interface
to
database
Doc
2 Doc Doc
7 Doc Doc
2 Doc • Cluster
map
provides
map
to
which
server
doc
is
on
Doc
9 Doc Doc
8 Doc Doc
6 Doc App
never
needs
to
know
• App
reads,
writes,
updates
docs
REPLICA REPLICA REPLICA
• MulYple
app
servers
can
access
same
Doc
4 Doc Doc
6 Doc Doc
7 Doc
document
at
same
Yme
Doc
1 Doc Doc
3 Doc Doc
9 Doc
Doc
8 Doc Doc
2 Doc Doc
5 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
31. Basic
OperaJons
• get
(key)
–
Retrieve
a
document
• set
(key,
value)
–
Store
a
document,
overwrites
if
exists
• add
(key,
value)
–
Store
a
document,
error/excep7on
if
exists
• replace
(key,
value)
–
Store
a
document,
error/excep7on
if
doesn’t
exist
• cas
(key,
value,
cas)
–
Compare
and
swap,
mutate
document
only
if
it
hasn’t
changed
while
execu7ng
this
opera7on
Monday, February 4, 13
32. Fail
Over
Node
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3 SERVER
4 SERVER
5
• App
servers
accessing
docs
ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE
Doc
5 Doc Doc
4 Doc Doc
1 Doc Doc
9 Doc Doc
6 Doc • Requests
to
Server
3
fail
Doc
2 Doc Doc
7 Doc Doc
2 Doc Doc
8 Doc
• Cluster
detects
server
failed
Promotes
replicas
of
docs
to
ac7ve
Updates
cluster
map
• Requests
for
docs
now
go
to
appropriate
server
REPLICA REPLICA REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc Doc
5 Doc Doc
8 Doc
• Typically
rebalance
would
follow
Doc
1 Doc Doc
3 Doc Doc
9 Doc Doc
2 Doc
COUCHBASE
SERVER
CLUSTER
User
Configured
Replica
Count
=
1
Monday, February 4, 13
33. Fail
Over
Node
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3 SERVER
4 SERVER
5
• App
servers
accessing
docs
ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE
Doc
5 Doc Doc
4 Doc Doc
1 Doc Doc
9 Doc Doc
6 Doc • Requests
to
Server
3
fail
Doc
2 Doc Doc
7 Doc Doc
2 Doc Doc
8 Doc
• Cluster
detects
server
failed
Promotes
replicas
of
docs
to
ac7ve
Updates
cluster
map
• Requests
for
docs
now
go
to
appropriate
server
REPLICA REPLICA REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc Doc
5 Doc Doc
8 Doc
• Typically
rebalance
would
follow
Doc
1 Doc Doc
3 Doc Doc
9 Doc Doc
2 Doc
COUCHBASE
SERVER
CLUSTER
User
Configured
Replica
Count
=
1
Monday, February 4, 13
34. Fail
Over
Node
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3 SERVER
4 SERVER
5
• App
servers
accessing
docs
ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE
Doc
5 Doc Doc
4 Doc Doc
1 Doc Doc
9 Doc Doc
6 Doc • Requests
to
Server
3
fail
Doc
2 Doc Doc
7 Doc Doc
2 Doc Doc
8 Doc
REPLICA REPLICA REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc Doc
5 Doc Doc
8 Doc
Doc
1 Doc Doc
3 Doc Doc
9 Doc Doc
2 Doc
COUCHBASE
SERVER
CLUSTER
User
Configured
Replica
Count
=
1
Monday, February 4, 13
35. Fail
Over
Node
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3 SERVER
4 SERVER
5
• App
servers
accessing
docs
ACTIVE ACTIVE ACTIVE ACTIVE ACTIVE
Doc
5 Doc Doc
4 Doc Doc
1 Doc Doc
9 Doc Doc
6 Doc • Requests
to
Server
3
fail
Doc
2 Doc Doc
7 Doc Doc
2 Doc Doc
8 Doc Doc
• Cluster
detects
server
failed
Promotes
replicas
of
docs
to
ac7ve
Updates
cluster
map
Doc
1 Doc
3
• Requests
for
docs
now
go
to
appropriate
server
REPLICA REPLICA REPLICA REPLICA REPLICA
Doc
4 Doc Doc
6 Doc Doc
7 Doc Doc
5 Doc
8 Doc
• Typically
rebalance
would
follow
Doc Doc Doc
9 Doc Doc
2 Doc
COUCHBASE
SERVER
CLUSTER
User
Configured
Replica
Count
=
1
Monday, February 4, 13
36. Indexing
and
Querying
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3
ACTIVE
• Indexing
work
is
distributed
amongst
ACTIVE ACTIVE
nodes
Doc
5 Doc Doc
5 Doc Doc
5 Doc
• Large
data
set
possible
Doc
2 Doc Doc
2 Doc Doc
2 Doc
• Parallelize
the
effort
Doc
9 Doc Doc
9 Doc Doc
9 Doc • Each
node
has
index
for
data
stored
on
it
REPLICA REPLICA REPLICA • Queries
combine
the
results
from
required
nodes
Doc
4 Doc Doc
4 Doc Doc
4 Doc
Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
8 Doc Doc
8 Doc Doc
8 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
37. Indexing
and
Querying
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3
ACTIVE
• Indexing
work
is
distributed
amongst
ACTIVE ACTIVE
nodes
Doc
5 Doc Doc
5 Doc Doc
5 Doc
• Large
data
set
possible
Doc
2 Doc Doc
2 Doc Doc
2 Doc
• Parallelize
the
effort
Doc
9 Doc Doc
9 Doc Doc
9 Doc • Each
node
has
index
for
data
stored
on
it
REPLICA REPLICA REPLICA • Queries
combine
the
results
from
required
nodes
Doc
4 Doc Doc
4 Doc Doc
4 Doc
Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
8 Doc Doc
8 Doc Doc
8 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
38. Indexing
and
Querying
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3
ACTIVE
• Indexing
work
is
distributed
amongst
ACTIVE ACTIVE
nodes
Doc
5 Doc Doc
5 Doc Doc
5 Doc
• Large
data
set
possible
Doc
2 Doc Doc
2 Doc Doc
2 Doc
• Parallelize
the
effort
Doc
9 Doc Doc
9 Doc Doc
9 Doc • Each
node
has
index
for
data
stored
on
it
REPLICA REPLICA REPLICA • Queries
combine
the
results
from
required
nodes
Doc
4 Doc Doc
4 Doc Doc
4 Doc
Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
8 Doc Doc
8 Doc Doc
8 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
39. Indexing
and
Querying
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
Query
SERVER
1 SERVER
2 SERVER
3
ACTIVE
• Indexing
work
is
distributed
amongst
ACTIVE ACTIVE
nodes
Doc
5 Doc Doc
5 Doc Doc
5 Doc
• Large
data
set
possible
Doc
2 Doc Doc
2 Doc Doc
2 Doc
• Parallelize
the
effort
Doc
9 Doc Doc
9 Doc Doc
9 Doc • Each
node
has
index
for
data
stored
on
it
REPLICA REPLICA REPLICA • Queries
combine
the
results
from
required
nodes
Doc
4 Doc Doc
4 Doc Doc
4 Doc
Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
8 Doc Doc
8 Doc Doc
8 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
40. Indexing
and
Querying
APP
SERVER
1 APP
SERVER
2
COUCHBASE
Client
Library COUCHBASE
Client
Library
CLUSTER
MAP CLUSTER
MAP
SERVER
1 SERVER
2 SERVER
3
ACTIVE
• Indexing
work
is
distributed
amongst
ACTIVE ACTIVE
nodes
Doc
5 Doc Doc
5 Doc Doc
5 Doc
• Large
data
set
possible
Doc
2 Doc Doc
2 Doc Doc
2 Doc
• Parallelize
the
effort
Doc
9 Doc Doc
9 Doc Doc
9 Doc • Each
node
has
index
for
data
stored
on
it
REPLICA REPLICA REPLICA • Queries
combine
the
results
from
required
nodes
Doc
4 Doc Doc
4 Doc Doc
4 Doc
Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
8 Doc Doc
8 Doc Doc
8 Doc
COUCHBASE
SERVER
CLUSTER
Monday, February 4, 13
41. Cross
Data
Center
ReplicaJon
(XDCR)
Couchbase
Cluster Couchbase
Cluster
West
Coast
Data
Center East
Coast
Data
Center
SERVER
1 SERVER
2 SERVER
3 SERVER
1 SERVER
2 SERVER
3
RAM
CACHE RAM
CACHE RAM
CACHE RAM
CACHE RAM
CACHE RAM
CACHE
Doc
1 Doc Doc
1 Doc Doc
1 Doc Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
2 Doc Doc
2 Doc Doc
2 Doc Doc
2 Doc Doc
2 Doc Doc
2 Doc
Doc
6 Doc Doc
6 Doc Doc
6 Doc Doc
6 Doc Doc
6 Doc Doc
6 Doc
DISK DISK DISK DISK DISK DISK
Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc
Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc
Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc
Monday, February 4, 13
42. Cross
Data
Center
ReplicaJon
(XDCR)
Couchbase
Cluster Couchbase
Cluster
West
Coast
Data
Center East
Coast
Data
Center
SERVER
1 SERVER
2 SERVER
3 SERVER
1 SERVER
2 SERVER
3
RAM
CACHE RAM
CACHE RAM
CACHE RAM
CACHE RAM
CACHE RAM
CACHE
Doc
1 Doc Doc
1 Doc Doc
1 Doc Doc
1 Doc Doc
1 Doc Doc
1 Doc
Doc
2 Doc Doc
2 Doc Doc
2 Doc Doc
2 Doc Doc
2 Doc Doc
2 Doc
Doc
6 Doc Doc
6 Doc Doc
6 Doc Doc
6 Doc Doc
6 Doc Doc
6 Doc
DISK DISK DISK DISK DISK DISK
Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc
Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc
Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc Doc
Monday, February 4, 13
43. GeoCouch
R-‐Tree
Index
• Optimized for bulk loading of large data sets
• Simplified query model (bounding box, nearest neighbor)
Monday, February 4, 13
44. ElasJc
Search
Adaptor
• Elastic Search is good for ad-hoc queries and faceted browsing
• Our adapter is aware of changing Couchbase topology
• Indexed by Elastic Search after stored to disk in Couchbase
ElasYcSearch
Monday, February 4, 13
45. I’m
Excited
to
See
What
You
Build,
Q
&
A
Couchbase
Docs Contact
me
on
TwiDer
www.couchbase.com/docs/index-‐full.html @tgrall
Couchbase
Forums Contact
me
by
Email
www.couchbase.com/forums tug@couchbase.com
IRC Learn
More
About
Design
PaDerns
#couchbase CouchbaseModels.com
#libcouchbase
Seeng
up
for
Ruby
on
Rails
CouchbaseOnRails.com
Monday, February 4, 13