Your SlideShare is downloading. ×

CouchConf London Developing Couchbase Part III: Advanced App Dev

570

Published on

Published in: Technology, News & Politics
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
570
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

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  

×