Outils pour utilisateurs

Outils du site


tech:notes_couchdb

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tech:notes_couchdb [2025/03/24 15:06] – créée - modification externe 127.0.0.1tech:notes_couchdb [2026/06/07 19:12] (Version actuelle) – modification externe 127.0.0.1
Ligne 1: Ligne 1:
 +<!DOCTYPE markdown>
 +{{tag>Brouillon NoSQL JSON}}
 +
 +# Notes CouchDB
 +
 +Voir aussi :
 +* MongoDB
 +* ArangoDB
 +* RethinkDB
 +* https://fr.m.wikipedia.org/wiki/Riak
 +* https://couchapp.readthedocs.io/en/latest/intro/what-is-couchapp.html
 +
 +
 +Voir :
 +* https://guide.couchdb.org/editions/1/fr/tour.html
 +* https://jo.github.io/couchdb-best-practices/
 +* https://docs.couchdb.org/en/stable/best-practices/index.html
 +* https://link.springer.com/content/pdf/bbm%3A978-1-4302-7236-6%2F1.pdf
 +* Kivik & kivik CLI tool
 +* https://oneuptime.com/blog/post/2026-02-08-how-to-run-couchdb-in-docker-with-replication/view
 +* https://couchdb.developpez.com/tutoriels/guide-authentique/introduction/
 +* https://laethy.developpez.com/tutoriels/couchdb/guide-authentique/
 +* https://www.mongodb.com/compare/couchdb-vs-mongodb
 +* https://www.tutorialspoint.com/couchdb/couchdb_quick_guide.htm
 +* https://fr.acervolima.com/introduction-a-apache-couchdb/
 +* https://guide.couchdb.org/editions/1/es/documents.html
 +* https://www.oreilly.com/live-events/couchdb-first-steps/0636920473183/0636920473176/
 +* https://docs.couchdb.org/en/stable/best-practices/index.html
 +* https://guide.couchdb.org/draft/documents.html
 +* http://www.gschnabel.com/storage/presentations/20200513_WPEC_SG49_EXFOR_CouchDB_database_Georg_Schnabel.pdf
 +
 + 
 +
 +Code :
 +* https://couchdb-python.readthedocs.io/en/latest/mapping.html
 +~~~bash
 +docker run -d --name my-couchdb -p 5984:5984 -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password couchdb:3.2.1
 +~~~
 +
 +WebUI Fauxton Futon
 +* http://127.0.0.1:5984/_utils/
 +
 +Ping
 +~~~bash
 +curl http://admin:password@127.0.0.1:5984
 +~~~
 +
 +Pour Supervision
 +~~~bash
 +curl http://localhost:5984/_up
 +~~~
 +
 +Show databases
 +~~~bash
 +curl http://admin:password@localhost:5984/_all_dbs
 +~~~
 +
 +Create database
 +~~~bash
 +curl -X PUT http://127.0.0.1:5984/testdb
 +~~~
 +
 +Show all docs
 +~~~bash
 +curl http://admin:password@localhost:5984/testdb/_all_docs
 +curl http://admin:password@localhost:5984/testdb/_all_docs?include_docs=true
 +~~~
 +
 +Upload binary file
 +~~~bash
 +curl -X PUT http://127.0.0.1:5984/albums/6e1295ed6c29495e54cc05947f18c8af/ artwork.jpg?rev=2-2739352689 --data-binary @artwork.jpg -H "Content-Type: image/jpg"
 +~~~
 +
 +
 +
 +
 +Opérandes de comparaison
 +* https://cran.r-project.org/web/packages/sofa/vignettes/query_tutorial.html
 +
 +
 +https://guide.couchdb.org/draft/tour.html
 +
 +https://dev.to/yenyih/query-in-apache-couchdb-mango-query-lfd
 +~~~javascript
 +{
 +    "selector": {
 +        "status": { "$eq": "draft" }
 +    },
 +    "fields": ["_id", "_rev", "title", "content", "date", "author"],
 +    "sort": [],
 +    "limit": 10,
 +    "skip": 0,
 +    "execution_stats": true
 +}
 +~~~
 +
 +Bases
 +* https://www.oreilly.com/library/view/couchdb-the-definitive/9780596158156/ch03.html
 +* https://www.oreilly.com/library/view/couchdb-the-definitive/9780596158156/ch04.html
 +
 +
 +Insert - Post
 +~~~bash
 +curl -H 'Content-Type: application/json' -X POST http://admin:password@127.0.0.1:5984/test -d '{"type": "user", "username": "jean", "application": "app1"}'
 +
 +curl -H 'Content-Type: application/json' -X POST http://admin:password@127.0.0.1:5984/test -d '{"type": "host", "hostname": "srv1", "application": "app1"}'
 +~~~
 +
 +Select - Get 
 +~~~bash
 +curl -d '{"keys":["73ab9c8c5dad9442ae91e6e1920088a5"]}' -H 'Content-Type: application/json' -X POST http://admin:password@127.0.0.1:5984/test/_all_docs?include_docs=true | jq .
 +
 +curl -d '
 +{
 +   "selector": {
 +      "username": "jean"
 +   },
 +   "fields": [
 +      "application"
 +   ]
 +}
 + -H 'Content-Type: application/json' -X POST http://admin:password@127.0.0.1:5984/test/_find | jq .docs
 +
 +curl -d '
 +{
 +   "selector": {
 +      "hostname": "srv1",
 +      "application": {
 +      "$in": ["app1","app2"]
 +      }
 +   },
 +   "fields": [
 +      "application"
 +   ]
 +}
 + -H 'Content-Type: application/json' -X POST http://admin:password@127.0.0.1:5984/test/_find | jq .docs
 +
 +curl -X PUT http://admin:password@127.0.0.1:5984/db/_design/my_ddoc
 +     -d '{"views":{"my_filter":{"map":
 +         "function(doc) { if(doc.date && doc.title) { emit(doc.date, doc.title); }}"}}}'
 +~~~
 +
 +~~~javascript
 +function(doc){
 +    emit(doc.table.id, null);
 +}
 +
 +
 +{
 +  "views": {
 +    "all": {
 +      "map": "function(doc) { emit(doc.title, doc) }",
 +    }
 +  }
 +}
 +~~~
 +
 +
 +## Programmation - db drivers
 +
 +Obsolète ?
 +~~~bash
 +pip install -U celery-with-couchdb
 +pip install -U celery[couchdb]
 +~~~
 +
 +https://couchdb-python.readthedocs.io/en/latest/getting-started.html
 +https://readthedocs.org/projects/couchdb-python/downloads/pdf/latest/
 +
 +
 +https://pythonhosted.org/Flask-CouchDB/
 +~~~bash
 +pip install Flask-CouchDB
 +~~~
 +
 +~~~python
 +import couchdb
 +couch = couchdb.Server('localhost:5984/')
 +
 +db = couch['newtweets']
 +count = 0
 +for docid in db.view('_all_docs'):
 +    i = docid['id']
 +~~~
 +
 +Voir 
 +* cloudant
 +* cloudant-python-sdk
 +
 +~~~bash
 +pip install --upgrade "ibmcloudant>=0.0.42"
 +~~~
 +
 +## Outils tiers
 +
 +### CouchBackup
 +
 +Source : https://blog.cloudant.com/2020/10/09/Automated-Daily-Backups.html
 +
 +The couchbackup utility is a command-line tool that allows a Cloudant database to be turned a text file.
 +
 +Turn our "animals" database into a text file
 +~~~bash
 +couchbackup --db animals > animals.txt
 +~~~
 +
 +It comes with a matching utility which does the reverse: restores a text file back to a Cloudant database.
 +
 +Restore our animals backup to a new database
 +~~~bash
 +cat animals.txt | couchrestore --db animals2
 +~~~
 +
 +All we need to do is trigger couchbackup periodically to perform a backup. 
 +
 +
 +
  

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki