Introduction to couchdb
Upcoming SlideShare
Loading in...5
×
 

Introduction to couchdb

on

  • 3,265 views

Introduction to couchdb

Introduction to couchdb

Statistics

Views

Total Views
3,265
Views on SlideShare
2,143
Embed Views
1,122

Actions

Likes
1
Downloads
47
Comments
0

11 Embeds 1,122

http://blog.nosqlfan.com 987
http://feed.feedsky.com 56
http://www.kuqin.com 28
http://xianguo.com 12
http://www.zhuaxia.com 12
http://www.16kan.com 8
http://reader.youdao.com 7
http://zhuaxia.com 4
http://xue.uplook.cn 4
http://www.fandm.edu 2
http://translate.googleusercontent.com 2
More...

Accessibility

Categories

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

    Introduction to couchdb Introduction to couchdb Presentation Transcript

    • Introduction to CouchDB Jon Allen (JJ) http://perl.jonallen.info - jj@jonallen.info
    • What is CouchDB? •  Document Oriented DatabaseIntroduction to CouchDB perl.jonallen.info
    • What is CouchDB? •  Document Oriented Database –  No schema •  Stores "documents" (i.e. data structures) –  No SQL •  Uses MapReduce queries written in JavaScriptIntroduction to CouchDB perl.jonallen.info
    • What is CouchDB? •  Document Oriented Database –  No schema •  Stores "documents" (i.e. data structures) –  No SQL •  Uses "MapReduce" queries written in JavaScript •  Written in Erlang •  REST API •  Replication, scalabilityIntroduction to CouchDB perl.jonallen.info
    • Why use CouchDB? •  Store complex data structures (JSON) •  Store variable data structures (no schema) •  De-normalised / self contained •  Add attachments to documents •  Scalable and fault tolerant •  Better fit for certain problem domains –  Messaging –  CMSIntroduction to CouchDB perl.jonallen.info
    • Using CouchDB from Perl •  HTTP REST API •  No DBI, DBD, DBIx::Class etc •  CPAN modules –  CouchDB::Client –  AnyEvent::CouchDBIntroduction to CouchDB perl.jonallen.info
    • Creating a database use CouchDB::Client; use Try::Tiny; my $client = CouchDB::Client->new( uri => http://localhost:5984 ); my $db = $client->newDB(jj_test); # lower case! try { $db->create; } catch { die "Could not create DB"; };Introduction to CouchDB perl.jonallen.info
    • Inserting a document my $client = CouchDB::Client->new(); my $db = $client->newDB(jj_test); my $doc = $db->newDoc(docid, undef, { type => message, text => Hello, World, to => [JJ, Barbie, Brian], }); try { $doc->create; } catch { die "Could not create document"; };Introduction to CouchDB perl.jonallen.info
    • Inserting a document my $client = CouchDB::Client->new(); my $db = $client->newDB(jj_test); my $doc = $db->newDoc(docid, undef, { type => message, text => Hello, World, to => [JJ, Barbie, Brian], }); try { Document ID, Revision ID $doc->create; must be unique } catch { die "Could not create document"; };Introduction to CouchDB perl.jonallen.info
    • CouchDB GUI Introduction to CouchDB perl.jonallen.info
    • Querying documents All Map function Documents Key, Value Key, Value Key, Value Query by Key Key, Value Key, Value Key, Value Introduction to CouchDB perl.jonallen.info
    • Views •  A view is a JavaScript function –  Like a stored procedure in SQL •  Map function is executed on every document in the database •  Emits key/value pairs –  Can emit 0, 1, or more KV pairs for each document in the database –  Keys and values can be complex data structures •  KV pairs are then ordered and indexed by keyIntroduction to CouchDB perl.jonallen.info
    • Queries •  Queries are run against views –  i.e. searches the "key" of the list of KV pairs •  Query types: –  Exact: key = x –  Range: key is between x and y –  Multiple: key is in list (x,y,z) •  Reduce functions –  e.g. count, sum, groupIntroduction to CouchDB perl.jonallen.info
    • Designing a view •  Show messages for a specific user my $view = <<EOT; function(doc) { if (doc.type && doc.to && doc.text) { if (doc.type == message) { for (var dest in doc.to) { emit(doc.to[dest], doc.text); } } } } EOTIntroduction to CouchDB perl.jonallen.info
    • Creating a view my $client = CouchDB::Client->new(); my $db = $client->newDB(jj_test); my $doc = $db->newDesignDoc(_design/myview,undef, { views => { messages_to => { map => $view }, }, }); try { $doc->create; } catch { die "Could not create document"; };Introduction to CouchDB perl.jonallen.info
    • Querying a view use Data::Dumper; my $client = CouchDB::Client->new(); my $db = $client->newDB(jj_test); my $view = $db->newDesignDoc(_design/myview)->retrieve; my $result = try { $view->queryView(messages_to, (key => JJ)); } catch { die "Could not query view"; }; say Dumper($result);Introduction to CouchDB perl.jonallen.info
    • Query results varos:talk_scripts jj$ perl5.10.1 query_view.pl $VAR1 = { total_rows => 3, rows => [ { value => Hello, World, id => docid, key => JJ } ], offset => 2 };Introduction to CouchDB perl.jonallen.info
    • Conclusion •  Different mindset to SQL database •  Quite low-level, but very powerful •  Additional features –  Replication –  Document revisions –  Reduce functions –  Changes API •  More information: http://books.couchdb.org/relax Introduction to CouchDB perl.jonallen.info
    • KTHKSBYE! Thank you for listening! Any questions? http://perl.jonallen.info/talks Introduction to CouchDB perl.jonallen.info