CouchDB Talk JChris NYC

3,900 views
3,618 views

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,900
On SlideShare
0
From Embeds
0
Number of Embeds
474
Actions
Shares
0
Downloads
39
Comments
0
Likes
5
Embeds 0
No embeds

No notes for slide

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?

×