Presentation is loading. Please wait.

Presentation is loading. Please wait.

CouchDB - Sai Divya Panditi - Priyanka Yechuri. Overview Introduction SQL vs CouchDB CouchDB Features CouchDB Core API Futon Security Application.

Similar presentations


Presentation on theme: "CouchDB - Sai Divya Panditi - Priyanka Yechuri. Overview Introduction SQL vs CouchDB CouchDB Features CouchDB Core API Futon Security Application."— Presentation transcript:

1 CouchDB - Sai Divya Panditi - Priyanka Yechuri

2 Overview Introduction SQL vs CouchDB CouchDB Features CouchDB Core API Futon Security Application

3 Overview Demo Code Advantages DisAdvantages Iris Couch Conclusion References

4 Introduction Created By : Damien Katz Year : 2005 Language : Erlang License : Apache Software Foundation(2008)

5 Introduction... NoSQL Database.....Uses Map/Reduce queries written in javascript

6 NoSQL Databases Schema-Free Distributed Open Source Horizontally Scalable Easy Replication Support

7 NoSQL Timeline

8 Document-Oriented DBMS Data is stored in documents......and not in relations like an RDBMS

9 SQL vs CouchDB SQLCouchDB RelationalNon-Relational TablesDocuments with types Rows and ColumnsDocument Fields SQL Query EngineMap / Reduce Engine

10 CouchDB Features Data Representation - Using JSON Interaction - Futon / CouchDB API Querying - Map / Reduce Design Documents - Application code(Language : Javascript) Documents can have attachments

11 JSON Stands for Javascript Object Notation Derived from Javascript scripting language Used for representing simple data structures and associative arrays

12 JSON..... Example: { "firstName": "John", "lastName": "Smith", "age": 25, "phoneNumber": [ { "type": "home", "number": "212 555-1234" }, { "type": "fax", "number": "646 555-4567" } ] }

13 CouchDB Core API (Command Line Utility ) Server API Database API Document API Replication API

14 HTTP API Messages are self-described via HTTP Headers and HTTP Status Codes. URIs identify resources. HTTP Methods define operations on the resources.

15 HTTP Request Methods MethodDescription PUT GET POST DELETE COPY PUT requests are used to create new resources where the URI of the request is different to the resource that is to be created. GET requests are used to request data from the database. POST requests are used to update the existing data, at the same resource the URI is requested from. DELETE requests to delete databases and documents. Copies one resource to another resource.

16 HTTP Status Codes Status CodeDescription 200 (OK) 201 (Created) 304 (Not Modified) 400 (Bad Request) 404 (Not Found) 405 (Method Not Allowed) 409 (Conflict) 412 (Precondition Failed) 500 (Internal Server Error) The request was successfully processed. The document was successfully created. The document has not been modified since the last update. The syntax of the request was invalid. The request was not found. The request was made using an incorrect request method. The request failed because of a database conflict. could not create a database- a database with that name already exists. The request was invalid and failed, or an error occurred within the CouchDB server.

17 Curl Command - Server API Command to check if CouchDB is working at all? curl http://127.0.0.1:5984/ Response : {"couchdb":"Welcome","version":"0.10.1"}

18 Curl Command - Database API Command to get a list of Databases : curl -X GET http://127.0.0.1:5984/_all_dbs Command to create a Database : curl -X PUT http://127.0.0.1:5984/DB_name Curl's -v option : curl -vX PUT http://127.0.0.1:5984/DB_name Command to destroy a Database : curl -X DELETE http://127.0.0.1:5984/DB_name

19 Curl Command - Document API Command to create a document : curl -X PUT http://127.0.0.1:5984/albums/ 6ert2gh45ji6h6tywe324743rtbhgtrg \ -d '{"title":"abc","artist":"xyz"}' Command to get a UUID : curl -X GET http://127.0.0.1:5984/_uuids Command to retrieve a Document : curl -X GET http://127.0.0.1:5984/albums/ 6ert2gh45ji6h6tywe324743rtbhgtrg

20 Curl Command - Document API Command for attachments : curl -vX PUT http://127.0.0.1:5984/albums/ 6ert2gh45ji6h6tywe324743rtbhgtrg/ \ artwork.jpg?rev=2-2739352689 --data-binary @artwork.jpg -H "Content-Type: image/jpg" To view the image in the browser, URL is : http://127.0.0.1:5984/albums/6ert2gh45ji6h6 tywe324743rtbhgtrg/artwork.jpg

21 Curl Command- Replication API Command to replicate a Database : curl -vX POST http://127.0.0.1:5984/ _replicate \ -d '{"source":"albums","target": "albums_replica"}'

22 Futon Built-in admin interface Access to all CouchDB features Create and Destroy databases Create, View and Edit Documents Compose and run Map / Reduce Views Replicate a Database

23 Futon Interface Demo...

24 Design Documents Contains application code They are like normal json documents but prefixed by _design/ CouchDB looks for views and other application functions here...

