CouchConf London Developing Couchbase Part III: Advanced App Dev
 

Like this? Share it with your network

Share

CouchConf London Developing Couchbase Part III: Advanced App Dev

on

  • 851 views

 

Statistics

Views

Total Views
851
Views on SlideShare
851
Embed Views
0

Actions

Likes
0
Downloads
8
Comments
0

0 Embeds 0

No embeds

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

CouchConf London Developing Couchbase Part III: Advanced App Dev Presentation Transcript

  • 1. Developing  with  Couchbase  Part  III:   Advanced  Applica;on  Development   Raghavan  “Rags”  Srinivas   Developer  Advocate   rags@couchbase.com   1  
  • 2. Speaker  Introduc;on  •  Architect  and  Evangelist  working  with  developers  •  Speaker  at  JavaOne,  RSA  conferences,  Sun  Tech  Days,   JUGs  and  other  developer  conferences  •  Taught  undergrad  and  grad  courses  •  Technology  Evangelist  at  Sun  Microsystems  for  10+   years  •  S;ll  trying  to  understand  and  work  more  effec;vely  on   Java  and  distributed  systems  •  Couchbase  Developer  Advocate  working  with  Java  and   Ruby  developers  •  Philosophy:  “Be#er  to  have  an  unanswered  ques1on   than  a  unques1oned  answer”   2  
  • 3. Agenda  •  Query  API  •  View  API  •  Using  the  APIs  •  Reduce  func;ons  •  Paging  •  Resources  and  Summary  •  Q/A   3  
  • 4. THE  QUERY  API   4  
  • 5. Query  APIs  // map function!function (doc) {! if (doc.type == "beer") {! emit(doc._id, null);! }!}!!// Java code!Query query = new Query();!!query.setReduce(false);!query.setIncludeDocs(true);!query.setStale(Stale.FALSE);!! 5  
  • 6. THE  VIEW  API   6  
  • 7. View  APIs  with  Java  // map function!function (doc) {! if (doc.type == "beer") {! emit(doc._id, null);! }!}!!// Java code!View view = client.getView("beers", "beers");!!ViewResponse result = client.query(view, query);!!Iterator<ViewRow> itr = result.iterator();! !while (itr.hasNext()) {! row = itr.next();! doc = (String) row.getDocument();! // do something!}!! 7  !
  • 8. Querying  in  Development/Produc;on  modes  •  Querying  modes   –  Development/Produc;on  modes   –  Produc;on  environment  involves  processes  •  How  to  set  it   –  In  Java,  with  the  proper;es  file,  command  line  or   System.setProperty()! –  In  .NET,  it’s  thru  the  app.config  or  web.config   config.DesignDocumentNameTransformer = new ProductionModeNameTransformer();! –  In  Ruby,  a  property  :environment! –  In  PHP  through  edi;ng  The  script   8  
  • 9. USING  THE  APIS   9  
  • 10. Querying  with  Java  –  Custom  Limit  // map function!function (doc) {! if (doc.type == "beer") {! emit(doc._id, null);! }!}!!// Java code!View view = client.getView("beers", "beers");!!Query query = new Query();!!query.setReduce(false);!query.setIncludeDocs(true);!query.setStale(Stale.FALSE);!Query.setLimit(5);!! 10  
  • 11. Querying  with  Java  –  Descending  Order  // map function!function (doc) {! if (doc.type == "beer") {! emit(doc.abv, null);! }!}!!// Java code!View view = client.getView("beers", "beers_by_abv");!!Query query = new Query();!!query.setReduce(false);!query.setIncludeDocs(true);!query.setStale(Stale.FALSE);!Query.setDescending(true);!! 11  
  • 12. Querying  with  Java  –  Custom  View  Key  View view2 = client.getView("breweries", "breweries");! !Query query2 = new Query();!query2.setIncludeDocs(true);!query2.setStale(Stale.FALSE);! !query2.setKey(beer.breweryId);!!ViewResponse result2 = client.query(view2, query2);!!Iterator<ViewRow> itr2 = result2.iterator();! !while (itr2.hasNext()) {! row2 = itr2.next();! doc = (String) row2.getDocument();! // do something!}! 12  
  • 13. Querying  with  Java  –  Custom  View  Key  Range  View view2 = client.getView("breweries", "breweries");! !Query query2 = new Query();!query2.setIncludeDocs(true);!query2.setStale(Stale.FALSE);! !query2.setRange(beer.breweryId, beer.breweryId);!!ViewResponse result2 = client.query(view2, query2);!!Iterator<ViewRow> itr2 = result2.iterator();! !while (itr2.hasNext()) {! row2 = itr2.next();! doc = (String) row2.getDocument();! // do something!}!! 13  
  • 14. USING  THE  QUERY  API  FOR   CALCULATION   14  
  • 15. Querying  with  Java  –  Custom  Reduce  // map function!function(doc) {! if (doc.type == "beer") {! if(doc.abv) {! emit(doc.abv, 1);! }}}!!//reduce function!_count!!// Java code!View view = client.getView("beers", "beers_count_abv");!query.setGroup(true);!!while (itr.hasNext()) {! row = itr.next();! System.out.println(String.format("%s: %s”, ! row.getKey(), row.getValue()));!}! 15  
  • 16. View  Calcula;on  Result  10: 2!9.6: 5!9.1: 1!9: 3!8.7: 2!8.5: 1!8: 2!7.5: 4!7: 4!6.7: 1!6.6: 1!6.2: 1!6: 2!5.9: 1!5.6: 1!5.2: 1!5: 1!4.8: 2!4.5: 1!4: 2! 16  
  • 17. PAGING  OVER  VIEWS   17  
  • 18. Querying  with  Java–  Custom  View  Pagina;on   Paginator op = client.paginatedQuery(view, query, 10);!! ViewRow row;! int count=0;!! while (op.hasNext()) {! row = op.next();!! System.out.println(String.format("Key/value is %s: %s”,! row.getKey(), row.getValue()));! String doc = (String) client.get(row.getId());!! BeerDTO beer = new Gson().fromJson(doc, BeerDTO.class);!! System.out.println(String.format("%s: %s %s %f", beer.id,! beer.name, beer.breweryId, beer.abv));!}! ! 18  
  • 19. RESOURCES  AND  SUMMARY   19  
  • 20. Resources,  Summary  and  Call  For  Ac;on  •  Couchbase  Server  Downloads   –  hcp://www.couchbase.com/downloads-­‐all   –  hcp://www.couchbase.com/couchbase-­‐server/overview  •  Views   –  hcp://www.couchbase.com/docs/couchbase-­‐manual-­‐2.0/ couchbase-­‐views.html  •  Developing  with  Client  libraries   –  hcp://www.couchbase.com/develop/java/current  (example)  •  Couchbase  forums   –  hcp://www.couchbase.com/forums/     20  
  • 21. THANKS  -­‐  Q&A  Raghavan “Rags” Srinivas, Couchbase Inc.  (rags@couchbase.com, @ragss) 21