Monday, February 4, 13
Ge#ng	
  Started	
  with	
  
                            Couchbase

                           Tugdual	
  “Tug”	
  Grall
                               Technical	
  Evangelist




         email:	
  tug@couchbase.com                     twi0er:	
  @tgrall
Monday, February 4, 13
Ge#ng	
  Started	
  with	
  
                            Couchbase

                           Tugdual	
  “Tug”	
  Grall
                               Technical	
  Evangelist




         email:	
  tug@couchbase.com                     twi0er:	
  @tgrall
Monday, February 4, 13
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
Couchbase	
  2.0	
  New	
  Features
                         JSON support            Indexing and
                                                   Querying




                 Incremental Map                Cross data center
                      Reduce                       replication




Monday, February 4, 13
Couchbase	
  Handles	
  Real	
  World	
  Scale




Monday, February 4, 13
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
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
Open	
  Source	
  Project
                                               Apache	
  2.0




                hIps://github.com/couchbase/                   Gerrit: hIp://review.couchbase.org/
                hIps://github.com/couchbaselabs/




Monday, February 4, 13
Monday, February 4, 13
SETTING	
  UP	
  TO	
  DEVELOP



Monday, February 4, 13
Install	
  Couchbase	
  Server	
  2.0


                  Ubuntu

                  RedHat

                  Mac	
  OS	
  X

                  Windows

   or	
  build	
  from	
  sources




Monday, February 4, 13
Official	
  SDKs

                    Ruby




                           libcouchbase



                                                                   Clojure

                             Python

                                  www.couchbase.com/develop
                                                              Go


Monday, February 4, 13
Monday, February 4, 13
COUCHBASE	
  OPERATIONS



Monday, February 4, 13
Monday, February 4, 13
DEMONSTRATION



Monday, February 4, 13
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
GeoCouch	
  R-­‐Tree	
  Index
         • Optimized for bulk loading of large data sets
         • Simplified query model (bounding box, nearest neighbor)




Monday, February 4, 13
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
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
Monitoring




Monday, February 4, 13

FOSDEM 2013 : Getting Started with Couchhbase Server 2.0

  • 1.
  • 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
  • 6.
    Couchbase  Handles  Real  World  Scale 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
  • 10.
  • 11.
    SETTING  UP  TO  DEVELOP Monday, February 4, 13
  • 12.
    Install  Couchbase  Server  2.0 Ubuntu RedHat Mac  OS  X Windows or  build  from  sources Monday, February 4, 13
  • 13.
    Official  SDKs Ruby libcouchbase Clojure Python www.couchbase.com/develop Go Monday, February 4, 13
  • 14.
  • 15.
  • 16.
  • 17.
  • 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
  • 46.