Apache CouchDB | |
---|---|
Típusú | dokumentum-orientált DBMS |
Szerző | Damien Katz_ _ |
Fejlesztő | Apache Software Foundation |
Beírva | Erlang [1] [2] , JavaScript [2] , C++ [2] és C [2] |
Operációs rendszer | Linux , Microsoft Windows és macOS |
Első kiadás | 2005 |
legújabb verzió |
|
Állapot | aktív |
Engedély | Apache License 2.0 [4] |
Weboldal | couchdb.apache.org _ |
Médiafájlok a Wikimedia Commons oldalon |
A CouchDB egy nyílt forráskódú dokumentum-orientált adatbázis-kezelő rendszer , amely nem igényli az adatséma leírását, szabadon terjeszthető , Erlang nyelven írva . Először 2005-ben jelent meg, 2008 óta - az Apache Alapítvány projektje .
A NoSQL megközelítés részeként valósítva meg . A JSON az adatok tárolására , a JavaScript pedig a MapReduce lekérdezések megvalósítására szolgál . Erlang nyelven bármilyen logikát írhatunk . A DBMS egyik jellemzője a több főkiszolgálós replikáció támogatása.
A CouchDB webalkalmazás-szervernek tekinthető; ennek az ötletnek a megvalósításához egy hatékony webszervert építenek be a CouchDB -be , és a programkódot az adatokhoz hasonlóan ugyanabban az adatbázisban tárolják. Az alkalmazásokkal végzett munka automatizálásához a CouchApp segédprogramot használják.
A NoSQL megközelítést követve a CouchDB nem tárol adatokat és kapcsolatokat táblákban. Ehelyett minden adatbázis független dokumentumok gyűjteménye. Minden dokumentum saját adatokat és független sémát tartalmaz. Az alkalmazás több adatbázishoz is hozzáférhet, például a felhasználó mobiltelefonján és a szerveren tárolt adatbázisokhoz. A dokumentum metaadatai verzióinformációkat tartalmaznak, lehetővé téve az adatok egyesítését, valamint az adatbázisok szétválasztásakor esetlegesen felmerülő inkonzisztenciák feloldását.
Az MVCC mechanizmus az egyidejű hozzáférés vezérlésére szolgál , így nincs szükség az adatbázisfájl zárolására írás közben. Az ütközések megoldása az alkalmazáslogika feladata, a konfliktusok megoldása általában az adatok egy dokumentumba való összevonását, majd a régi dokumentum törlését jelenti.
Más dokumentum-orientált DBMS-ekhez ( Mnesia , Lotus Notes , MongoDB ) hasonlóan és a relációs DBMS -ekkel ellentétben a CouchDB-t úgy tervezték, hogy félig strukturált információkkal működjön, és a következő jellemzőkkel rendelkezik:
A CouchDB projektet az IBM korábbi Lotus Notes -alkalmazottja, Damien Katz hozta létre 2005 áprilisában, a szerző a projektet "nagyméretű objektumadatbázis tárolási rendszereként" határozta meg. Az adatbázis ötlete egy webes adatbázis volt, amelyet a nulláról kellett írni egy webes alkalmazásszerverre. Közel két évig önfinanszírozta a projektet, és nyílt forráskódú projektként adta ki a GNU GPL alatt .
A CouchDB projektet 2008 februárjában fogadták be az Apache inkubátorba . Néhány hónappal később a projekt felső szintű projekt státuszba került, ami stabil megjelenést eredményezett 2010 júliusában. Annak ellenére, hogy a CouchDB-t eredetileg Linux operációs rendszeren szánták , ennek a rendszernek a változatait is kifejlesztették Microsoft Windows [7] és Mac OS operációs rendszerekhez . Sőt, az Ubuntu Linux disztribúció 9.10 óta (Karmic Koala) CouchDB rendszerrel érkezik.
2012 elején Katz otthagyta a projektet, hogy a Couchbase Serverre összpontosítson .
Katz távozása után az Apache CouchDB projekten az 1.2-es verzió 2012 áprilisában, majd az 1.3-as verzió 2013. áprilisi kiadásával folytatódott a munka. 2013 júniusában a CouchDB közösség összekapcsolta a kódbázist a BigCouch -al és a CouchDB Cloudant fürtözött verziójával az Apache-ban. projekt.
A CouchDB-t számos szoftvertermékben és webhelyen használják [8] , többek között:
További példák találhatók az Apache projekt wikijén.
A CouchDB JSON -dokumentumok gyűjteményét kezeli . A dokumentumok nézetek szerint vannak rendezve . A nézeteket aggregált függvények és párhuzamosan számított szűrők határozzák meg, mint például a MapReduce .
A nézetek az adatbázisban tárolódnak, indexeik pedig folyamatosan frissülnek. A CouchDB olyan prezentációs rendszert támogat, amely külső socket szervereket és JSON alapú protokollt használ. Ennek eredményeként számos nyelven fejlesztettek ki nézetszervereket ( a JavaScript az alapértelmezett, de létezik PHP , Ruby , Python és Erlang is ).
Az alkalmazások HTTP-n keresztül kommunikálnak a CouchDB-vel. Az alábbiakban néhány példa látható a cURL parancssori segédprogram használatára. Ezek a példák feltételezik, hogy a CouchDB a localhost (127.0.0.1) 5984-es porton fut.
Akció | Kérés | Válasz |
---|---|---|
Hozzáférés a szerver információihoz | curl http://127.0.0.1:5984/ | { "couchdb" : "Üdvözöljük" , "verzió" : "1.1.0" } |
Wiki nevű adatbázis létrehozása | curl -X PUT http://127.0.0.1:5984/wiki | { "ok" : igaz } |
Megpróbál létrehozni egy második wiki nevű adatbázist | curl -X PUT http://127.0.0.1:5984/wiki | { "error" : "file_exists" , "reason" : "Az adatbázist nem sikerült létrehozni, a fájl már létezik." } |
Információszerzés a wiki adatbázisról | 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 , "tart_"_ : " instance "_s 1272453873691070" , "lemez_formátum_verzió" : 5 } |
A wiki adatbázis törlése | curl -X TÖRLÉS http://127.0.0.1:5984/wiki | { "ok" : igaz } |
Hozzon létre egy dokumentumot úgy, hogy megkéri a CouchDB-t, hogy adja meg a dokumentumazonosítót | curl -X POST -H "Content-Type: application/json" --data \ '{ "text" : "Wikipédia a CouchDB-n", "értékelés": 5 }' \ http://127.0.0.1:5984/wiki | { "ok" : igaz , "id" : "123BAC" , "rev" : "946B7D1C" } |
A CouchDB számos további nyílt forráskódú összetevőt tartalmaz az alapértelmezett csomag részeként, nevezetesen a SpiderMonkey JavaScript motort, a jQuery böngészők közötti JavaScript-könyvtárat , az ICU Unicode támogatási könyvtárát , az OpenSSL -t és az Erlang programozási nyelv disztribúcióját .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Legfelső szintű projektek |
| ||||||
Alprojektek |
| ||||||
Apache |
| ||||||
Egyéb projektek | |||||||
Fejlesztő projektek ( inkubátor ) |
| ||||||
Leszerelt projektek ( tetőtér ) | |||||||
|
Adatbázis-kezelő rendszerek (DBMS) | |
---|---|
Kliens-szerver | |
Motorok | |
Fájlszerver |
Adatbázis | |
---|---|
Fogalmak |
|
Objektumok |
|
Kulcsok | |
SQL |
|
Alkatrészek |