CouchDB

Apache CouchDB
Type dokumentorienteret DBMS
Forfatter Damien Katz _
Udvikler Apache Software Foundation
Skrevet i Erlang [1] [2] , JavaScript [2] , C++ [2] og C [2]
Operativ system Linux , Microsoft Windows og macOS
Første udgave 2005
nyeste version
Stat aktiv
Licens Apache-licens 2.0 [4]
Internet side couchdb.apache.org
 Mediefiler på Wikimedia Commons

CouchDB  er et open source dokumentorienteret databasestyringssystem, der ikke kræver en beskrivelse af dataskemaet , distribueres frit , skrevet på Erlang -sproget . Først udgivet i 2005, siden 2008 - et projekt fra Apache Foundation .

Tilnærmelse

Implementeret som en del af NoSQL- tilgangen . JSON bruges til at gemme data , og JavaScript bruges til at implementere MapReduce- forespørgsler . Det er muligt at skrive enhver logik i Erlang . En af funktionerne i DBMS er understøttelse af multi-master replikering .

CouchDB kan opfattes som en webapplikationsserver; For at implementere denne idé er der indbygget en kraftfuld webserver i CouchDB , og programkoden gemmes ligesom dataene i den samme database. For at automatisere arbejde med applikationer bruges CouchApp-værktøjet.

Efter NoSQL-tilgangen gemmer CouchDB ikke data og relationer i tabeller. I stedet er hver database en samling af uafhængige dokumenter. Hvert dokument indeholder sine egne data og uafhængigt skema. Applikationen kan få adgang til flere databaser, såsom dem, der er gemt på brugerens mobiltelefon og på serveren. Dokumentmetadata indeholder versionsoplysninger, der gør det muligt at flette data, og eventuelle uoverensstemmelser, der måtte være opstået på det tidspunkt, hvor databaserne blev adskilt, kan løses.

MVCC -mekanismen bruges til at kontrollere samtidig adgang , hvilket undgår behovet for at låse databasefilen under skrivning. Konfliktløsning er applikationslogikkens ansvar, konfliktløsning involverer normalt at flette dataene sammen i et dokument og derefter slette det gamle dokument.

Systemarkitektur

Ligesom andre dokumentorienterede DBMS ( Mnesia , Lotus Notes , MongoDB ) og i modsætning til relationelle DBMS , er CouchDB designet til at arbejde med semi-struktureret information og har følgende funktioner:

Historie

CouchDB-projektet blev skabt af tidligere Lotus Notes -medarbejder hos IBM Damien Katz i april 2005, forfatteren definerede projektet som "et lagringssystem til en storstilet objektdatabase." Hans idé til databasen var en database til nettet, som skulle skrives fra bunden til en webapplikationsserver. Han finansierede projektet selv i næsten to år og udgav det som et open source-projekt under GNU GPL .

CouchDB - projektet blev accepteret i Apache Incubator i februar 2008 . Et par måneder senere flyttede projektet til status som et projekt på topniveau, hvilket førte til en stabil udgivelse i juli 2010. På trods af det faktum, at CouchDB oprindeligt var beregnet til at køre på Linux -operativsystemet, er varianter af dette system også blevet udviklet til Microsoft Windows [7] og Mac OS -operativsystemer . Desuden kommer Ubuntu Linux-distribution siden 9.10 (Karmic Koala) med CouchDB-system.

I begyndelsen af ​​2012 forlod Katz projektet for at fokusere på arbejdet med Couchbase Server .

Efter Katz forlod, fortsatte arbejdet med Apache CouchDB-projektet med udgivelsen af ​​version 1.2 i april 2012 og derefter 1.3 i april 2013. I juni 2013 linkede CouchDB-fællesskabet kodebasen til BigCouch og den klyngede version af CouchDB Cloudant i Apache'en projekt.

Brug af CouchDB

CouchDB bruges i mange softwareprodukter og websteder [8] , herunder:

Flere eksempler er tilgængelige på Apache-projektets wiki.

Datahåndtering

CouchDB administrerer en samling af JSON -dokumenter . Dokumenter er organiseret efter visninger .  Visninger er defineret af aggregerede funktioner og filtre beregnet parallelt som MapReduce .

Visninger gemmes i databasen, og deres indekser opdateres løbende. CouchDB understøtter et præsentationssystem, der bruger eksterne socket-servere og en JSON-baseret protokol. Som et resultat er visningsservere blevet udviklet på mange sprog ( JavaScript  er standard, men der er også PHP , Ruby , Python og Erlang ).

HTTP-adgang

Applikationer kommunikerer med CouchDB via HTTP. Nedenfor er et par eksempler på brug af cURL-kommandolinjeværktøjet. Disse eksempler antager, at CouchDB kører på localhost (127.0.0.1) på port 5984.

Handling Anmodning Svar
Adgang til serverinformation krølle http://127.0.0.1:5984/ { "couchdb" : "Velkommen" , "version" : "1.1.0" }
Oprettelse af en database ved navn wiki curl -X PUT http://127.0.0.1:5984/wiki { "ok" : sandt }
Forsøger at oprette en anden database kaldet wiki curl -X PUT http://127.0.0.1:5984/wiki { "error" : "file_exists" , "reason" : "Databasen kunne ikke oprettes, filen eksisterer allerede." }
Få information om wiki- databasen krølle 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 }
Sletning af wiki- databasen curl -X SLET http://127.0.0.1:5984/wiki { "ok" : sandt }
Opret et dokument ved at bede CouchDB om at angive dokument-id'et curl -X POST -H "Content-Type: application/json" --data \ '{ "text" : "Wikipedia på CouchDB", "rating": 5 }' \ http://127.0.0.1:5984/wiki { "ok" : true , "id" : "123BAC" , "rev" : "946B7D1C" }

Open source-komponenter

CouchDB inkluderer mange ekstra open source-komponenter som en del af sin standardpakke, især SpiderMonkey JavaScript-motoren, jQuery cross-browser JavaScript-biblioteket , ICU Unicode-understøttelsesbiblioteket , OpenSSL , Erlang -programmeringssprogsdistributionen .

Noter

  1. Couchdb Open Source-projektet på Open Hub: Languages-side - 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. Se serverdokumentation (downlink) . Hentet 12. februar 2010. Arkiveret fra originalen 20. oktober 2008. 
  6. [https://web.archive.org/web/20100218055610/http://plugins.jquery.com/project/jqcouch Arkiveret 18. februar 2010 på Wayback Machine Plugin til jQuery ]
  7. CouchdDB: Windows binært installationsprogram (downlink) . Dato for adgang: 13. februar 2010. Arkiveret fra originalen 26. december 2011. 
  8. Projekter, der bruger CouchDB (link ikke tilgængeligt) . Dato for adgang: 12. februar 2010. Arkiveret fra originalen 20. juli 2017. 
  9. Integration af CouchDB med Ubuntu One: Fuld specifikation . Hentet 13. februar 2010. Arkiveret fra originalen 2. marts 2021.
  10. Raindrop Software Architecture . Hentet 13. februar 2010. Arkiveret fra originalen 6. juli 2010.

Litteratur

Links