$30 off During Our Annual Pro Sale. View Details »

Couchbase Lite Strange Loop

Chris Anderson
September 20, 2013

Couchbase Lite Strange Loop

Sync is the future of mobile data, and the best way to power sync is with an embedded mobile database. In this talk I describe Couchbase Lite and then I get geeky with the data-structures we use for conflict detection and management. If you want to write your own offline capable database, you'll end up using data structures like this.

Chris Anderson

September 20, 2013
Tweet

More Decks by Chris Anderson

Other Decks in Technology

Transcript

  1. Friday, September 20, 13

    View Slide

  2. The  Future  of  Mobile
    J.  Chris  Anderson  –  Mobile  Architect
    Friday, September 20, 13

    View Slide

  3. JSON  Anywhere  
    Couchbase  Server
    • JSON  on  the  device
    ­ Developers  
    increasingly  prefer  
    NoSQL  database
    • JSON  on  the  wire
    ­ No  need  for  data  
    transforma9on
    • JSON  in  the  cloud
    ­ Flexible  data  model
    ­ High  performance
    ­ Easy  scalability
    JS N
    JS N
    JS N
    Friday, September 20, 13

    View Slide

  4. Couchbase  Lite
    The  only  
    Na@ve  NoSQL  
    Database  for  
    Mobile
    Friday, September 20, 13

    View Slide

  5. The  Complete  Mobile  Solu@on
    Friday, September 20, 13

    View Slide

  6. Architecture
    Server  3
    Server  1 Server  2
    Couchbase  Server
    Channel
    Sync  Gateway
    Channel Channel
    Sync  Gateway
    Channel
    Couchbase  Lite  for  iOS  and  Android
    On Premise In the cloud
    Friday, September 20, 13

    View Slide

  7. Couchbase  Lite
    The  only  NoSQL  Database  for  Mobile  Devices
    • Features
    ­ Ultra-­‐lightweight,  secure  JSON  
    database  
    ­ Na9ve  support  for  iOS,  Android  
    and  REST/HTML5
    ­ Full  document,  index  and  
    querying  and  sync  capabili9es
    ­ Powerful  conflict  resolu9on
    Couchbase  
    Lite  
    Android
    Couchbase  
    Lite  
    iOS
    Friday, September 20, 13

    View Slide

  8. What  you  get
    Couchbase  
    Lite  
    Android
    Couchbase  
    Lite  
    iOS
    ­ Enable  new  class  of  rich  data  
    intensive  local  applica9ons  
    ­ Rapid  development  using  
    na9ve  JSON  data
    ­ Highly  responsive  interac9ve  
    applica9ons
    ­ Always  available  -­‐    online  or  
    offline
    Friday, September 20, 13

    View Slide

  9. Sync  via  Channels
    Friday, September 20, 13

    View Slide

  10. Collaborate  using  Channels
    • For  each  document,  you  specify  a  set  of  
    channels  it  belongs  to
    • For  each  user  or  device,  you  control  which  
    channels  they  can  access
    • Replicate  only  a  subset  of  documents  down  to  
    the  device
    ­ User-­‐defined  filter  func9ons  
    ­ Simply  lets  you  know  whether  a  document  should  be  replicated
    • And  you  can  authen@cate  users  
    Friday, September 20, 13

    View Slide

  11. Data Routing
    Data Data
    Friday, September 20, 13

    View Slide

  12. Data Routing
    Data
    Data
    Data
    Friday, September 20, 13

    View Slide

  13. Data Routing
    Data
    Data
    Data
    Data
    Friday, September 20, 13

    View Slide

  14. Data Routing
    Data
    D
    ata
    Data
    Data
    Data
    Friday, September 20, 13

    View Slide

  15. Data Routing
    Data
    D
    ata
    Data
    Data
    Data
    Data
    Friday, September 20, 13

    View Slide

  16. Data Routing
    Data
    Data
    Data
    Data
    Data
    Data
    Friday, September 20, 13

    View Slide

  17. How  do  I  get  started?
    Zero to sync in
    5 minutes !!!
    Friday, September 20, 13

    View Slide

  18. Look  at  the  code
     JSON  /  REST  interface
    -­‐CRUD  opera9ons  use  HTTP  
    verbs
    -­‐Works  with  libraries  like  
    jQuery  and  Backbone
    Live  Query  UI  Updates
    -­‐UI  updated  to  reflect  
    database  changes,  even  for  
    remote  changes
    -­‐HTTP  long  poll  API  to  
    support  quick  redraw
    Collaborate  via  Cloud
    -­‐social  network  login
    -­‐programmable  sync  
    func9on  for  update  
    valida9on  and  channel  
    rou9ng
    Friday, September 20, 13

    View Slide

  19. JSON  Document  Schema
    Friday, September 20, 13

    View Slide

  20. All  Todo  Lists
    • Rendered  with  HTML  
    and  JavaScript
    • View  query  to  show  all  
    the  lists  on  a  device.
    • Form  submit  event  
    creates  a  document  
    represen@ng  a  list.
    Friday, September 20, 13

    View Slide

  21. Task  List  -­‐  Items
    • Toggle  a  checkbox
    • Add  a  photo
    • Live  update
    Friday, September 20, 13

    View Slide

  22. Toggle  a  Task  Checkbox
    by  upda@ng  the  JSON  Document
    Uses  a  familiar  REST  paradigm.  GET  and  PUT  used  here.
    Friday, September 20, 13

    View Slide

  23. Live  Update  UI
    Local  and  remote  updates  both  trigger  a  database  event,  used  for  redraw.
    Friday, September 20, 13

    View Slide

  24. Sign-­‐in  to  sync  and  collaborate
    • Example  uses  Facebook,  we  
    support  a  wide  variety  of  
    authen@ca@on  op@on
    • Pick  from  the  list  of  signed  in  
    users  when  sharing
    Friday, September 20, 13

    View Slide

  25. Photo  AYachment
    Friday, September 20, 13

    View Slide

  26. Sync  Func@on
    • Applica@on  code  run  
    in  the  cloud
    • Access  control
    • Channel  rou@ng
    • Update  Valida@on
    Your  cloud  in  one  page  of  code.
    Friday, September 20, 13

    View Slide

  27. Task  documents  routed  to  channels
    • Must  have  a  list_id
    • Routed  to  a  channel  based  on  list_id
    Friday, September 20, 13

    View Slide

  28. List  documents  grant  channel  access
    • Must  have  an  owner
    • Owner  can’t  change
    • Owner  and  members  
    can  access  channel
    • List  is  on  it’s  own  
    channel
    Friday, September 20, 13

    View Slide

  29. Data  Structures  for  Conflict  
    Detec@on  and  Management
    Friday, September 20, 13

    View Slide

  30. Vector  Clocks
    • Scale  with  the  #  of  processes  upda@ng  an  item
    Friday, September 20, 13

    View Slide

  31. Never  Throw  Data  Away
    Friday, September 20, 13

    View Slide

  32. Revision  Trees
    {counter,  content  hash}
    4-­‐3a14f7d8
    5-­‐d7ad89bd
    4 4 4
    3 3 3
    2 2 2
    3
    1
    winner
    1
    conflic@ng  
    version
    Friday, September 20, 13

    View Slide

  33. Revision  Trees
    1
    Friday, September 20, 13

    View Slide

  34. Revision  Trees
    1 1
    2
    Friday, September 20, 13

    View Slide

  35. Revision  Trees
    1 1
    2
    2
    Friday, September 20, 13

    View Slide

  36. Revision  Trees
    1 1
    2
    2
    3
    Friday, September 20, 13

    View Slide

  37. Revision  Trees
    1 1
    2
    2
    3 3
    Friday, September 20, 13

    View Slide

  38. Revision  Trees
    1
    2
    3
    1
    2
    3
    4 4
    Friday, September 20, 13

    View Slide

  39. Revision  Trees
    1
    2
    3
    1
    2
    3
    4 4
    4
    Friday, September 20, 13

    View Slide

  40. Revision  Trees
    1
    2
    3
    1
    2
    3
    4
    4 4
    Friday, September 20, 13

    View Slide

  41. Revision  Trees
    1
    2
    3
    4
    1
    2
    3
    4
    4
    4
    Friday, September 20, 13

    View Slide

  42. Revision  Trees
    1
    2
    3
    4
    4
    1
    2
    3
    4
    4
    Friday, September 20, 13

    View Slide

  43. Revision  Trees
    1
    2
    3
    1
    2
    3
    4
    4
    4
    4
    1
    2
    3
    4
    3
    4
    Friday, September 20, 13

    View Slide

  44. Revision  Trees
    1
    2
    3
    1
    2
    1
    2
    3
    4
    4
    4
    4 4
    3
    3
    4
    Friday, September 20, 13

    View Slide

  45. Revision  Trees
    1
    2
    3
    1
    2
    1
    2
    3
    4
    4
    4
    4 4
    3
    3
    4
    5
    4
    Friday, September 20, 13

    View Slide

  46. Revision  Trees
    1
    2
    3
    1
    2
    1
    2
    3
    4
    4 4
    3
    3
    4
    5 5
    4 4
    Friday, September 20, 13

    View Slide

  47. Revision  Trees
    1
    2
    3
    1
    2
    1
    2
    4
    4
    3
    3
    4
    5 5
    3
    3
    4
    4
    5
    4 4
    Friday, September 20, 13

    View Slide

  48. Conflict  Detec@on  and  Management
    •Vector  Clocks
    •Revision  Trees
    Friday, September 20, 13

    View Slide

  49. Get  Started
    hYp://mobile.couchbase.com
    Friday, September 20, 13

    View Slide