CouchDB

Apache CouchDB
Tip de SGBD orientat pe documente
Autor Damien Katz _
Dezvoltator Apache Software Foundation
Scris in Erlang [1] [2] , JavaScript [2] , C++ [2] și C [2]
Sistem de operare Linux , Microsoft Windows și macOS
Prima editie 2005
ultima versiune
Stat activ
Licență Licență Apache 2.0 [4]
Site-ul web couchdb.apache.org
 Fișiere media la Wikimedia Commons

CouchDB  este un sistem de gestionare a bazelor de date orientat spre documente open source care nu necesită o descriere a schemei de date , este distribuit gratuit , scris în limbajul Erlang . Publicat pentru prima dată în 2005, din 2008 - un proiect al Fundației Apache .

Abordare

Implementat ca parte a abordării NoSQL . JSON este folosit pentru a stoca date , iar JavaScript este folosit pentru a implementa interogări MapReduce . Este posibil să scrieți orice logică în Erlang . Una dintre caracteristicile DBMS este suportul pentru replicarea multi-master .

CouchDB poate fi gândit ca un server de aplicații web; pentru a implementa această idee, un server web puternic este construit în CouchDB , iar codul programului, ca și datele, este stocat în aceeași bază de date. Pentru a automatiza lucrul cu aplicațiile, este utilizat utilitarul CouchApp.

Urmând abordarea NoSQL, CouchDB nu stochează date și relații în tabele. În schimb, fiecare bază de date este o colecție de documente independente. Fiecare document conține propriile sale date și schema independentă. Aplicația poate accesa mai multe baze de date, cum ar fi cele stocate pe telefonul mobil al utilizatorului și pe server. Metadatele documentelor conțin informații despre versiune, permițând unirea datelor și soluționarea oricăror inconsecvențe care ar fi putut apărea în momentul în care bazele de date au fost degrupate.

Mecanismul MVCC este utilizat pentru a controla accesul concurent , ceea ce evită necesitatea de a bloca fișierul bazei de date în timpul scrierilor. Rezolvarea conflictelor este responsabilitatea logicii aplicației, soluționarea conflictelor implică de obicei fuzionarea datelor într-un singur document și apoi ștergerea documentului vechi.

Arhitectura sistemului

Ca și alte SGBD orientate pe documente ( Mnesia , Lotus Notes , MongoDB ) și spre deosebire de SGBD relațional , CouchDB este proiectat să funcționeze cu informații semi-structurate și are următoarele caracteristici:

Istorie

Proiectul CouchDB a fost creat de fostul angajat Lotus Notes la IBM Damien Katz în aprilie 2005, autorul a definit proiectul ca „un sistem de stocare pentru o bază de date de obiecte la scară largă”. Ideea lui pentru baza de date a fost o bază de date pentru web, care trebuia scrisă de la zero pe un server de aplicații web. El a autofinanțat proiectul timp de aproape doi ani și l-a lansat ca proiect open source sub GNU GPL .

Proiectul CouchDB a fost acceptat în Incubator Apache în februarie 2008 . Câteva luni mai târziu, proiectul a trecut la statutul de proiect de nivel superior, ceea ce a dus la o lansare stabilă în iulie 2010. În ciuda faptului că CouchDB a fost inițial destinat să ruleze pe sistemul de operare Linux , variante ale acestui sistem au fost dezvoltate și pentru sistemele de operare Microsoft Windows [7] și Mac OS . Mai mult, distribuția Ubuntu Linux din 9.10 (Karmic Koala) vine cu sistemul CouchDB.

La începutul lui 2012, Katz a părăsit proiectul pentru a se concentra pe lucrul la Couchbase Server .

După ce Katz a plecat, munca la proiectul Apache CouchDB a continuat cu lansarea versiunii 1.2 în aprilie 2012, iar apoi a 1.3 în aprilie 2013. În iunie 2013, comunitatea CouchDB a legat baza de cod la BigCouch și versiunea în cluster a CouchDB Cloudant în Apache. proiect.

