Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
CouchDB
1. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB
Kerstin Puschke
The Next Web - Barcamp Salzburg 2011
Kerstin Puschke NoSQL
2. Introduction
Documents
Distributed System
Queries and Views
CouchApps
License
License
Creative Commons
Attribution 3.0 Germany Lizenz, see
http://creativecommons.org/licenses/by/3.0/de/
Kerstin Puschke NoSQL
3. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Outline
1 Introduction
Kerstin Puschke NoSQL
4. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Outline
1 Introduction
2 Documents
Document-Oriented Data Model
Updates and Concurrency
Design Documents
Kerstin Puschke NoSQL
5. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Outline
1 Introduction
2 Documents
Document-Oriented Data Model
Updates and Concurrency
Design Documents
3 Distributed System
Kerstin Puschke NoSQL
6. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Outline
1 Introduction
2 Documents
Document-Oriented Data Model
Updates and Concurrency
Design Documents
3 Distributed System
4 Queries and Views
Views
Creating Views with Map Reduce
Example
Kerstin Puschke NoSQL
7. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Outline
1 Introduction
2 Documents
Document-Oriented Data Model
Updates and Concurrency
Design Documents
3 Distributed System
4 Queries and Views
Views
Creating Views with Map Reduce
Example
5 CouchApps
Kerstin Puschke NoSQL
8. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
Kerstin Puschke NoSQL
9. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
NoSQL database, non-relational data store
Kerstin Puschke NoSQL
10. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
NoSQL database, non-relational data store
schemaless
Kerstin Puschke NoSQL
11. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
NoSQL database, non-relational data store
schemaless
distributed computing - robust replication
Kerstin Puschke NoSQL
12. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
NoSQL database, non-relational data store
schemaless
distributed computing - robust replication
scaling up and down
Kerstin Puschke NoSQL
13. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
NoSQL database, non-relational data store
schemaless
distributed computing - robust replication
scaling up and down
open web standards
Kerstin Puschke NoSQL
14. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchDB?
Cluster Of Unreliable Commodity Hardware DataBase
NoSQL database, non-relational data store
schemaless
distributed computing - robust replication
scaling up and down
open web standards
decentralized (web)applications - available offline
Kerstin Puschke NoSQL
15. Introduction
Documents
Distributed System
Queries and Views
CouchApps
In the Wild
BBC
Kerstin Puschke NoSQL
16. Introduction
Documents
Distributed System
Queries and Views
CouchApps
In the Wild
BBC
Ubuntu One
Kerstin Puschke NoSQL
17. Introduction
Documents
Distributed System
Queries and Views
CouchApps
In the Wild
BBC
Ubuntu One
lots of software, websites, facebook apps, . . .
Kerstin Puschke NoSQL
18. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Getting Started
RESTful HTTP/JSON API
Kerstin Puschke NoSQL
19. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Getting Started
RESTful HTTP/JSON API
Webserver included
Kerstin Puschke NoSQL
20. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Getting Started
RESTful HTTP/JSON API
Webserver included
http://localhost:5984
http://localhost:5984/_all_dbs
Kerstin Puschke NoSQL
21. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Getting Started
RESTful HTTP/JSON API
Webserver included
http://localhost:5984
http://localhost:5984/_all_dbs
create a database
PUT http://localhost:5984/foo
Kerstin Puschke NoSQL
22. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Getting Started
RESTful HTTP/JSON API
Webserver included
http://localhost:5984
http://localhost:5984/_all_dbs
create a database
PUT http://localhost:5984/foo
delete a a database
DELETE http://localhost:5984/foo
Kerstin Puschke NoSQL
23. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Getting Started
RESTful HTTP/JSON API
Webserver included
http://localhost:5984
http://localhost:5984/_all_dbs
create a database
PUT http://localhost:5984/foo
delete a a database
DELETE http://localhost:5984/foo
Webinterface Futon http://localhost:5984/_utils
Kerstin Puschke NoSQL
24. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
Kerstin Puschke NoSQL
25. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
Kerstin Puschke NoSQL
26. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
schemaless, no referential integrity
flexible, but dangerous
Kerstin Puschke NoSQL
27. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
schemaless, no referential integrity
flexible, but dangerous
JSON-object
values can be scalar, array, objects, nested data
structures,. . .
Kerstin Puschke NoSQL
28. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
schemaless, no referential integrity
flexible, but dangerous
JSON-object
values can be scalar, array, objects, nested data
structures,. . .
mandatory fields:
Kerstin Puschke NoSQL
29. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
schemaless, no referential integrity
flexible, but dangerous
JSON-object
values can be scalar, array, objects, nested data
structures,. . .
mandatory fields:
unique document identifier _id (UUID)
Kerstin Puschke NoSQL
30. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
schemaless, no referential integrity
flexible, but dangerous
JSON-object
values can be scalar, array, objects, nested data
structures,. . .
mandatory fields:
unique document identifier _id (UUID)
revision identifier _rev
Kerstin Puschke NoSQL
31. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Document-Oriented Data Model
abstraction layer above key-value pairs
document: self-contained data, reasonable unit of
information (invoice, business card,. . . )
schemaless, no referential integrity
flexible, but dangerous
JSON-object
values can be scalar, array, objects, nested data
structures,. . .
mandatory fields:
unique document identifier _id (UUID)
revision identifier _rev
files can be attached to documents
Kerstin Puschke NoSQL
32. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
CouchDB Document
JSON
Kerstin Puschke NoSQL
33. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Updates
client sends full document
Kerstin Puschke NoSQL
34. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Updates
client sends full document
append-only - new version appended to database
no diffs, no partial updates
Kerstin Puschke NoSQL
35. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Updates
client sends full document
append-only - new version appended to database
no diffs, no partial updates
robust and fast
Kerstin Puschke NoSQL
36. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Multi Version Concurrency Control
optimistic locking
Kerstin Puschke NoSQL
37. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Multi Version Concurrency Control
optimistic locking
client sends new version of document along with old _rev
Kerstin Puschke NoSQL
38. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Multi Version Concurrency Control
optimistic locking
client sends new version of document along with old _rev
server checks if _rev matches the one stored in the
database
Kerstin Puschke NoSQL
39. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Multi Version Concurrency Control
optimistic locking
client sends new version of document along with old _rev
server checks if _rev matches the one stored in the
database
yes: new version saved along with new _rev
Kerstin Puschke NoSQL
40. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Multi Version Concurrency Control
optimistic locking
client sends new version of document along with old _rev
server checks if _rev matches the one stored in the
database
yes: new version saved along with new _rev
no: conflict - update refused with 409
Kerstin Puschke NoSQL
41. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Multi Version Concurrency Control
optimistic locking
client sends new version of document along with old _rev
server checks if _rev matches the one stored in the
database
yes: new version saved along with new _rev
no: conflict - update refused with 409
no version control
some versions unavailable (at least on some nodes)
Kerstin Puschke NoSQL
42. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
Kerstin Puschke NoSQL
43. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
Kerstin Puschke NoSQL
44. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
no data but code
Kerstin Puschke NoSQL
45. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
no data but code
validate_doc_update: validation of updates
Kerstin Puschke NoSQL
46. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
no data but code
validate_doc_update: validation of updates
update: server-side logic for document creation or update
Kerstin Puschke NoSQL
47. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
no data but code
validate_doc_update: validation of updates
update: server-side logic for document creation or update
show, list: rendering output
Kerstin Puschke NoSQL
48. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
no data but code
validate_doc_update: validation of updates
update: server-side logic for document creation or update
show, list: rendering output
map, reduce: creation of views/indices
Kerstin Puschke NoSQL
49. Introduction
Documents Document-Oriented Data Model
Distributed System Updates and Concurrency
Queries and Views Design Documents
CouchApps
Design Documents
_id starts with _design
create, update, replicate,. . . like any other document
no data but code
validate_doc_update: validation of updates
update: server-side logic for document creation or update
show, list: rendering output
map, reduce: creation of views/indices
default language: JavaScript
plugins for PHP, Ruby, Python, Perl, Common Lisp,
Erlang,. . .
Kerstin Puschke NoSQL
50. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
Kerstin Puschke NoSQL
51. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
incremental
Kerstin Puschke NoSQL
52. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
incremental
latest revision only - no transfer of previous versions
Kerstin Puschke NoSQL
53. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
incremental
latest revision only - no transfer of previous versions
N-Master, Master-Slave,. . .
Kerstin Puschke NoSQL
54. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
incremental
latest revision only - no transfer of previous versions
N-Master, Master-Slave,. . .
very robust
Kerstin Puschke NoSQL
55. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
incremental
latest revision only - no transfer of previous versions
N-Master, Master-Slave,. . .
very robust
filtered
Kerstin Puschke NoSQL
56. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Replication
shared nothing cluster
incremental
latest revision only - no transfer of previous versions
N-Master, Master-Slave,. . .
very robust
filtered
’non-destructive’ conflict handling
Kerstin Puschke NoSQL
57. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Eventual Consistency
Consistency, Availability, Partition Tolerance
Consistency, Availability, Partition Tolerance - you can’t
have it all. . .
Kerstin Puschke NoSQL
58. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Eventual Consistency
Consistency, Availability, Partition Tolerance
Consistency, Availability, Partition Tolerance - you can’t
have it all. . .
CouchDB provides eventual consistency
Kerstin Puschke NoSQL
59. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Eventual Consistency
Consistency, Availability, Partition Tolerance
Consistency, Availability, Partition Tolerance - you can’t
have it all. . .
CouchDB provides eventual consistency
inconsistency window
Kerstin Puschke NoSQL
60. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Eventual Consistency
Consistency, Availability, Partition Tolerance
Consistency, Availability, Partition Tolerance - you can’t
have it all. . .
CouchDB provides eventual consistency
inconsistency window
BASE - basically available, soft-state, eventually consistent
Kerstin Puschke NoSQL
61. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Eventual Consistency
Consistency, Availability, Partition Tolerance
Consistency, Availability, Partition Tolerance - you can’t
have it all. . .
CouchDB provides eventual consistency
inconsistency window
BASE - basically available, soft-state, eventually consistent
ACID on a single node, BASE in a distributed system
Kerstin Puschke NoSQL
62. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Queries
fetch document by _id
Kerstin Puschke NoSQL
63. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Queries
fetch document by _id
no dynamic queries, no ad hoc reporting
Kerstin Puschke NoSQL
64. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Queries
fetch document by _id
no dynamic queries, no ad hoc reporting
need to create views (indices) to query
Kerstin Puschke NoSQL
65. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
Kerstin Puschke NoSQL
66. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Kerstin Puschke NoSQL
67. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Example: creation date as key, title of post as value
Kerstin Puschke NoSQL
68. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Example: creation date as key, title of post as value
composite keys and values possible
Kerstin Puschke NoSQL
69. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Example: creation date as key, title of post as value
composite keys and values possible
sorted by key
Kerstin Puschke NoSQL
70. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Example: creation date as key, title of post as value
composite keys and values possible
sorted by key
efficient lookup of keys or key ranges
’Posts created in May 2009’
Kerstin Puschke NoSQL
71. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Example: creation date as key, title of post as value
composite keys and values possible
sorted by key
efficient lookup of keys or key ranges
’Posts created in May 2009’
values can be aggregated
Kerstin Puschke NoSQL
72. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Views
(secondary) index
key-value-pairs
keys and values are values from documents
Example: creation date as key, title of post as value
composite keys and values possible
sorted by key
efficient lookup of keys or key ranges
’Posts created in May 2009’
values can be aggregated
created and updated when accessed
Kerstin Puschke NoSQL
73. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
View
Example
View with key date and value title, in Futon
Kerstin Puschke NoSQL
74. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
Kerstin Puschke NoSQL
75. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
Kerstin Puschke NoSQL
76. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
Kerstin Puschke NoSQL
77. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
Kerstin Puschke NoSQL
78. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
input: one document
Kerstin Puschke NoSQL
79. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
input: one document
computes key-value pairs for view
Kerstin Puschke NoSQL
80. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
input: one document
computes key-value pairs for view
sorted by key
Kerstin Puschke NoSQL
81. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
input: one document
computes key-value pairs for view
sorted by key
reduce (optional)
Kerstin Puschke NoSQL
82. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
input: one document
computes key-value pairs for view
sorted by key
reduce (optional)
input: (partial) results of map or of previous calls to reduce
Kerstin Puschke NoSQL
83. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Reduce
map and reduce functions common in functional
programming
MapReduce: framework for concurrent, distributed
processing of large data sets (Google)
map and reduce defined in design documents
map
input: one document
computes key-value pairs for view
sorted by key
reduce (optional)
input: (partial) results of map or of previous calls to reduce
returns aggregated values
Kerstin Puschke NoSQL
84. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Map Function
Example
Design doc with map
Kerstin Puschke NoSQL
85. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Reduce Function
Example
Design doc with map and reduce
Kerstin Puschke NoSQL
86. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Querying View
Example
View without reduce
Kerstin Puschke NoSQL
87. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Querying a View
Example
View with reduce
Kerstin Puschke NoSQL
88. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Querying a View
Example
View with reduce
View with reduce and group_level=2
Kerstin Puschke NoSQL
89. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Example
Blogpost with “inline” comments
Kerstin Puschke NoSQL
90. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Example
Posts and Comments in different docs
Kerstin Puschke NoSQL
91. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Example
View to query for posts and their comments
map-function with composite key
function(doc) {
if (doc.type == "post") {
emit([doc._id, 0], doc);
} else if (doc.type == "comment") {
emit([doc.post_id, 1], doc);
}
}
Kerstin Puschke NoSQL
92. Introduction
Documents Views
Distributed System Creating Views with Map Reduce
Queries and Views Example
CouchApps
Example
contd.
Kerstin Puschke NoSQL
93. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchApps
applications living in the database
Kerstin Puschke NoSQL
94. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchApps
applications living in the database
no middleware
Kerstin Puschke NoSQL
95. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchApps
applications living in the database
no middleware
data and code are documents:
update, fork, backup etc. via replication
Kerstin Puschke NoSQL
96. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchApps
applications living in the database
no middleware
data and code are documents:
update, fork, backup etc. via replication
show/list functions, direct access to attachments
(HTML,JavaScript,. . . )
Kerstin Puschke NoSQL
97. Introduction
Documents
Distributed System
Queries and Views
CouchApps
CouchApps
applications living in the database
no middleware
data and code are documents:
update, fork, backup etc. via replication
show/list functions, direct access to attachments
(HTML,JavaScript,. . . )
load data via AJAX
Kerstin Puschke NoSQL
98. Introduction
Documents
Distributed System
Queries and Views
CouchApps
Q&A
Thanks for listening!
Questions? Comments?
Kerstin Puschke NoSQL
99. Links
The CouchDB Project
http://couchdb.apache.org
Kerstin Puschke NoSQL
100. Links
The CouchDB Project
http://couchdb.apache.org
CouchDB Wiki
http://wiki.apache.org/couchdb
Kerstin Puschke NoSQL
101. Links
The CouchDB Project
http://couchdb.apache.org
CouchDB Wiki
http://wiki.apache.org/couchdb
Book: CouchDB - The Definitive Guide
http://guide.couchdb.org
Kerstin Puschke NoSQL
102. Links
The CouchDB Project
http://couchdb.apache.org
CouchDB Wiki
http://wiki.apache.org/couchdb
Book: CouchDB - The Definitive Guide
http://guide.couchdb.org
CouchApp - framework: Simple JavaScript applications
with CouchDB
http://couchapp.org
Kerstin Puschke NoSQL
103. Links
The CouchDB Project
http://couchdb.apache.org
CouchDB Wiki
http://wiki.apache.org/couchdb
Book: CouchDB - The Definitive Guide
http://guide.couchdb.org
CouchApp - framework: Simple JavaScript applications
with CouchDB
http://couchapp.org
Couchbase - free hosting, docs, and more
http://www.couchone.com
Kerstin Puschke NoSQL