25 Used for extracting data we need for a specific purpose Example : function(doc){ if(doc.Bname) { emit(doc.id,doc.Bname); } Views

26 View Functions... Map - single parameter - doc emit(key,value) - built-in function Results of emit() are sorted by key We query the views to produce the desired result When we query a view, it's run on every document in the database for which view is defined View result is stored in a B-tree

27 View Functions… B-tree for the view is built only once and all the subsequent queries will just read the B-tree instead of executing the map function again Used to find documents by any value or structure that resides in them Using the URI, we can retrieve the exact data we need. For Example : /books/_design/docs/_view/by_Bname?key="Circuits"

28 Map Functions For Example : Consider the following documents Document-1 id : 1 Bname : Oracle Category : CS Author : abc Edition : 2007 Document-2 id : 2 Bname : Networks Category : CS Author : xyz Edition : 2001 Document-3 id : 3 Bname : Circuits Category : Electronics Author : abcd Edition : 2004 Document-4 id : 4 Bname : AI Category : CS Author : pqrs Edition : 2010

29 Map Functions… Output : KeyValue 1Oracle 2Networks 3Circuits 4AI

30 Map Functions… Map Function : map:function(doc) { emit(doc.Bname, doc.id); } Output : AI4 Circuits3 Networks2 Oracle1

31 Reduce Function This function operates on the sorted rows emitted by map view functions. Predefined Reduce Functions: _sum, _count etc. Example: function(keys,values){ return sum(values); //gives aggregate values }

32 Security Database Admins Validation Functions

33 Database Admin Demo…

34 Validation Function Uses the function validate_doc_update(). If the validation function raises an exception, the update is denied else the updates are accepted. Document validation is optional.

35 Who uses CouchDB?

36 Application GSUBooks.com

37

38 add.js: $(document).ready( function() { //Event handler crud stuff $('input#addId').click(function(e) { if ($('#bookId').val().length == 0) { return; } var bookdoc = { booknm: $('#bookId').val(), authornm: $('#authorId').val(), category: $('#categoryId').val(), edition: $('#editionId').val(),quantity: $('#quantityId').val() } Code - add.js

39 Code - add.js... db.saveDoc(bookdoc, { success: function(resp) { checkList(); //refreshes the database with new book } });

40 Code-delete.js delete.js $(document).ready ( function() { $('input#borrowId').click(function(e) { if ($('#idId').val().length == 0) { return; } var bookdoc = { _id: $('#idId').val(), _rev: $('#revId').val() } db.removeDoc(bookdoc, { success: function(resp) {

41 Code-delete.js checkList(); //refreshes the database with the remaining books alert("Book has been borrowed Successfully!!"); }}); clearDocument(); }); }); function clearDocument() { $('#idId').val(''); $('#revId').val(''); $('#bookId').val(''); $('#authorId').val(''); $('#categoryId').val(''); $('#editionId').val(''); $('#quantityId').val(''); };

42 Code - Update.js update.js $(document).ready(function() { $('input#updateId').click(function(e) { if ($('#idId').val().length == 0) { return; } var bookdoc = { _id: $('#idId').val(), _rev: $('#revId').val(), booknm: $('#bookId').val(),

43 update.js... authornm:$('#authorId').val(), category:$('#categoryId').val(), edition:$('#editionId').val(), quantity:$('#quantityId').val() } db.saveDoc(bookdoc, { success: function(resp) { checkList(); } });

44 display.js $(document).ready(function() { checkList(); }); function checkList() { $("table#itemData").empty(); db.view("myfirstDesign/myfirstView", { success: function(data) { $('table#itemData').append(' Book Name Author Name <font color="black">Category Edition Code - Display.js

45 Quantity '); data.rows.map(function(row) { $('table#itemData').append(' ' +row.value.authornm +' ' +row.value.category +' ' +row.value.edition +' ' +row.value.quantity +' '); $('#'+row.value._id).click(function() { $('#idId').val(row.value._id);

46 Code - Display.js $('#revId').val(row.value._rev); $('#bookId').val(row.value.booknm); $('#authorId').val(row.value.authornm); $('#categoryId').val(row.value.category); $('#editionId').val(row.value.edition); $('#quantityId').val(row.value.quantity); return false; }); }); } }); }

47 Advantages / DisAdvantages Features Not easy to learn especially if the user is familiar with SQL Security is weak Temporary views on large datasets are very slow. Replication of large databases may fail Documents are quite large as the data is represented using “JSON” format

48 Iris Couch Cloud CouchDB hosting Free service

49 Iris Couch Demo…

50 References CouchDB - The Definitive Guide, J. Chris Anderson, Jan Lehnardt & Noah Slater Beginning CouchDB, Joe Lennon

51 Thank You...


Download ppt "CouchDB - Sai Divya Panditi - Priyanka Yechuri. Overview Introduction SQL vs CouchDB CouchDB Features CouchDB Core API Futon Security Application."

Similar presentations


Ads by Google