Your SlideShare is downloading. ×
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Introduction to couch_db
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Introduction to couch_db

1,056

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,056
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
17
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. Introduction to CouchDB Jon Allen (JJ) http://perl.jonallen.info - jj@jonallen.info
  • 2. What is CouchDB?
    • Document Oriented Database
    Introduction to CouchDB
  • 3. What is CouchDB?
    • Document Oriented Database
      • No schema
        • Stores "documents" (i.e. data structures)
      • No SQL
        • Uses MapReduce queries written in JavaScript
    Introduction to CouchDB
  • 4. 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, scalability
    Introduction to CouchDB
  • 5. 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
      • CMS
    Introduction to CouchDB
  • 6. Using CouchDB from Perl
    • HTTP REST API
    • No DBI, DBD, DBIx::Class etc
    • CPAN modules
      • CouchDB::Client
      • AnyEvent::CouchDB
    Introduction to CouchDB
  • 7. Creating a database Introduction to CouchDB 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"; };
  • 8. Inserting a document Introduction to CouchDB 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"; };
  • 9. Inserting a document Introduction to CouchDB 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"; }; Document ID, must be unique Revision ID
  • 10. CouchDB GUI Introduction to CouchDB
  • 11. Querying documents Introduction to CouchDB Map function Key, Value Key, Value Key, Value Key, Value All Documents Query by Key Key, Value Key, Value
  • 12. 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 key
    Introduction to CouchDB
  • 13. 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, group
    Introduction to CouchDB
  • 14. Designing a view
    • Show messages for a specific user
    Introduction to CouchDB 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); } } } } EOT
  • 15. Creating a view Introduction to CouchDB 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 &quot;Could not create document&quot;; };
  • 16. Querying a view Introduction to CouchDB 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 &quot;Could not query view&quot;; }; say Dumper($result);
  • 17. Query results Introduction to CouchDB varos:talk_scripts jj$ perl5.10.1 query_view.pl $VAR1 = { 'total_rows' => 3, 'rows' => [ { 'value' => 'Hello, World', 'id' => 'docid', 'key' => 'JJ' } ], 'offset' => 2 };
  • 18. 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
  • 19. KTHKSBYE! Introduction to CouchDB Thank you for listening! Any questions? http://perl.jonallen.info/talks

×