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 .
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.
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:
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.
CouchDB bruges i mange softwareprodukter og websteder [8] , herunder:
Flere eksempler er tilgængelige på Apache-projektets wiki.
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 ).
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" } |
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 .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekter på topniveau |
| ||||||
Delprojekter |
| ||||||
Apache Web |
| ||||||
Andre projekter | |||||||
Udvikling af projekter ( inkubator ) |
| ||||||
Nedlagte projekter ( loftsrum ) | |||||||
|
Databasestyringssystemer (DBMS) | |
---|---|
Klient-server | |
Motorer | |
Filserver |
Database | |
---|---|
Begreber |
|
Objekter | |
Nøgler | |
SQL | |
Komponenter |