Folosind CouchDB

CouchDB este utilizat în multe produse software și site-uri web [8] , inclusiv:

Mai multe exemple sunt disponibile pe wiki-ul proiectului Apache.

Gestionarea datelor

CouchDB gestionează o colecție de documente JSON . Documentele sunt organizate pe vederi .  Vizualizările sunt definite de funcții agregate și filtre calculate în paralel, cum ar fi MapReduce .

Vizualizările sunt stocate în baza de date, iar indexurile acestora sunt actualizate continuu. CouchDB acceptă un sistem de prezentare care utilizează servere socket externe și un protocol bazat pe JSON. Drept urmare, serverele de vizualizare au fost dezvoltate în multe limbi ( JavaScript  este implicit, dar există și PHP , Ruby , Python și Erlang ).

Acces HTTP

Aplicațiile comunică cu CouchDB prin HTTP. Mai jos sunt câteva exemple de utilizare a utilitarului de linie de comandă cURL. Aceste exemple presupun că CouchDB rulează pe localhost (127.0.0.1) pe portul 5984.

Acțiune Cerere Răspuns
Acces la informațiile serverului curl http://127.0.0.1:5984/ { "couchdb" : "Bun venit" , "versiune" : "1.1.0" }
Crearea unei baze de date numită wiki curl -X PUT http://127.0.0.1:5984/wiki { „ok” : adevărat }
Încercarea de a crea o a doua bază de date numită wiki curl -X PUT http://127.0.0.1:5984/wiki { "error" : "file_exists" , "reason" : "Baza de date nu a putut fi creată, fișierul există deja." }
Obținerea de informații despre baza de date wiki curl http://127.0.0.1:5984/wiki { "db_name" : "wiki" , "doc_count" : 0 , "doc_del_count" : 0 , "update_seq" : 0 , "purge_seq" : 0 , "compact_running" : false , "disk_size" : 79 , "instance_start_time" : " 1272453873691070" , "disk_format_version" : 5 }
Ștergerea bazei de date wiki curl -X DELETE http://127.0.0.1:5984/wiki { „ok” : adevărat }
Creați un document solicitând CouchDB să furnizeze ID-ul documentului curl -X POST -H „Content-Type: application/json” --data \ '{ "text" : "Wikipedia on CouchDB", "evaluare": 5 }' \ http://127.0.0.1:5984/wiki { „ok” : adevărat , „id” : „123BAC” , „rev” : „946B7D1C” }

Componente open source

CouchDB include multe componente open source suplimentare ca parte a pachetului său implicit, în special motorul JavaScript SpiderMonkey , biblioteca JavaScript jQuery între browsere, biblioteca de suport Unicode ICU , OpenSSL , distribuția limbajului de programare Erlang .

Note

  1. Proiectul couchdb Open Source pe Open Hub: Pagina de limbi - 2006.
  2. 1 2 3 4 https://projects.apache.org/json/projects/couchdb.json
  3. https://github.com/apache/couchdb/releases/tag/3.2.2
  4. https://couchdb.apache.org/
  5. Vezi documentația serverelor (link în jos) . Consultat la 12 februarie 2010. Arhivat din original la 20 octombrie 2008. 
  6. [https://web.archive.org/web/20100218055610/http://plugins.jquery.com/project/jqcouch Arhivat 18 februarie 2010 la Wayback Machine Plugin for jQuery ]
  7. CouchdDB: Program de instalare binar Windows (link descendent) . Data accesului: 13 februarie 2010. Arhivat din original la 26 decembrie 2011. 
  8. Proiecte care utilizează CouchDB (link nu este disponibil) . Data accesului: 12 februarie 2010. Arhivat din original pe 20 iulie 2017. 
  9. Integrarea CouchDB cu Ubuntu One: specificație completă . Preluat la 13 februarie 2010. Arhivat din original la 2 martie 2021.
  10. Arhitectura software Raindrop . Consultat la 13 februarie 2010. Arhivat din original pe 6 iulie 2010.

Literatură

Link -uri