Monday, June 17, 13
Introducing	
  
Couchbase	
  Server	
  2.0
Tugdual	
  Grall
Technical	
  Evangelist
Monday, June 17, 13
About	
  me...
• Tugdual	
  “Tug”	
  Grall
­ Couchbase
• Technical	
  Evangelist
­ eXo
• CTO
­ Oracle
• Developer/Product	
  Manager
­ Mainly	
  Java/SOA
­ Developer	
  in	
  consulDng	
  firms
• Web
­ 	
  @tgrall
­ 	
  	
  	
  hHp://blog.grallandco.com
­ 	
  	
  	
  tgrall
­ NantesJUG	
  co-­‐founder
­ Pet	
  Project	
  :
­ hHp://www.resultri.com
Monday, June 17, 13
RDBMS	
  are	
  not	
  Enough?
Monday, June 17, 13
Growth	
  is	
  the	
  New	
  Reality
• Instagram	
  gained	
  nearly	
  1	
  million	
  users	
  overnight	
  when	
  then	
  expanded	
  to	
  Android
Monday, June 17, 13
Draw	
  Something	
  Viral	
  Growth
191715131197533/12826242220181614121082/6
Draw	
  Something	
  by	
  OMGPOP
Daily	
  Ac)ve	
  Users	
  (millions)
21
2
4
6
8
10
12
14
16
Monday, June 17, 13
RDBMS	
  is	
  good	
  for	
  many	
  thing,	
  but	
  hard	
  to	
  scale
RDBMS	
  Scales	
  Up
Get	
  a	
  bigger,	
  more	
  complex	
  server
Users
ApplicaNon	
  Scales	
  Out
Just	
  add	
  more	
  commodity	
  web	
  servers
Users
System	
  Cost
ApplicaDon	
  Performance	
  
RelaNonal	
  Database
Web/App	
  Server	
  Tier
System	
  Cost
ApplicaDon	
  Performance	
  
Won’t	
  scale	
  
beyond	
  this	
  
point
How	
  do	
  you	
  take	
  this	
  growth?
Monday, June 17, 13
Web/App	
  Server	
  Tier
Memcached	
  Tier
MySQL	
  Tier
Scaling	
  out	
  RDBMS
• Run	
  Many	
  SQL	
  Servers
• Data	
  could	
  be	
  shared
­ Done	
  by	
  the	
  applicaDon	
  code
• Caching	
  for	
  faster	
  response	
  Nme
Monday, June 17, 13
Scaling	
  out	
  flaWens	
  the	
  cost	
  and	
  performance	
  curves
NoSQL	
  Database	
  Scales	
  Out
Cost	
  and	
  performance	
  mirrors	
  app	
  Ner
Users
NoSQL	
  Distributed	
  Data	
  Store
Web/App	
  Server	
  Tier
ApplicaNon	
  Scales	
  Out
Just	
  add	
  more	
  commodity	
  web	
  servers
Users
System	
  Cost
ApplicaDon	
  Performance	
  
ApplicaDon	
  Performance	
  
System	
  Cost
NoSQL	
  Technology	
  Scales	
  Out
Monday, June 17, 13
Building	
  new	
  database	
  to	
  answer	
  the	
  following	
  requirementsNo	
  schema	
  required	
  before	
  
inserDng	
  dataNo	
  schema	
  change	
  required	
  to	
  change	
  data	
  formatAuto-­‐sharding	
  without	
  
applicaDon	
  parDcipaDonDistributed	
  queriesIntegrated	
  main	
  memory	
  cachingData	
  
synchronizaDon	
  (	
  mulD-­‐datacenter)
Dynamo
October	
  2007
Cassandra
August	
  2008
Bigtable
November	
  2006
Voldemort
February	
  2009
