Apache CouchDB - Apache CouchDB
CouchDB's Futon Administration Interface, databáze uživatelů | |
Původní autoři | Damien Katz, Jan Lehnardt, Naomi Slater, Christopher Lenz, J. Chris Anderson, Paul Davis, Adam Kocoloski, Jason Davies, Benoît Chesneau, Filipe Manana, Robert Newson |
---|---|
Vývojáři | Softwarová nadace Apache |
První vydání | 2005 |
Stabilní uvolnění | 3.0 / 26. února 2020 |
Úložiště | Repozitář CouchDB |
Napsáno | Erlang, JavaScript, C, C ++ |
Operační systém | Cross-platform |
Typ | Dokumentově orientovaná databáze |
Licence | Licence Apache 2.0 |
webová stránka | couchdb |
Apache CouchDB je open-source orientovaný na dokumenty NoSQL databáze implementovaná v Erlang.
CouchDB používá k ukládání, přenosu a zpracování svých dat více formátů a protokolů, které používá JSON ukládat data, JavaScript jako jeho dotazovací jazyk pomocí MapReduce, a HTTP pro API.[1]
CouchDB byl poprvé vydán v roce 2005 a později se stal Softwarová nadace Apache projekt v roce 2008.
Na rozdíl od a relační databáze „CouchDB databáze neukládá data a vztahy do tabulek. Místo toho je každá databáze sbírkou nezávislých dokumentů. Každý dokument udržuje svá vlastní data a samostatné schéma. Aplikace může přistupovat k více databázím, jako je například jedna uložená v mobilním telefonu uživatele a druhá na serveru. Metadata dokumentu obsahují informace o revizi, což umožňuje sloučit všechny rozdíly, ke kterým mohlo dojít při odpojení databází.
CouchDB implementuje formu multiverzní řízení souběžnosti (MVCC), takže během zápisu nezamkne databázový soubor. Konflikty jsou ponechány na vyřešení aplikace. Řešení konfliktu obvykle zahrnuje nejprve sloučení dat do jednoho z dokumentů a poté odstranění zastaralého.[2]
Mezi další funkce patří úroveň dokumentu KYSELINA sémantika s případná konzistence, (přírůstková) MapReduce a (přírůstková) replikace. Jedním z charakteristických rysů CouchDB je multi-master replikace, což jí umožňuje škálovat mezi stroji a vytvářet vysoce výkonné systémy. Při správě pomáhá vestavěná webová aplikace s názvem Fauxton (dříve Futon).
Dějiny
Gauč je zkratka pro shluk nespolehlivého komoditního hardwaru.[3] Projekt CouchDB vytvořil v dubnu 2005 bývalý Damien Katz Lotus Notes developer ve společnosti IBM. Samofinancoval projekt téměř dva roky a vydal jej jako open-source projekt v rámci GNU General Public License.
V únoru 2008 se stala Inkubátor Apache projektu a byla nabídnuta v rámci Licence Apache namísto.[4] O několik měsíců později to skončilo projektem nejvyšší úrovně.[5] To vedlo k vydání první stabilní verze v červenci 2010.[6]
Na začátku roku 2012 opustil Katz projekt, na který se měl soustředit Couchbase Server.[7]
Od Katzova odchodu pokračuje projekt Apache CouchDB, který vydal 1,2 v dubnu 2012 a 1,3 v dubnu 2013. V červenci 2013 komunita CouchDB sloučila kódovou základnu pro BigCouch, Zataženo je seskupená verze CouchDB do projektu Apache.[8] Klastrová architektura BigCouch je součástí aktuálního vydání Apache CouchDB.[9]
Nativní vytváření clusterů je podporováno ve verzi 2.0.0. A nový server Mango Query Server poskytuje jednoduchý způsob provádění dotazů CouchDB na základě JSON bez JavaScriptu nebo MapReduce.
Hlavní rysy
- Kyselinová sémantika
- CouchDB poskytuje KYSELINA sémantika.[10] Dělá to implementací formy Řízení více verzí souběžnosti, což znamená, že CouchDB zvládne velké množství souběžných čtenářů a spisovatelů bez konfliktů.
- Vytvořeno pro offline
- CouchDB se může replikovat na zařízení (jako jsou chytré telefony), která mohou přejít do režimu offline a za vás mohou synchronizovat data, když je zařízení zpět online.
- Distribuovaná architektura s replikací
- CouchDB byl navržen s ohledem na obousměrnou replikaci (nebo synchronizaci) a off-line provoz. To znamená, že více replik může mít své vlastní kopie stejných dat, upravit je a poté tyto změny synchronizovat později.
- Ukládání dokumentů
- CouchDB ukládá data jako „dokumenty“ jako jeden nebo více párů pole / hodnota vyjádřených jako JSON. Hodnoty polí mohou být jednoduché věci, jako jsou řetězce, čísla nebo data; ale seřazené seznamy a asociativní pole lze také použít. Každý dokument v databázi CouchDB má jedinečné ID a neexistuje žádné povinné schéma dokumentu.
- Případná konzistence
- CouchDB záruky případná konzistence být schopen poskytnout dostupnost i toleranci oddílů.
- Mapujte / snižujte zobrazení a indexy
- Uložená data jsou strukturována pomocí pohledů. V CouchDB je každý pohled konstruován pomocí JavaScript funkce, která funguje jako Mapová polovina a mapa / omezit provoz. Funkce vezme dokument a transformuje jej na jednu hodnotu, kterou vrátí. CouchDB může indexovat zobrazení a udržovat tyto indexy aktualizované při přidávání, odebírání nebo aktualizaci dokumentů.
- HTTP API
- Všechny položky mají jedinečný identifikátor URI, který je vystaven prostřednictvím protokolu HTTP. Využívá Metody HTTP POST, GET, PUT a DELETE pro čtyři základní CRUD (Vytvořit, Číst, Aktualizovat, Odstranit) operace se všemi prostředky.
CouchDB také nabízí vestavěné administrační rozhraní přístupné přes web s názvem Futon.[11]
Případy použití a produkční nasazení
Díky možnosti replikace a synchronizace CouchDB je ideální pro použití v mobilních zařízeních, kde není zaručeno připojení k síti a aplikace musí dál pracovat offline.
CouchDB je vhodný pro aplikace s akumulací, občas se měnících dat, na které se mají spouštět předdefinované dotazy a kde je důležitá verze (CRM, CMS systémy, například). Master-master replikace je obzvláště zajímavá funkce, která umožňuje snadné nasazení více webů.[12]
Uživatelé
Uživatelé CouchDB zahrnují:
- Amadeus IT Group, pro některé jejich back-endové systémy.[Citace je zapotřebí ]
- Credit Suisse, pro interní použití v komoditním oddělení pro jejich tržní rámec.[13][je zapotřebí lepší zdroj ]
- Meebo, pro jejich sociální platformu (web a aplikace).[Citace je zapotřebí ] Společnost Meebo získala společnost Google a většina produktů byla ukončena 12. července 2012.[14]
- npm, pro jejich registr balíků.[15]
- Sophos, pro některé jejich back-endové systémy.[Citace je zapotřebí ]
- The BBC, pro své platformy dynamického obsahu.[16]
- Kanonický začal jej používat v roce 2009 pro svou synchronizační službu „Ubuntu One“,[17] ale přestal ji používat v listopadu 2011.[18]
- CANAL + pro mezinárodní platformu na vyžádání v CANAL + Overseas.
- Protogrid jako back-end úložiště pro jejich rámec pro rychlý vývoj aplikací [19]
Manipulace s daty: dokumenty a pohledy
CouchDB spravuje sbírku JSON dokumenty. Dokumenty jsou organizovány prostřednictvím pohledů. Pohledy jsou definovány pomocí agregační funkce a filtry jsou počítány paralelně, podobně MapReduce.
Pohledy se obvykle ukládají do databáze a jejich indexy se průběžně aktualizují. CouchDB podporuje zobrazovací systém využívající externí servery soketů a protokol založený na JSON.[20] V důsledku toho byly zobrazovací servery vyvinuty v různých jazycích (výchozí je JavaScript, ale existují i PHP, Ruby, Python a Erlang).
Přístup k datům přes HTTP
Aplikace interagují s CouchDB přes HTTP. Následující příklad ukazuje několik příkladů použití kučera, nástroj příkazového řádku. Tyto příklady předpokládají, že CouchDB běží dále localhost (127.0.0.1) na portu 5984.
Akce | Žádost | Odezva |
---|---|---|
Přístup k informacím o serveru | zvlnění http://127.0.0.1:5984/ | { "couchdb": "Vítejte", "verze":"1.1.0"} |
Vytvoření databáze s názvem wiki | curl -X PUT http://127.0.0.1:5984/wiki | {"OK": skutečný} |
Pokus o vytvoření druhé databáze s názvem wiki | curl -X PUT http://127.0.0.1:5984/wiki | { "chyba":"soubor existuje", "důvod":"Databázi nelze vytvořit, soubor již existuje."} |
Načíst informace o wiki databáze | zvlnění 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": Nepravdivé, "disk_size": 79, "instance_start_time": "1272453873691070", „disk_format_version“: 5} |
Odstraňte databázi wiki | curl -X DELETE http://127.0.0.1:5984/wiki | {"OK": skutečný} |
Vytvořte dokument a požádejte CouchDB o zadání ID dokumentu | zvlnění -X POST -H „Content-Type: application / json“ --data '{"text": "Wikipedia na CouchDB", "hodnocení": 5}' http://127.0.0.1:5984/wiki | { "OK": skutečný, „id“: „123BAC“, "rev": „946B7D1C“} |
PouchDB
The PouchDB je Javascriptová implementace CouchDB, která je s ní kompatibilní s API. Takže můžete použít CouchDB na straně serveru a Pouch v samotné aplikaci a jakmile je aplikace online, můžete synchronizovat obojí. To je užitečné zejména pro progresivní webové aplikace, které se spoléhají na offline první přístup.
Open source komponenty
CouchDB zahrnuje řadu dalších open source projektů jako součást svého výchozího balíčku.
Součástka | Popis | Licence |
---|---|---|
Erlang | Erlang je univerzální souběžně programovací jazyk a runtime Systém. Sekvenční podmnožina Erlangu je a funkční jazyk s přísné hodnocení, jediný úkol, a dynamické psaní | Apache 2.0 (Verze 18.0 a novější) Veřejná licence Erlang (Dřívější vydání) |
JIP | International Components for Unicode (ICU) is a open-source projekt dospělého C /C ++ a Jáva knihovny pro Unicode podpora, software internacionalizace a globalizace softwaru | Licence Unicode |
jQuery | jQuery je lehký cross-browser Knihovna JavaScript který zdůrazňuje interakci mezi JavaScript a HTML | Licence MIT |
OpenSSL | OpenSSL je open-source provádění SSL a TLS protokoly. Jádro knihovna (napsáno v Programovací jazyk C. ) implementuje základní kryptografické a poskytuje různé obslužné funkce | Apache 1.0 a čtyřčlenná licence BSD |
Pavoučí opice | SpiderMonkey je umělec JavaScriptový engine spravuje Mozilla Foundation. Obsahuje tlumočník, a Překladač JIT a a Popelář | MPL 2.0 |
Viz také
Reference
- ^ Softwarová nadace Apache. "Apache CouchDB". Citováno 15. dubna 2012.
- ^ Smith, Jason. „Co je to replikační protokol CouchDB? Je to jako Git?“. Přetečení zásobníku. Stack Exchange. Citováno 14. dubna 2012.
- ^ „Exploring CouchDB“. Developer Works. IBM. 31. března 2009. Citováno 30. září 2016.
- ^ Oznámení e-mailové konference Apache na mail-archives.apache.org
- ^ Re: Navrhované řešení: Vytvořit CouchDB TLP na mail-archives.apache.org
- ^ „CouchDB NoSQL databáze připravena pro produkční použití“, článek z PC World z července 2010
- ^ Katz, Damien. „Budoucnost CouchDB“. Citováno 15. dubna 2012.
- ^ Slater, Noah. „Vítejte BigCouch“. Citováno 25. července 2013.
- ^ "'2.0'". Citováno 13. ledna 2017.
- ^ CouchDB, technický přehled Archivováno 20. října 2011 v Wayback Machine
- ^ „Vítejte na Futonu“ z „CouchDB The Definitive Guide“
- ^ Porovnání Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase od Kristófa Kovácse
- ^ "CouchDB ve volné přírodě" Archivováno 2017-07-20 na Wayback Machine článek webu produktu, seznam softwarových projektů a webů využívajících CouchDB
- ^ Cutler, Kim-Mai (9. června 2012). „Meebo získává klasickou léčbu Google Acq-hire: většina produktů bude brzy vypnuta“. TechCrunch. AOL Inc.. Citováno 7. ledna 2016.
- ^ "npm-registry-couchapp". GitHub. npm. 17. června 2015. Citováno 7. ledna 2016.
- ^ CouchDB v BBC jako úložiště klíčů a hodnot odolné vůči chybám, škálovatelné a multi-datové centrum
- ^ E-mail od Elliot Murphy (kanonický) Archivováno 05.05.2011 na Wayback Machine do seznamu CouchDB-Devel
- ^ Canonical Drops CouchDB z Ubuntu One (Slashdot)
- ^ [1]
- ^ Zobrazit dokumentaci k serveru Archivováno 2008-10-20 na Wayback Machine na wiki.apache.org
Bibliografie
- Anderson, J. Chris; Slater, Noah; Lehnardt, Jan (15. listopadu 2009), CouchDB: Definitivní průvodce (1. vyd.), O'Reilly Media, str. 300, ISBN 0-596-15816-5
- Lennon, Joe (15. prosince 2009), Počínaje CouchDB (1. vyd.), Apress, str. 300, ISBN 1-4302-7237-6, archivovány z originál 5. prosince 2010, vyvoláno 1. listopadu 2009
- Holt, Bradley (7. března 2011), Zápis a dotazování MapReduce pohledů v CouchDB (1. vyd.), O'Reilly Media, str. 76, ISBN 1-4493-0312-9
- Holt, Bradley (11. dubna 2011), Škálování CouchDB (1. vyd.), O'Reilly Media, str. 72, ISBN 1-4493-0343-9
- Brown, MC (31. října 2011), Začínáme s CouchDB (1. vyd.), O'Reilly Media, str. 50, ISBN 1-4493-0755-8
- Thompson, Mick (2. srpna 2011), Začínáme s GEO, CouchDB a Node.js (1. vyd.), O'Reilly Media, str. 64, ISBN 1-4493-0752-3
externí odkazy
- Oficiální webové stránky
- CouchDB: Definitivní průvodce
- Kompletní reference HTTP API
- Jednoduchá knihovna PHP5 pro komunikaci s CouchDB
- Asynchronní klient CouchDB pro Javu
- Asynchronní klient CouchDB pro Scala
- Lehnardt, Jan (2008). „Gauč DB ve výšce 10 000 stop“. Erlang eXchange 2008. Citováno 15. dubna 2012.
- Lenhardt, Jan (2009). „CouchDB pro vývojáře Erlang“. Erlang Factory London 2009. Archivovány od originál dne 19. června 2011. Citováno 15. dubna 2012.
- Katz, Damien (leden 2009). „CouchDB and Me“. RubyFringe. InfoQ. Archivovány od originál dne 27. dubna 2011. Citováno 15. dubna 2012.