Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Hello
• Chris Anderson <jchris@apache.org>
• Blog: http://jchris.mfdz.com
• Founder, Grabb.it (web analytics for music)
• ...
And You?
• Used CouchDB (for fun)
• Evaluating or using it (for a project)
• Interested in contributing?
• Just here for t...
History
• Damien Katz <http://damienkatz.net/>
• Worked on Lotus Notes & MySQL
• Started in 2005: C++ and XML, on Windows
...
Why CouchDB?
• Common use cases no longer fit RDBMS
• Native to web applications
• Peer-based replication for freedom
• Tak...
This Talk
• How is CouchDB different (from RDBMS)?
• Example HTML/Javascript application
• Quick tour of the internals
How Is CouchDB Different?
           RESTful HTTP

     Schemaless JSON Documents

         Map/Reduce Views

       Incre...
How Is CouchDB Different?
    (from SQL RDBMS)
            RESTful HTTP
            Binary Protocol
      Schemaless JSON ...
RESTful HTTP
       Built for the web

      Javascript Test Suite

     Standard HTTP Clients,
Proxies, Load Balancers & ...
RESTful HTTP
         Built for the web
           Enterprisey
       Javascript Test Suite
         Battle Hardened
     ...
Schemaless JSON
   Documents
        Flat Namespace

   Arbitrary JSON Structures

       Identified By URIs

Optimistic Lo...
Schemaless JSON
   Documents
          Flat Namespace
               Tables
    Arbitrary JSON Structures
Typed Columns an...
Map/Reduce Views
    Functional Javascript

   Incremental Updates

        Predefined

  High-Performance Reads
Map/Reduce Views
     Functional Javascript
       SQL Statements
     Incremental Updates
         Independent
          ...
Incremental Replication
         User Triggered

         Offline Clients

     Resilient & Restartable

             HTTP
Incremental Replication
         User Triggered
           Continuous
         Offline Clients
           Master/Slave
    ...
CouchDB
A new way to write web applications.
            HTML / Javascript

           _design Documents

             p2p...
Live Code!
http://169.254.251.59:5984/_utils/
CouchDB Internals
• couch_httpd.erl
   • Request Dispatch
   • Create Database
   • Get Document
• Other Modules
Request Dispatch
Create Database
Get Document
Other Modules
• couch_btree.erl
 • The heart of the storage module (stores
    Erlang terms sorted by key using user
    s...
Join Us

• #couchdb on irc.freenode.net
• http://couchdb.org
 • mailing lists
 • links to wiki and subversion checkout
Thank You!
 Any Questions?
CouchDB Talk JChris NYC
Upcoming SlideShare
Loading in …5
×

CouchDB Talk JChris NYC

4,212 views

Published on

Published in: Technology
  • Be the first to comment

CouchDB Talk JChris NYC

  1. Hello • Chris Anderson <jchris@apache.org> • Blog: http://jchris.mfdz.com • Founder, Grabb.it (web analytics for music) • Ruby on Rails veteran • CouchDB committer
  2. And You? • Used CouchDB (for fun) • Evaluating or using it (for a project) • Interested in contributing? • Just here for the pizza?
  3. History • Damien Katz <http://damienkatz.net/> • Worked on Lotus Notes & MySQL • Started in 2005: C++ and XML, on Windows • 2006: Moved to Erlang, JSON, and POSIX • 0.7.0 first release of today’s CouchDB • Version 1.0 Planned for the end of 2008
  4. Why CouchDB? • Common use cases no longer fit RDBMS • Native to web applications • Peer-based replication for freedom • Takes today’s scalability lessons to heart
  5. This Talk • How is CouchDB different (from RDBMS)? • Example HTML/Javascript application • Quick tour of the internals
  6. How Is CouchDB Different? RESTful HTTP Schemaless JSON Documents Map/Reduce Views Incremental Replication
  7. How Is CouchDB Different? (from SQL RDBMS) RESTful HTTP Binary Protocol Schemaless JSON Documents Typed Columns & Primary Keys Map/Reduce Views Ad-hoc Queries Incremental Replication Replication Logs
  8. RESTful HTTP Built for the web Javascript Test Suite Standard HTTP Clients, Proxies, Load Balancers & Caches
  9. RESTful HTTP Built for the web Enterprisey Javascript Test Suite Battle Hardened Standard HTTP Clients, Proxies, Load Balancers & Caches Protocol Specific Tools
  10. Schemaless JSON Documents Flat Namespace Arbitrary JSON Structures Identified By URIs Optimistic Locking (ACID/MVCC)
  11. Schemaless JSON Documents Flat Namespace Tables Arbitrary JSON Structures Typed Columns and Key Constraints Identified By URIs Primary Keys Optimistic Locking (ACID/MVCC) Row or Column Level Locking
  12. Map/Reduce Views Functional Javascript Incremental Updates Predefined High-Performance Reads
  13. Map/Reduce Views Functional Javascript SQL Statements Incremental Updates Independent Predefined Ad-hoc and Complex High-Performance Reads Indexes Computed on Writes
  14. Incremental Replication User Triggered Offline Clients Resilient & Restartable HTTP
  15. Incremental Replication User Triggered Continuous Offline Clients Master/Slave Resilient & Restartable Critical Path HTTP Log Based
  16. CouchDB A new way to write web applications. HTML / Javascript _design Documents p2p Replication
  17. Live Code! http://169.254.251.59:5984/_utils/
  18. CouchDB Internals • couch_httpd.erl • Request Dispatch • Create Database • Get Document • Other Modules
  19. Request Dispatch
  20. Create Database
  21. Get Document
  22. Other Modules • couch_btree.erl • The heart of the storage module (stores Erlang terms sorted by key using user specified sort funtions) • couch_db_updater.erl • Translates document requests into Btree actions. • couch_query_servers.erl • Communicates with the external (Javascript etc) view servers.
  23. Join Us • #couchdb on irc.freenode.net • http://couchdb.org • mailing lists • links to wiki and subversion checkout
  24. Thank You! Any Questions?

×