Developing	  with	  Couchbase	  Part	  III:	       Advanced	  Applica;on	  Development	                      Raghavan	  “R...
Speaker	  Introduc;on	  •  Architect	  and	  Evangelist	  working	  with	  developers	  •  Speaker	  at	  JavaOne,	  RSA	 ...
Agenda	  •    Query	  API	  •    View	  API	  •    Using	  the	  APIs	  •    Reduce	  func;ons	  •    Paging	  •    Resour...
THE	  QUERY	  API	                            4	  
Query	  APIs	  // map function!function (doc) {!   if (doc.type == "beer") {!      emit(doc._id, null);!   }!}!!// Java co...
THE	  VIEW	  API	                           6	  
View	  APIs	  with	  Java	  // map function!function (doc) {!   if (doc.type == "beer") {!       emit(doc._id, null);!   }...
Querying	  in	  Development/Produc;on	  modes	  •  Querying	  modes	       –  Development/Produc;on	  modes	       –  Prod...
USING	  THE	  APIS	                             9	  
Querying	  with	  Java	  –	  Custom	  Limit	  // map function!function (doc) {!   if (doc.type == "beer") {!      emit(doc...
Querying	  with	  Java	  –	  Descending	  Order	  // map function!function (doc) {!   if (doc.type == "beer") {!      emit...
Querying	  with	  Java	  –	  Custom	  View	  Key	  View view2 = client.getView("breweries", "breweries");!          !Query...
Querying	  with	  Java	  –	  Custom	  View	  Key	  Range	  View view2 = client.getView("breweries", "breweries");!        ...
USING	  THE	  QUERY	  API	  FOR	       CALCULATION	                                            14	  
Querying	  with	  Java	  –	  Custom	  Reduce	  // map function!function(doc) {!   if (doc.type == "beer") {!     if(doc.ab...
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:...
PAGING	  OVER	  VIEWS	                                17	  
Querying	  with	  Java–	  Custom	  View	  Pagina;on	      Paginator op = client.paginatedQuery(view, query, 10);!!    View...
RESOURCES	  AND	  SUMMARY	                                    19	  
Resources,	  Summary	  and	  Call	  For	  Ac;on	  •  Couchbase	  Server	  Downloads	      –  hcp://www.couchbase.com/downl...
THANKS	  -­‐	  Q&A	  Raghavan “Rags” Srinivas, Couchbase Inc.	  (rags@couchbase.com, @ragss)                              ...
Upcoming SlideShare
Loading in …5
×

CouchConf London Developing Couchbase Part III: Advanced App Dev

632
-1

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
632
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
8
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

CouchConf London Developing Couchbase Part III: Advanced App Dev

  1. 1. Developing  with  Couchbase  Part  III:   Advanced  Applica;on  Development   Raghavan  “Rags”  Srinivas   Developer  Advocate   rags@couchbase.com   1  
  2. 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. 3. Agenda  •  Query  API  •  View  API  •  Using  the  APIs  •  Reduce  func;ons  •  Paging  •  Resources  and  Summary  •  Q/A   3  
  4. 4. THE  QUERY  API   4  
  5. 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. 6. THE  VIEW  API   6  
  7. 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. 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. 9. USING  THE  APIS   9  
  10. 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. 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. 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. 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. 14. USING  THE  QUERY  API  FOR   CALCULATION   14  
  15. 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. 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. 17. PAGING  OVER  VIEWS   17  
  18. 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. 19. RESOURCES  AND  SUMMARY   19  
  20. 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. 21. THANKS  -­‐  Q&A  Raghavan “Rags” Srinivas, Couchbase Inc.  (rags@couchbase.com, @ragss) 21  
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×