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 .
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.
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:
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.
CouchDB este utilizat în multe produse software și site-uri web [8] , inclusiv:
Mai multe exemple sunt disponibile pe wiki-ul proiectului Apache.
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 ).
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” } |
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 .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Proiecte de nivel superior |
| ||||||
Subproiecte |
| ||||||
Apache Web |
| ||||||
Alte proiecte | |||||||
Dezvoltare proiecte ( Incubator ) |
| ||||||
Proiecte scoase din funcțiune ( Mansarda ) | |||||||
|
Sisteme de management al bazelor de date (DBMS) | |
---|---|
Client server | |
Motoare | |
Server de fișiere |
Bază de date | |
---|---|
Concepte |
|
Obiecte |
|
Chei | |
SQL |
|
Componente |