Mihai Plesa - CouchDB
-
Upload
mihai-plesa -
Category
Technology
-
view
1.202 -
download
6
description
Transcript of Mihai Plesa - CouchDB
CouchDB
[email protected] ~$ whoami
ls -l /couchdb/
● intro● demo
view /couchdb/lol
head /couchdb/about
Apache CouchDB is a document-oriented database that can be queried and indexed using
JavaScript in a MapReduce fashion.
CouchDB also offers incremental replication with bi-directional conflict detection and resolution.
cat /couchdb/about
CouchDB provides a RESTful JSON API than can be accessed from any environment that allows
HTTP requests.
CouchDB’s built in Web admin console speaks directly to the database using HTTP requests
issued from your browser.
tail /couchdb/about
CouchDB is written in Erlang, a robust functional programming language ideal for building
concurrent distributed systems.
Erlang allows for a flexible design that is easily scalable and readily extensible.
cat /couchdb/history
started in 2005 by Damien Katz
became an Apache project in 2008
currently at version 1.1.1
head /couchdb/how
CouchDB is a document oriented database
data is stored in “documents” and not in “relations” like in an RDBMS
non-locking MVCC and ACID compliant data store
view /couchdb/how
view /couchdb/how
cat /couchdb/how
no SQL
querying is done using “views”
views are defined using Map/Reduce functions
data is indexed using these views as it is stored in the DB
cat /couchdb/how
Map functions emit (key, value) interpretation of the data
Reduce functions aggregate data emitted by map functions
Map/Reduce functions are written in JavaScript or CoffeeScript
head /couchdb/use
good for:
storing documents – or any data which is document-like
hosting entire applications
cat /couchdb/why
very easy to program with – no SQL, no schema, no ORM
schema-less means very easy to deploy changes
easy to administer, backup, replicate, can work offline
tail /couchdb/use
not suitable for:
storing data which is relational in nature
be careful with data that needs to have unique values
view /couchdb/lol
vi /couchdb/doc
{
“_id”: ”BCCD12CBB”,
“_rev”: ”AB764C”,
“type”: ”person”,
“name”: ”Darth Vader”,
“age”: 63,
“headware”:
[“Helmet”, “Sombrero”],
“dark_side”: true
}
cat /couchdb/rest/how
create: HTTP POST /db/BCCD12CBB
read: HTTP GET /db/BCCD12CBB
update: HTTP PUT /db/BCCD12CBB
delete: HTTP DELETE /db/BCCD12CBB
head /couchdb/rest/usage
$ curl -X GET http://server/database/document
{“_id”:”ABC”,“_rev”:”1D4”,”data”:...}
cat /couchdb/tests
silly read-only benchmark with memory saturation
2,500 req/s sustained on a 2Ghz dual core Athlon
using 9.8 mb RAM
exec /couchdb/demo
let's get dirty!
view /couchdb/lol
sudo halt
Q?