CouchDB
Apache CouchDB est un systÚme de gestion de base de données orienté documents, écrit en langage Erlang et distribué sous licence Apache.
Développé par | Apache Software Foundation, Damien Katz, Jan Lehnardt, Noah Slater, Christopher Lenz, J. Chris Anderson |
---|---|
PremiĂšre version | |
DerniĂšre version | 3.3.2 ()[1] |
DĂ©pĂŽt | github.com/apache/couchdb |
Ăcrit en | Erlang, JavaScript, C++ et C |
SystĂšme d'exploitation | Linux, Microsoft Windows et macOS |
Environnement | Multi-plates-formes |
Type | Base de données orientée documents |
Licence | Licence Apache 2.0 |
Site web | couchdb.apache.org |
Conçu pour le Web, il fait partie de la mouvance NoSQL, et a Ă©tĂ© conçu pour pouvoir ĂȘtre rĂ©parti sur une grappe de serveurs.
Conception
Au lieu d'ĂȘtre ordonnĂ©e en lignes et en colonnes, la base de donnĂ©es CouchDB est une collection de documents JSON. De plus, CouchDB contient un serveur HTTP qui permet d'effectuer des requĂȘtes, et renvoie ses donnĂ©es sous forme JSON. On peut ainsi interroger un serveur CouchDB directement avec un navigateur Web, ou on peut exĂ©cuter des requĂȘtes avec JavaScript. Les principales opĂ©rations effectuĂ©es sont MAP et REDUCE , voir article MapReduce. Ces opĂ©rations sont utiles lorsque la base de donnĂ©es est rĂ©partie, elles sont soumises Ă des contraintes de commutativitĂ©, d'associativitĂ© et d'idempotence.
Types de données
Les données peuvent prendre tous les types atomiques : chaßnes, entiers, nombre à virgule flottante et des types booléens. Par exemple:
âtitleâ:âLe meilleur livreâ % title type string
âeditionâ: 2015 % edition type entier
Les documents
Les documents sont des objets JSON composĂ©s de paires clĂ©-valeur, oĂč les valeurs peuvent ĂȘtre de plusieurs types
{
"_id":"discussion_tables",
"_rev":"D1C946B7",
"Sunrise":true,
"Sunset":false,
"FullHours":[1,2,3,4,5,6,7,8,9,10],
"Activities": [
{"Name":"Football", "Duration":2, "DurationUnit":"Hours"},
{"Name":"Breakfast", "Duration":40, "DurationUnit":"Minutes", "Attendees":["Jean",
"Bob", "Maurane", "Marie", "Antoine"]}
]
}
Chaque document possĂšde un identifiant (_id) et un numĂ©ro de rĂ©vision (_rev). Chaque mise Ă jour crĂ©e une nouvelle version, avec le mĂȘme _id mais un numĂ©ro de rĂ©vision diffĂ©rent.
Mise à jour et cohérence des données
Supposons que l'on ait un certain document qui ait un certain identifiant (_id) et un numéro de révision (2_id1). Supposons qu'il y ait deux utilisateurs (ut_1 et ut_2) qui souhaitent écrire sur ce document. Le premier arrivant transformera la version en (3_id1). Lorsque le second arrive, il ne peut pas écrire car il souhaite écrire sur (2_id1) qui n'existe plus.
Mise en place de CouchDB
curl http://localhost:5984/
Pour savoir quelles sont les bases de données déjà présentes :
curl -X GET http://127.0.0.1:5984/_all_dbs
Obtenir une base de données particuliÚre, par exemple ici films :
curl http://localhost:5984/films/
Chaque document dans CouchDB possÚde un identificateur. Cet ID est unique par la base de données. Pour obtenir un UUID
curl -X GET http://localhost:5984/_uuids
Ajouter, modifier et supprimer des documents
Pour apporter des modifications, vous devez utiliser dâautres mĂ©thodes HTTP : POST, GET, PUT et DELETE.
Par exemple pour ajouter :
curl âX PUT HTTP://localhost:5984/films/ a0b611169309cf4acfd6c19afc001eb4 \
-d â{âcleâ:âvaleurâ}â
Pour supprimer un document, il faut donner sa révision, lire le document avant de pouvoir le supprimer. CouchDB ne supprime pas en tant que tel mais crée une nouvelle version sans le document supprimé.
curl -i -X DELETE \
"http://localhost:5984/films/74c7a8d2a8548c8b97da748f43000f1b" \
-H "If-Match: 2-17e4ce41cd33d6a38f04a8452d5a860b"
Liens externes
- (en) Site officiel
- (en) Documentation officielle
- (mul) CouchDB: The Definitive Guide
- « Release 3.3.2 », (consulté le )