Slide 1

Slide 1 text

Monday, June 17, 13

Slide 2

Slide 2 text

Introducing   Couchbase  Server  2.0 Tugdual  Grall Technical  Evangelist Monday, June 17, 13

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

RDBMS  are  not  Enough? Monday, June 17, 13

Slide 5

Slide 5 text

Growth  is  the  New  Reality • Instagram  gained  nearly  1  million  users  overnight  when  then  expanded  to  Android Monday, June 17, 13

Slide 6

Slide 6 text

Draw  Something  Viral  Growth 19 17 15 13 11 9 7 5 3 3/1 28 26 24 22 20 18 16 14 12 10 8 2/6 Draw  Something  by  OMGPOP Daily  Ac)ve  Users  (millions) 21 2 4 6 8 10 12 14 16 Monday, June 17, 13

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

Couchbase  Server NoSQL  Document  Database Monday, June 17, 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

Market  AdopDon  –  Customers Internet  Companies Enterprises Monday, June 17, 13

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

Couchbase  OperaDons Monday, June 17, 13

Slide 22

Slide 22 text

3 3 2 Single  node  -­‐  Couchbase  Write  OperaDon Managed  Cache Disk  Queue Disk ReplicaDon  Queue App  Server Couchbase  Server  Node Doc  1 Doc  1 Doc  1 To  other  node Monday, June 17, 13

Slide 23

Slide 23 text

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 Doc Doc  9 APP  SERVER  1 COUCHBASE  Client  Library CLUSTER  MAP COUCHBASE  Client  Library CLUSTER  MAP APP  SERVER  2 Monday, June 17, 13

Slide 24

Slide 24 text

Client  SDK www.couchbase.com/develop Clojure Python Ruby libcouchbase Go Monday, June 17, 13

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

Demo  Time Monday, June 17, 13

Slide 33

Slide 33 text

www.couchbase.com/download Couchbase  Server   Monday, June 17, 13

Slide 34

Slide 34 text

Q  &  A Monday, June 17, 13

Slide 35

Slide 35 text

Thank  you! [email protected] @tgrall Get  Couchbase  Server  at   hHp://www.couchbase.com/download Monday, June 17, 13

Slide 36

Slide 36 text

Monday, June 17, 13