Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Apache CouchDB
Myles Braithwaite
me@mylesb.ca | http://mylesb.ca | @mylesb
What is CouchDB?
Apache CouchDB is a database
that uses JSON for documents,
JavaScript for MapReduce
indexes, and regular HTTP for its
API.
Django may be built for the Web,
but CouchDB is built of the
Web.
— Jacob Kaplan-Moss, Django Developer
Document Based Key/Value Store
Unlike a relational database (i.e. Postgres & MySQL),
CouchDB doesn’t store it’s data and r...
Data Types
— "string": "abcdefghijklmnopqrstuvwxyz"
— "number": 123
— "float": 123.45
— "dict": {}
— "list": []
— "bool": ...
{
"_id": "30b0ed91384411e4af34c42c03094720",
"_rev": "1-3573aeb5384411e4b121c42c03094720",
"name": {
"given_name": "Myles"...
HTTP Based API for Interacting with your Data
— Create = INSERT = PUT
— Retrieve = SELECT = GET
— Update = UPDATE = POST
—...
Examples
— Written in Python using the Kenneth Reitz's requests
library.
from myles_custom_urllib_parse import urljoin
fro...
r = requests.get(COUCHDB_URL)
print r.json()
{
"couchdb": "Welcome",
"uuid": "f9d2966e384711e499cfc42c03094720",
"vendor":...
Create a Database
r = put(urljoin(COUCHDB_URL, DB_NAME))
if not r.status_code == 201:
print ERROR_RESPONSE[r.status_code]
...
Create
data = {"name": {"first_name": "Myles", "last_name": "Braithwaite"}}
r = post(urljoin(COUCHDB_URL, DB_NAME), data)
...
Create (with a non-automatic ID)
data = {"name": {"first_name": "Myles", "last_name": "Braithwaite"}}
DOC_ID = "9999-myles...
Retrieve
DOC_ID = "30b0ed91384411e4af34c42c03094720"
r = get(urljoin(COUCHDB_URL, DB_NAME, DOC_ID))
if not r.ok:
print ERR...
Update
DOC_ID = "30b0ed91384411e4af34c42c03094720"
r = get(urljoin(COUCHDB_URL, DB_NAME, DOC_ID))
data = r.json()
data['em...
Delete
DOC_ID = "myles-braithwaite"
r = delete(
urljoin(COUCHDB_URL, DB_NAME, DOC_ID) + "?rev=%s" % DOC_REV)
)
Attachment
curl -vX 
PUT $COUCHDB_URL/$DB_NAME/$DOC_ID/headshot.jpg?rev=$REV 
--data-binary @avatar.jpg -H "Content-Type: ...
Copy
r = request(
'COPY',
urljoin(COUCHDB_URL, DB_NAME, DOC_ID),
{'destination': 'new-document'}
)
Other Features
— Replication
— Document Revisions
— Futon (similar to PHPMyAdmin)
— Auth (Basic, Cookie, Database)
— JavaS...
PouchDB
JavaScript clone of CouchDB that
can run well within a web
browser.
var db = new PouchDB('contacts');
db.put({
_id: 'myles-braithwaite',
first_name: 'Myles',
last_name: 'Braithwaite'
})
db.r...
Questions
Prochain SlideShare
Chargement dans…5
×

Apache CouchDB Presentation @ Sept. 2104 GTALUG Meeting

328 vues

Publié le

This is a short talk I gave on Apache CouchDB at GTALUG's September 2014 meeting http://gtalug.org/meeting/2014-09/

Publié dans : Technologie
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Apache CouchDB Presentation @ Sept. 2104 GTALUG Meeting

  1. 1. Apache CouchDB Myles Braithwaite me@mylesb.ca | http://mylesb.ca | @mylesb
  2. 2. What is CouchDB?
  3. 3. Apache CouchDB is a database that uses JSON for documents, JavaScript for MapReduce indexes, and regular HTTP for its API.
  4. 4. Django may be built for the Web, but CouchDB is built of the Web. — Jacob Kaplan-Moss, Django Developer
  5. 5. Document Based Key/Value Store Unlike a relational database (i.e. Postgres & MySQL), CouchDB doesn’t store it’s data and relationships in tables. Instead, each database is a collection of independent JSON documents.
  6. 6. Data Types — "string": "abcdefghijklmnopqrstuvwxyz" — "number": 123 — "float": 123.45 — "dict": {} — "list": [] — "bool": true
  7. 7. { "_id": "30b0ed91384411e4af34c42c03094720", "_rev": "1-3573aeb5384411e4b121c42c03094720", "name": { "given_name": "Myles", "family_name": "Braithwaite" }, "emails": [ { "type": "personal", "email": "me@mylesb.ca" }, { "type": "work", "email": "myles@monkeyinyoursoul.com" } ] }
  8. 8. HTTP Based API for Interacting with your Data — Create = INSERT = PUT — Retrieve = SELECT = GET — Update = UPDATE = POST — Delete = DELETE = DELETE
  9. 9. Examples — Written in Python using the Kenneth Reitz's requests library. from myles_custom_urllib_parse import urljoin from requests import get, post, put, delete, request COUCHDB_URL = "http://127.0.0.1:5984/" DB_NAME = "contacts"
  10. 10. r = requests.get(COUCHDB_URL) print r.json() { "couchdb": "Welcome", "uuid": "f9d2966e384711e499cfc42c03094720", "vendor": { "name": "The Apache Software Foundation", "version": "1.4.0" }, "version": "1.4.0" }
  11. 11. Create a Database r = put(urljoin(COUCHDB_URL, DB_NAME)) if not r.status_code == 201: print ERROR_RESPONSE[r.status_code] print r.json() {"ok": true}
  12. 12. Create data = {"name": {"first_name": "Myles", "last_name": "Braithwaite"}} r = post(urljoin(COUCHDB_URL, DB_NAME), data) if not r.status_code == 201: print ERROR_RESPONSE[r.status_code] print r.json() {"ok": true, "id": "30b0ed91384411e4af34c42c03094720", "rev": "1-3573aeb5384411e4b121c42c03094720"}
  13. 13. Create (with a non-automatic ID) data = {"name": {"first_name": "Myles", "last_name": "Braithwaite"}} DOC_ID = "9999-myles-braithwaite" r = put(urljoin(COUCHDB_URL, DB_NAME, DOC_ID), data) if not r.status_code == 201: print ERROR_RESPONSE[r.status_code] print r.json() {"ok": true, "id": "30b0ed91384411e4af34c42c03094720", "rev": "1-3573aeb5384411e4b121c42c03094720"}
  14. 14. Retrieve DOC_ID = "30b0ed91384411e4af34c42c03094720" r = get(urljoin(COUCHDB_URL, DB_NAME, DOC_ID)) if not r.ok: print ERROR_RESPONSE[r.status_code] r.json()
  15. 15. Update DOC_ID = "30b0ed91384411e4af34c42c03094720" r = get(urljoin(COUCHDB_URL, DB_NAME, DOC_ID)) data = r.json() data['emails']: [ { "type": "Personal", "email": "me@mylesb.ca", "type": "Work", "email": "myles@miys.net" } ] r = post(urljoin(COUCHDB_URL, DB_NAME, DOC_ID), data) if r.ok: print ERROR_RESPONSE[r.status_code] r.json() {"ok": true, "id": "30b0ed91384411e4af34c42c03094720", "rev": "2-f57cf4d1384a11e4a3edc42c03094720"}
  16. 16. Delete DOC_ID = "myles-braithwaite" r = delete( urljoin(COUCHDB_URL, DB_NAME, DOC_ID) + "?rev=%s" % DOC_REV) )
  17. 17. Attachment curl -vX PUT $COUCHDB_URL/$DB_NAME/$DOC_ID/headshot.jpg?rev=$REV --data-binary @avatar.jpg -H "Content-Type: image/jpg"
  18. 18. Copy r = request( 'COPY', urljoin(COUCHDB_URL, DB_NAME, DOC_ID), {'destination': 'new-document'} )
  19. 19. Other Features — Replication — Document Revisions — Futon (similar to PHPMyAdmin) — Auth (Basic, Cookie, Database) — JavaScript based Map/Reduce
  20. 20. PouchDB
  21. 21. JavaScript clone of CouchDB that can run well within a web browser.
  22. 22. var db = new PouchDB('contacts'); db.put({ _id: 'myles-braithwaite', first_name: 'Myles', last_name: 'Braithwaite' }) db.replicate.to('http://127.0.0.1:5984/contacts/)
  23. 23. Questions

×