Very	
  few	
  organizaNons	
  want	
  to	
  (fewer	
  can)	
  build	
  and	
  maintain	
  database	
  so[ware	
  technology.
But	
  every	
  organizaNon	
  building	
  interacNve	
  web	
  applicaNons	
  needs	
  this	
  technology.
A	
  New	
  Technology?
Monday, June 17, 13
Lack	
  of	
  flexibility/
rigid	
  schemas
Inability	
  to	
  scale	
  out	
  data Performance	
  challenges Cost All	
  of	
  these Other
49%
35%
29%
16%
12%
11%
What	
  Is	
  Biggest	
  Data	
  Management	
  Problem	
  Driving	
  
Use	
  of	
  NoSQL	
  in	
  Coming	
  Year?
Source:	
  Couchbase	
  Survey,	
  December	
  2011,	
  n	
  =	
  1351.
Monday, June 17, 13
NoSQL	
  Catalog
Key-­‐Value
Memcached
Membase
Redis
Data	
  Structure Document Column Graph
MongoDB
Couchbase Cassandra
Cache
(memory	
  only)
Database
(memory/disk)
Neo4j
HBase InfiniteGraph
Coherence
Monday, June 17, 13
Couchbase	
  Server
NoSQL	
  Document	
  Database
Monday, June 17, 13
Couchbase	
  Open	
  Source	
  Project
• Leading	
  NoSQL	
  database	
  project	
  focused	
  on	
  
distributed	
  database	
  technology	
  and	
  
surrounding	
  ecosystem
• Supports	
  both	
  key-­‐value	
  and	
  document-­‐
oriented	
  use	
  cases
• All	
  components	
  are	
  available	
  under	
  the	
  Apache	
  
2.0	
  Public	
  License
• Obtained	
  as	
  packaged	
  soiware	
  in	
  both	
  
enterprise	
  and	
  community	
  ediDons. Couchbase
Open Source Project
Monday, June 17, 13
Easy	
  Scalability Consistent	
  High	
  
Performance
Always	
  On	
  
24x365
Grow	
  cluster	
  without	
  applicaDon	
  changes,	
  
without	
  downDme	
  with	
  a	
  single	
  click
Consistent	
  sub-­‐millisecond	
  
read	
  and	
  write	
  response	
  Dmes	
  
with	
  consistent	
  high	
  throughput
No	
  downDme	
  for	
  soiware	
  upgrades,	
  
hardware	
  maintenance,	
  etc.
Flexible	
  Data	
  Model
JSON	
  document	
  model	
  with	
  no	
  fixed	
  
schema.
Couchbase	
  Server
Monday, June 17, 13
Flexible	
  Data	
  Model
• No	
  need	
  to	
  worry	
  about	
  the	
  database	
  when	
  changing	
  your	
  applicaDon
• Records	
  can	
  have	
  different	
  structures,	
  there	
  is	
  no	
  fixed	
  schema
• Allows	
  painless	
  data	
  model	
  changes	
  for	
  rapid	
  applicaDon	
  development
	
  {
	
  	
  	
  	
  “ID”:	
  1,
	
  	
  	
  	
  “FIRST”:	
  “DipN”,
	
  	
  	
  	
  “LAST”:	
  “Borkar”,
	
  	
  	
  	
  “ZIP”:	
  “94040”,
	
  	
  	
  	
  “CITY”:	
  “MV”,
	
  	
  	
  	
  “STATE”:	
  “CA”
}
JSON
JSON
JSON JSON
Monday, June 17, 13
AddiDonal	
  Couchbase	
  Server	
  Features
Built-­‐in	
  clustering	
  –	
  All	
  nodes	
  equal
Data	
  replicaDon	
  with	
  auto-­‐failover
Zero-­‐downDme	
  maintenance	
  
Built-­‐in	
  managed	
  cached
Append-­‐only	
  storage	
  layer
Online	
  compacDon
Monitoring	
  and	
  admin	
  API	
  &	
  UI
SDK	
  for	
  a	
  variety	
  of	
  languages
Monday, June 17, 13
Market	
  AdopDon	
  –	
  Customers
Internet	
  Companies Enterprises
Monday, June 17, 13
Heartbeat
Process	
  monitor
Global	
  singleton	
  supervisor
ConfiguraDon	
  manager
on	
  each	
  node
Rebalance	
  orchestrator
Node	
  health	
  monitor
one	
  per	
  cluster
vBucket	
  state	
  and	
  replicaDon	
  manager
hFp
REST	
  management	
  API/Web	
  UI
HTTP
8091
Erlang	
  port	
  mapper
4369
Distributed	
  Erlang
21100	
  -­‐	
  21199
Erlang/OTP
storage	
  interface
Couchbase	
  EP	
  Engine
11210
Memcapable	
  	
  2.0
Moxi
11211
Memcapable	
  	
  1.0
Memcached
New	
  Persistence	
  Layer
8092
Query	
  API
Query	
  Engine
Data	
  Manager Cluster	
  Manager
Couchbase	
  Server	
  Architecture
Monday, June 17, 13
Heartbeat
Process	
  monitor
Global	
  singleton	
  supervisor
ConfiguraDon	
  manager
on	
  each	
  node
Rebalance	
  orchestrator
Node	
  health	
  monitor
one	
  per	
  cluster
vBucket	
  state	
  and	
  replicaDon	
  manager
hFp
REST	
  management	
  API/Web	
  UI
HTTP
8091
Erlang	
  port	
  mapper
4369
Distributed	
  Erlang
21100	
  -­‐	
  21199
Erlang/OTP
storage	
  interface
Couchbase	
  EP	
  Engine
11210
Memcapable	
  	
  2.0
Moxi
11211
Memcapable	
  	
  1.0
Memcached
New	
  Persistence	
  Layer
8092
Query	
  API
Query	
  Engine
Couchbase	
  Server	
  Architecture
Monday, June 17, 13
Couchbase	
  OperaDons
Monday, June 17, 13
33 2
Single	
  node	
  -­‐	
  Couchbase	
  Write	
  OperaDon
Managed	
  Cache
Disk	
  Queue
Disk
ReplicaDon	
  Queue
App	
  Server
Couchbase	
  Server	
  Node
Doc	
  1Doc	
  1
Doc	
  1
To	
  other	
  node
Monday, June 17, 13
COUCHBASE	
  SERVER	
  	
  CLUSTER
Basic	
  OperaDon
• Docs	
  distributed	
  evenly	
  across	
  servers	
  
• Each	
  server	
  stores	
  both	
  acPve	
  and	
  replica	
  docs
Only	
  one	
  server	
  acDve	
  at	
  a	
  Dme
• Client	
  library	
  provides	
  app	
  with	
  simple	
  interface	
  to	
  
database
• Cluster	
  map	
  provides	
  map	
  
to	
  which	
  server	
  doc	
  is	
  on
App	
  never	
  needs	
  to	
  know
• App	
  reads,	
  writes,	
  updates	
  docs
• MulPple	
  app	
  servers	
  can	
  access	
  same	
  document	
  at	
  
same	
  Pme
User	
  Configured	
  Replica	
  Count	
  =	
  1
READ/WRITE/UPDATE
ACTIVE
SERVER	
  1
ACTIVE
Doc	
  4
Doc	
  7
Doc
Doc
Doc
SERVER	
  2
Doc	
  8
ACTIVE
Doc	
  1
Doc	
  2
Doc
Doc
Doc
REPLICA
Doc	
  4
Doc	
  1
Doc	
  8
Doc
Doc
Doc
REPLICA
Doc	
  6
Doc	
  3
Doc	
  2
Doc
Doc
Doc
REPLICA
Doc	
  7
Doc	
  9
Doc	
  5
Doc
Doc
Doc
SERVER	
  3
Doc	
  6
Doc	
  5
Doc	
  2
Doc
Doc
DocDoc	
  9
APP	
  SERVER	
  1
COUCHBASE	
  Client	
  Library
CLUSTER	
  MAP
COUCHBASE	
  Client	
  Library
CLUSTER	
  MAP
APP	
  SERVER	
  2
Monday, June 17, 13
Client	
  SDK
www.couchbase.com/develop
Clojure
Python
Ruby
libcouchbase
Go
Monday, June 17, 13
NPM
{
    "name": "my-node-application",
    "version": "1.0.0",
    "private": true,
    "dependencies":
    {
        "express": "3.x",
        "couchbase": "0.0.12",
        "ejs": ">= 0.0.1"
    }
}
Monday, June 17, 13
Connect	
  to	
  the	
  cluster
var driver = require('couchbase');
 
dbConfiguration = {
   "hosts": ["localhost:8091"],
   "bucket": "ideas"
};
 
driver.connect(dbConfiguration, function(err, cb) {
   if (err) {
      throw (err)
   }
 
// your application code here
 
}
Monday, June 17, 13
Insert	
  Data
var meetup = {"type" : "meetup", "language" : "javascript"};
cb.set("web5",meetup, function(err, meta) {});
 
var tmp = {"message" : "hello world!"};
cb.set("tmp", tmp, {"expiry" : 5},function(err, meta) {});
Monday, June 17, 13
Insert	
  /	
  Delete	
  Data
var meetup = {"type" : "meetup", "language" : "javascript"};
cb.set("barcelonajs",meetup, function(err, meta) {});
 
var tmp = {"message" : "hello world!"};
cb.set("tmp", tmp, {"expiry" : 5},function(err, meta) {});
 
cb.set("todelete", tmp, function(err, meta) {});
cb.remove("todelete", function(err, meta) {});
Monday, June 17, 13
Retrieve	
  the	
  Data
cb.get("product:45", function(errs, doc, metas) {
console.log("=== get the document ===");
console.log( doc );
});
var keys = new Array();
keys.push("product:1");
keys.push("product:45");
keys.push("product:65");
keys.push("product:80");
cb.get(keys, null, function(errs, docs, metas) {
console.log("n=== get List of documents ===");
console.log( docs );
});
Monday, June 17, 13
Retrieve	
  the	
  Data
What	
  if	
  I	
  want	
  all	
  products	
  or	
  meetups?
key : barcelonajs
{
"type": "meetup",
"language": "javascript"
}
key : product:10
{
"type": "product",
"name": "Product with id 10"
}
Monday, June 17, 13
Calling	
  a	
  view	
  from	
  your	
  app
var queryParams = {
      stale: false,
      key : "meetup"
};
 
cb.view("my_views", "by_type", queryParams, function(err, view) {
      var keys = new Array();
      for (var i = 0; i < view.length; i++) {
         keys.push(view[i].id);
      }
      cb.get(keys, null, function(errs, docs, metas) {
         console.log(docs);
      });
   });
Monday, June 17, 13
Demo	
  Time
Monday, June 17, 13
www.couchbase.com/download
Couchbase	
  Server	
  
Monday, June 17, 13
Q	
  &	
  A
Monday, June 17, 13
Thank	
  you!
tug@couchbase.com
@tgrall
Get	
  Couchbase	
  Server	
  at	
  
hHp://www.couchbase.com/download
Monday, June 17, 13
Monday, June 17, 13

More Related Content

PDF
Node.js and couchbase Full Stack JSON - Munich NoSQL
PDF
12-Step Program for Scaling Web Applications on PostgreSQL
PPTX
Couch DB/PouchDB approach for hybrid mobile applications
PDF
Membase Introduction
PDF
Couchdb + Membase = Couchbase
KEY
SSJS, NoSQL, GAE and AppengineJS
PDF
Membase Intro from Membase Meetup San Francisco
PPTX
Introduction to Prometheus Monitoring (Singapore Meetup)
Node.js and couchbase Full Stack JSON - Munich NoSQL
12-Step Program for Scaling Web Applications on PostgreSQL
Couch DB/PouchDB approach for hybrid mobile applications
Membase Introduction
Couchdb + Membase = Couchbase
SSJS, NoSQL, GAE and AppengineJS
Membase Intro from Membase Meetup San Francisco
Introduction to Prometheus Monitoring (Singapore Meetup)

What's hot (6)

PDF
Boston Hadoop Meetup: Presto for the Enterprise
PPTX
HBaseConEast2016: Splice machine open source rdbms
PDF
Bootstrapping Using Free Software
PDF
Lessons from Highly Scalable Architectures at Social Networking Sites
PPT
Public Terabyte Dataset Project: Web crawling with Amazon Elastic MapReduce
PDF
From 0 to syncing
Boston Hadoop Meetup: Presto for the Enterprise
HBaseConEast2016: Splice machine open source rdbms
Bootstrapping Using Free Software
Lessons from Highly Scalable Architectures at Social Networking Sites
Public Terabyte Dataset Project: Web crawling with Amazon Elastic MapReduce
From 0 to syncing

Similar to Introduction to NoSQL with Couchbase (20)

PDF
Couchbase overview033113long
PDF
Couchbase overview033113long
PDF
How companies use NoSQL & Couchbase - NoSQL Now 2014
PPTX
Couchbase 101
PPTX
Introduction to couchbase
PDF
Softshake 2013: Introduction to NoSQL with Couchbase
PDF
Manuel Hurtado. Couchbase paradigma4oct
PDF
Couchbase - Yet Another Introduction
PDF
CBDW2014 - NoSQL Development With Couchbase and ColdFusion (CFML)
PDF
The Modern Database for Enterprise Applications
PDF
Couchbase Day
PPT
NoSQL_Night
PPTX
Couchbase and Apache Spark
PPTX
Introduction no sql solutions with couchbase and .net core
PDF
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
PPTX
Full-Stack Development with JavaScript and NoSQL
PDF
Benchmarking Couchbase Server for Interactive Applications
PDF
How companies use NoSQL and Couchbase - NoSQL Now 2013
PPTX
Couchbase Data Platform | Big Data Demystified
PPTX
Introduction to Couchbase: Onomi
Couchbase overview033113long
Couchbase overview033113long
How companies use NoSQL & Couchbase - NoSQL Now 2014
Couchbase 101
Introduction to couchbase
Softshake 2013: Introduction to NoSQL with Couchbase
Manuel Hurtado. Couchbase paradigma4oct
Couchbase - Yet Another Introduction
CBDW2014 - NoSQL Development With Couchbase and ColdFusion (CFML)
The Modern Database for Enterprise Applications
Couchbase Day
NoSQL_Night
Couchbase and Apache Spark
Introduction no sql solutions with couchbase and .net core
Slides: NoSQL Data Modeling Using JSON Documents – A Practical Approach
Full-Stack Development with JavaScript and NoSQL
Benchmarking Couchbase Server for Interactive Applications
How companies use NoSQL and Couchbase - NoSQL Now 2013
Couchbase Data Platform | Big Data Demystified
Introduction to Couchbase: Onomi

More from Tugdual Grall (20)

PDF
Introduction to Streaming with Apache Flink
PDF
Introduction to Streaming with Apache Flink
PDF
Fast Cars, Big Data - How Streaming Can Help Formula 1
PPTX
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
PDF
Big Data Journey
PDF
Proud to be Polyglot - Riviera Dev 2015
PDF
Introduction to NoSQL with MongoDB - SQLi Workshop
PDF
Enabling Telco to Build and Run Modern Applications
PPTX
MongoDB and Hadoop
PDF
Proud to be polyglot
PDF
Drop your table ! MongoDB Schema Design
PDF
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
PDF
Some cool features of MongoDB
PDF
Building Your First MongoDB Application
PDF
Opensourceday 2014-iot
PDF
Neotys conference
PDF
Why and How to integrate Hadoop and NoSQL?
PDF
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
PPT
Big Data Paris : Hadoop and NoSQL
PDF
Big Data Israel Meetup : Couchbase and Big Data
Introduction to Streaming with Apache Flink
Introduction to Streaming with Apache Flink
Fast Cars, Big Data - How Streaming Can Help Formula 1
Lambda Architecture: The Best Way to Build Scalable and Reliable Applications!
Big Data Journey
Proud to be Polyglot - Riviera Dev 2015
Introduction to NoSQL with MongoDB - SQLi Workshop
Enabling Telco to Build and Run Modern Applications
MongoDB and Hadoop
Proud to be polyglot
Drop your table ! MongoDB Schema Design
Devoxx 2014 : Atelier MongoDB - Decouverte de MongoDB 2.6
Some cool features of MongoDB
Building Your First MongoDB Application
Opensourceday 2014-iot
Neotys conference
Why and How to integrate Hadoop and NoSQL?
NoSQL Matters 2013 - Introduction to Map Reduce with Couchbase 2.0
Big Data Paris : Hadoop and NoSQL
Big Data Israel Meetup : Couchbase and Big Data

Recently uploaded (20)

PDF
FASHION-DRIVEN TEXTILES AS A CRYSTAL OF A NEW STREAM FOR STAKEHOLDER CAPITALI...
PDF
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
PPTX
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
PDF
The Digital Engine Room: Unlocking APAC’s Economic and Digital Potential thro...
PDF
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
PPTX
How to use fields_get method in Odoo 18
PDF
Peak of Data & AI Encore: Scalable Design & Infrastructure
PPTX
Information-Technology-in-Human-Society.pptx
PDF
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
PPTX
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
PDF
Decision Optimization - From Theory to Practice
PPTX
From Curiosity to ROI — Cost-Benefit Analysis of Agentic Automation [3/6]
PPTX
maintenance powerrpoint for adaprive and preventive
PDF
Secure Java Applications against Quantum Threats
PDF
Human Computer Interaction Miterm Lesson
PDF
Child-friendly e-learning for artificial intelligence education in Indonesia:...
PDF
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
PDF
TrustArc Webinar - Data Minimization in Practice_ Reducing Risk, Enhancing Co...
PPTX
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
PDF
NewMind AI Journal Monthly Chronicles - August 2025
FASHION-DRIVEN TEXTILES AS A CRYSTAL OF A NEW STREAM FOR STAKEHOLDER CAPITALI...
ELLIE29.pdfWETWETAWTAWETAETAETERTRTERTER
AQUEEL MUSHTAQUE FAKIH COMPUTER CENTER .
The Digital Engine Room: Unlocking APAC’s Economic and Digital Potential thro...
Be ready for tomorrow’s needs with a longer-lasting, higher-performing PC
How to use fields_get method in Odoo 18
Peak of Data & AI Encore: Scalable Design & Infrastructure
Information-Technology-in-Human-Society.pptx
CCUS-as-the-Missing-Link-to-Net-Zero_AksCurious.pdf
Rise of the Digital Control Grid Zeee Media and Hope and Tivon FTWProject.com
Decision Optimization - From Theory to Practice
From Curiosity to ROI — Cost-Benefit Analysis of Agentic Automation [3/6]
maintenance powerrpoint for adaprive and preventive
Secure Java Applications against Quantum Threats
Human Computer Interaction Miterm Lesson
Child-friendly e-learning for artificial intelligence education in Indonesia:...
Uncertainty-aware contextual multi-armed bandits for recommendations in e-com...
TrustArc Webinar - Data Minimization in Practice_ Reducing Risk, Enhancing Co...
Strategic Picks — Prioritising the Right Agentic Use Cases [2/6]
NewMind AI Journal Monthly Chronicles - August 2025

Introduction to NoSQL with Couchbase

  • 2. Introducing   Couchbase  Server  2.0 Tugdual  Grall Technical  Evangelist Monday, June 17, 13
  • 3. About  me... • Tugdual  “Tug”  Grall ­ Couchbase • Technical  Evangelist ­ eXo • CTO ­ Oracle • Developer/Product  Manager ­ Mainly  Java/SOA ­ Developer  in  consulDng  firms • Web ­  @tgrall ­      hHp://blog.grallandco.com ­      tgrall ­ NantesJUG  co-­‐founder ­ Pet  Project  : ­ hHp://www.resultri.com Monday, June 17, 13
  • 4. RDBMS  are  not  Enough? Monday, June 17, 13
  • 5. Growth  is  the  New  Reality • Instagram  gained  nearly  1  million  users  overnight  when  then  expanded  to  Android Monday, June 17, 13
  • 6. Draw  Something  Viral  Growth 191715131197533/12826242220181614121082/6 Draw  Something  by  OMGPOP Daily  Ac)ve  Users  (millions) 21 2 4 6 8 10 12 14 16 Monday, June 17, 13
  • 7. RDBMS  is  good  for  many  thing,  but  hard  to  scale RDBMS  Scales  Up Get  a  bigger,  more  complex  server Users ApplicaNon  Scales  Out Just  add  more  commodity  web  servers Users System  Cost ApplicaDon  Performance   RelaNonal  Database Web/App  Server  Tier System  Cost ApplicaDon  Performance   Won’t  scale   beyond  this   point How  do  you  take  this  growth? Monday, June 17, 13
  • 8. Web/App  Server  Tier Memcached  Tier MySQL  Tier Scaling  out  RDBMS • Run  Many  SQL  Servers • Data  could  be  shared ­ Done  by  the  applicaDon  code • Caching  for  faster  response  Nme Monday, June 17, 13
  • 9. Scaling  out  flaWens  the  cost  and  performance  curves NoSQL  Database  Scales  Out Cost  and  performance  mirrors  app  Ner Users NoSQL  Distributed  Data  Store Web/App  Server  Tier ApplicaNon  Scales  Out Just  add  more  commodity  web  servers Users System  Cost ApplicaDon  Performance   ApplicaDon  Performance   System  Cost NoSQL  Technology  Scales  Out Monday, June 17, 13
  • 10. Building  new  database  to  answer  the  following  requirementsNo  schema  required  before   inserDng  dataNo  schema  change  required  to  change  data  formatAuto-­‐sharding  without   applicaDon  parDcipaDonDistributed  queriesIntegrated  main  memory  cachingData   synchronizaDon  (  mulD-­‐datacenter) Dynamo October  2007 Cassandra August  2008 Bigtable November  2006 Voldemort February  2009 Very  few  organizaNons  want  to  (fewer  can)  build  and  maintain  database  so[ware  technology. But  every  organizaNon  building  interacNve  web  applicaNons  needs  this  technology. A  New  Technology? Monday, June 17, 13
  • 11. Lack  of  flexibility/ rigid  schemas Inability  to  scale  out  data Performance  challenges Cost All  of  these Other 49% 35% 29% 16% 12% 11% What  Is  Biggest  Data  Management  Problem  Driving   Use  of  NoSQL  in  Coming  Year? Source:  Couchbase  Survey,  December  2011,  n  =  1351. Monday, June 17, 13
  • 12. NoSQL  Catalog Key-­‐Value Memcached Membase Redis Data  Structure Document Column Graph MongoDB Couchbase Cassandra Cache (memory  only) Database (memory/disk) Neo4j HBase InfiniteGraph Coherence Monday, June 17, 13
  • 13. Couchbase  Server NoSQL  Document  Database Monday, June 17, 13
  • 14. Couchbase  Open  Source  Project • Leading  NoSQL  database  project  focused  on   distributed  database  technology  and   surrounding  ecosystem • Supports  both  key-­‐value  and  document-­‐ oriented  use  cases • All  components  are  available  under  the  Apache   2.0  Public  License • Obtained  as  packaged  soiware  in  both   enterprise  and  community  ediDons. Couchbase Open Source Project Monday, June 17, 13
  • 15. Easy  Scalability Consistent  High   Performance Always  On   24x365 Grow  cluster  without  applicaDon  changes,   without  downDme  with  a  single  click Consistent  sub-­‐millisecond   read  and  write  response  Dmes   with  consistent  high  throughput No  downDme  for  soiware  upgrades,   hardware  maintenance,  etc. Flexible  Data  Model JSON  document  model  with  no  fixed   schema. Couchbase  Server Monday, June 17, 13
  • 16. Flexible  Data  Model • No  need  to  worry  about  the  database  when  changing  your  applicaDon • Records  can  have  different  structures,  there  is  no  fixed  schema • Allows  painless  data  model  changes  for  rapid  applicaDon  development  {        “ID”:  1,        “FIRST”:  “DipN”,        “LAST”:  “Borkar”,        “ZIP”:  “94040”,        “CITY”:  “MV”,        “STATE”:  “CA” } JSON JSON JSON JSON Monday, June 17, 13
  • 17. AddiDonal  Couchbase  Server  Features Built-­‐in  clustering  –  All  nodes  equal Data  replicaDon  with  auto-­‐failover Zero-­‐downDme  maintenance   Built-­‐in  managed  cached Append-­‐only  storage  layer Online  compacDon Monitoring  and  admin  API  &  UI SDK  for  a  variety  of  languages Monday, June 17, 13
  • 18. Market  AdopDon  –  Customers Internet  Companies Enterprises Monday, June 17, 13
  • 19. Heartbeat Process  monitor Global  singleton  supervisor ConfiguraDon  manager on  each  node Rebalance  orchestrator Node  health  monitor one  per  cluster vBucket  state  and  replicaDon  manager hFp REST  management  API/Web  UI HTTP 8091 Erlang  port  mapper 4369 Distributed  Erlang 21100  -­‐  21199 Erlang/OTP storage  interface Couchbase  EP  Engine 11210 Memcapable    2.0 Moxi 11211 Memcapable    1.0 Memcached New  Persistence  Layer 8092 Query  API Query  Engine Data  Manager Cluster  Manager Couchbase  Server  Architecture Monday, June 17, 13
  • 20. Heartbeat Process  monitor Global  singleton  supervisor ConfiguraDon  manager on  each  node Rebalance  orchestrator Node  health  monitor one  per  cluster vBucket  state  and  replicaDon  manager hFp REST  management  API/Web  UI HTTP 8091 Erlang  port  mapper 4369 Distributed  Erlang 21100  -­‐  21199 Erlang/OTP storage  interface Couchbase  EP  Engine 11210 Memcapable    2.0 Moxi 11211 Memcapable    1.0 Memcached New  Persistence  Layer 8092 Query  API Query  Engine Couchbase  Server  Architecture Monday, June 17, 13
  • 22. 33 2 Single  node  -­‐  Couchbase  Write  OperaDon Managed  Cache Disk  Queue Disk ReplicaDon  Queue App  Server Couchbase  Server  Node Doc  1Doc  1 Doc  1 To  other  node Monday, June 17, 13
  • 23. COUCHBASE  SERVER    CLUSTER Basic  OperaDon • Docs  distributed  evenly  across  servers   • Each  server  stores  both  acPve  and  replica  docs Only  one  server  acDve  at  a  Dme • Client  library  provides  app  with  simple  interface  to   database • Cluster  map  provides  map   to  which  server  doc  is  on App  never  needs  to  know • App  reads,  writes,  updates  docs • MulPple  app  servers  can  access  same  document  at   same  Pme User  Configured  Replica  Count  =  1 READ/WRITE/UPDATE ACTIVE SERVER  1 ACTIVE Doc  4 Doc  7 Doc Doc Doc SERVER  2 Doc  8 ACTIVE Doc  1 Doc  2 Doc Doc Doc REPLICA Doc  4 Doc  1 Doc  8 Doc Doc Doc REPLICA Doc  6 Doc  3 Doc  2 Doc Doc Doc REPLICA Doc  7 Doc  9 Doc  5 Doc Doc Doc SERVER  3 Doc  6 Doc  5 Doc  2 Doc Doc DocDoc  9 APP  SERVER  1 COUCHBASE  Client  Library CLUSTER  MAP COUCHBASE  Client  Library CLUSTER  MAP APP  SERVER  2 Monday, June 17, 13
  • 25. NPM {     "name": "my-node-application",     "version": "1.0.0",     "private": true,     "dependencies":     {         "express": "3.x",         "couchbase": "0.0.12",         "ejs": ">= 0.0.1"     } } Monday, June 17, 13
  • 26. Connect  to  the  cluster var driver = require('couchbase');   dbConfiguration = {    "hosts": ["localhost:8091"],    "bucket": "ideas" };   driver.connect(dbConfiguration, function(err, cb) {    if (err) {       throw (err)    }   // your application code here   } Monday, June 17, 13
  • 27. Insert  Data var meetup = {"type" : "meetup", "language" : "javascript"}; cb.set("web5",meetup, function(err, meta) {});   var tmp = {"message" : "hello world!"}; cb.set("tmp", tmp, {"expiry" : 5},function(err, meta) {}); Monday, June 17, 13
  • 28. Insert  /  Delete  Data var meetup = {"type" : "meetup", "language" : "javascript"}; cb.set("barcelonajs",meetup, function(err, meta) {});   var tmp = {"message" : "hello world!"}; cb.set("tmp", tmp, {"expiry" : 5},function(err, meta) {});   cb.set("todelete", tmp, function(err, meta) {}); cb.remove("todelete", function(err, meta) {}); Monday, June 17, 13
  • 29. Retrieve  the  Data cb.get("product:45", function(errs, doc, metas) { console.log("=== get the document ==="); console.log( doc ); }); var keys = new Array(); keys.push("product:1"); keys.push("product:45"); keys.push("product:65"); keys.push("product:80"); cb.get(keys, null, function(errs, docs, metas) { console.log("n=== get List of documents ==="); console.log( docs ); }); Monday, June 17, 13
  • 30. Retrieve  the  Data What  if  I  want  all  products  or  meetups? key : barcelonajs { "type": "meetup", "language": "javascript" } key : product:10 { "type": "product", "name": "Product with id 10" } Monday, June 17, 13
  • 31. Calling  a  view  from  your  app var queryParams = {       stale: false,       key : "meetup" };   cb.view("my_views", "by_type", queryParams, function(err, view) {       var keys = new Array();       for (var i = 0; i < view.length; i++) {          keys.push(view[i].id);       }       cb.get(keys, null, function(errs, docs, metas) {          console.log(docs);       });    }); Monday, June 17, 13
  • 34. Q  &  A Monday, June 17, 13
  • 35. Thank  you! [email protected] @tgrall Get  Couchbase  Server  at   hHp://www.couchbase.com/download Monday, June 17, 13