Array ( [0] => 15556211 [id] => 15556211 [1] => cswiki [site] => cswiki [2] => CouchDB [uri] => CouchDB [3] => [img] => [4] => [day_avg] => [5] => [day_diff] => [6] => [day_last] => [7] => [day_prev_last] => [8] => [oai] => [9] => [is_good] => [10] => [object_type] => [11] => 0 [has_content] => 0 [12] => [oai_cs_optimisticky] => ) Array ( [0] => {{Infobox - software [1] => | jméno = Apache CouchDB [2] => | vývojář = [[Apache Software Foundation]] [3] => | programovací jazyk = [[Erlang (programovací jazyk)|Erlang]] [4] => | typ softwaru = [[Document-oriented database]] [5] => | licence = [[Apache Licence]] 2.0 [6] => | web = http://couchdb.apache.org/ [7] => | logo = [8] => | velikost loga = [9] => }} [10] => '''Apache CouchDB''', (dále pouze '''CouchDB''') je [[Otevřený software|open source]] dokumentově orientovaný databázový systém napsaný v programovacím jazyku [[Erlang (programovací jazyk)|Erlang]] a navržený pro místní replikaci a snadnou horizontální škálovatelnost napříč rozmanitými zařízeními. CouchDB je podporována komerčními subjekty [[CouchBase]] a [[Cloudant]]. [11] => [12] => == Historie == [13] => V dubnu 2005, [[Damien Katz]] (bývalý vývojář [[Lotus Notes]] v [[IBM]]; současně zakladatel a CTO [[CouchBase]]) zaslal na svůj blog zprávu o novém databázovém systému, na kterém v té době pracoval. Na detaily byl příspěvek o projektu v jeho rané fázi skoupý, nicméně z příspěvku bylo jisté, že se jedná o úložný systém pro objemné objektové databáze nazývaný CouchDB (Couch – pohovka – je akronymem pro cluster nespolehlivého spotřebitelského hardware).{{cite web | last = Lennon| first = Joe | title = Exploring CouchDB | work = IBM | publisher = IBM | date = 2009-03-31 | url = http://www.ibm.com/developerworks/opensource/library/os-couchdb/index.html | accessdate = 2009-03-31 }} Jeho cílem bylo vytvořit databázi určenou pro [[Internet]] a od základu ji navrhnout pro služby web aplikací. CouchDB byla původně napsána v [[C++]], později byl však projekt přepsán pro [[Erlang (programovací jazyk)|Erlang]] OTP platformu vybranou pro její toleranci k chybám. Vývoj projektu po téměř dva roky sám sponzoroval a uvolnil jako open source projekt pod [[GNU]] [[General Public License|GPL]]. [14] => [15] => V únoru 2008 se projekt stal součástí [[Apache Incubator]] a byl přelicencován pod [[Apache Licence]].[http://mail-archives.apache.org/mod_mbox/incubator-general/200802.mbox/%3c3d4032300802121136p361b52ceyfc0f3b0ad81a1793@mail.gmail.com%3e Apache mailing list announcement] mail-archives.apache.org V listopadu 2008 se stal plnohodnotným [[Apache]] projektem podobně jako [[Apache HTTP Server]], [[Apache Tomcat]] a [[Apache Ant]].[http://mail-archives.apache.org/mod_mbox/incubator-couchdb-dev/200811.mbox/%3c3F352A54-5FC8-4CB0-8A6B-7D3446F07462@jaguNET.com%3e Re: Proposed Resolution: Establish CouchDB TLP] mail-archives.apache.org [16] => [17] => V současnosti je CouchDB spravována [[Apache Software Foundation]] s podporou ze strany [[IBM]]. Katz na projektu pracuje na plný úvazek jako vedoucí vývojář. [18] => [19] => == Návrh == [20] => CouchDB je v mnohém podobná jiným dokumentovým úložištím jako jsou [[MongoDB]] a [[Lotus Notes]]. Namísto ukládání dat v řádcích a sloupcích tak, jak to dělají relační databázové systémy, CouchDB spravuje kolekce [[JavaScript Object Notation|JSON]] dokumentů. Dokumenty v rámci kolekce nesdílejí společné schéma, přičemž nabízejí dotazovací kapacity prostřednictvím pohledů. Pohledy jsou definovány agregačními funkcemi a souběžně s tím filtrovány obdobně jako v [[MapReduce]] přístupu. [21] => [22] => Pohledy jsou většinou ukládány v databázi a jejich indexy plynule obnovovány, nicméně dotazy mohou vyústit i v pouze dočasné pohledy. CouchDB podporuje systém zprostředkovávající pohledy prostřednictvím externích [[socket]] serverů a na [[JavaScript Object Notation|JSONu]] založeném protokolu.[http://wiki.apache.org/couchdb/ViewServer View Server Documentation] {{Wayback|url=http://wiki.apache.org/couchdb/ViewServer |date=20081020160035 }} wiki.apache.org Díky tomu takové servery mohly být a také byly vytvořeny v mnoha různých jazycích. [23] => [24] => CouchDB nabízí [[Representational State Transfer|RESTful HTTP API]] spolu s množstvím volně dostupných klientů. Dodatečně, plugin architektura dovoluje užití různých počítačových jazyků pro pohledové servery, za všechny například [[JavaScript]] (výchozí), [[Perl]], [[Ruby]], [[Python]], [[PHP]] či [[Erlang (programovací jazyk)|Erlang]]. Podpora ostatních jazyků může být snadno doplněna. Návrh CouchDB a její filosofie naplno čerpá z Web architektury, z jeho konceptu, zdrojů a metod a zjednodušeně může být popsána následujícím: [25] => [26] => CouchDB je užívána mnoha softwarovými projekty a webovými stránkami.[http://wiki.apache.org/couchdb/CouchDB_in_the_wild CouchDB in the wild] {{Wayback|url=http://wiki.apache.org/couchdb/CouchDB_in_the_wild |date=20170720124015 }} Výčet projektů užívajících CouchDB Například v distribuci [[Ubuntu]] od její verze 9.10 slouží k ukládání a synchronizaci adresářů, Tomboy poznámek či [[Firefox]] záložek se službou one.ubuntu.com.[http://mail-archives.apache.org/mod_mbox/couchdb-dev/200910.mbox/%3C4AD53996.3090104@canonical.com%3E Email from Elliot Murphy (Canonical)] {{Wayback|url=http://mail-archives.apache.org/mod_mbox/couchdb-dev/200910.mbox/%3C4AD53996.3090104@canonical.com%3E |date=20110505005955 }} CouchDB-Devel Od verze 0.11 CouchDB podporuje CommonJS' Module specifikaci.{{Citace elektronického periodika |titul=Archivovaná kopie |url=http://wiki.apache.org/couchdb/CommonJS_Modules |datum přístupu=2011-06-09 |url archivu=https://web.archive.org/web/20110612073947/http://wiki.apache.org/couchdb/CommonJS_Modules |datum archivace=2011-06-12 |nedostupné=ano }} [27] => [28] => === Vlastnosti === [29] => ; Dokumentové úložiště [30] => : CouchDB ukládá dokumenty v jejich úplnosti. Celý dokument si můžete představit jako jeden či více pole/hodnota párů vyjádřených v [[JavaScript Object Notation|JSON]] zápisu. Hodnoty pole mohou být jednoduchými entitami jako řetězec, číslo či datum. Můžete však také využít setříděné listy a asociativní mapy. Každý dokument v rámci CouchDB má svůj unikátní identifikátor a zároveň nevyžaduje žádné dokumentové schéma. [31] => ; ACID transakce [32] => : Stejně jako mnoho relačních databázových systémů, nabízí CouchDB [[ACID]] transakce[http://couchdb.apache.org/docs/overview.html] {{Wayback|url=http://couchdb.apache.org/docs/overview.html |date=20111020074113 }}, sekce ACID Properties.. Těch je docíleno díky implementaci formy Multi-Version Concurrency Control ([[MVCC]]) ne nepodobné té z [[InnoDB]] a [[PostgreSQL]]. Tato vlastnost CouchDB zajišťuje bezkonfliktní provoz vzájemně konkurenčních čtecích a zapisovacích operací. [33] => ; Map/Reduce pohledy a indexy [34] => : Pro zajištění jisté struktury datům uloženým v CouchDB si můžete vytvořit, podobně jako u databází relačních, pohledy. V CouchDB je každý pohled vytvořen [[JavaScript]] funkcí (serverové vykonání [[JavaScript]]u za pomoci [[CommonJS]] a [[SpiderMonkey]]) která tvoří Map část [[MapReduce]] operace. Funkce transformuje dokument v jedinou hodnotu kterou poté navrací. Logika vaší [[JavaScript]] funkce může být libovolně složitá. Z důvodu nákladnosti takové operace nad rozsáhlou databází může CouchDB pohledy indexovat a tyto indexy obnovovat jak jsou dokumenty přidávány, mazány a obnovovány. Toto je velmi mocný indexovací mechanismus udělující bezprecedentní kontrolu nad systémem v porovnání s většinou ostatních databázových systémů. [35] => ; Distribuovaná architektura podporující replikace [36] => : CouchDB byla navrhována s podporou obousměrné [[replikace]] (či synchronizace) a [[offline]] provozu. To umožňuje situace, kdy mnohonásobné repliky mohou mít své vlastní kopie těch samých dat, modifikovat je a později tyto změny synchronizovat. Největším problémem typicky spojeným s takovouto úrovní flexibility jsou vzájemné konflikty. [37] => ; REST API [38] => : CouchDB jedná se všemi uloženými částmi (těch je více než jen dokumenty) jako se zdroji. Každá část má svou unikátní [[Uniform Resource Identifier|URI]] dostupnou přes [[Hypertext Transfer Protocol|HTTP]]. [[REST]] využívá [[Hypertext Transfer Protocol|HTTP]] metod [[POST]], [[GET]], [[PUT]] a [[DELETE]] pro čtyři základní [[CRUD]] (Create, Read, Update, Delete) operace nad všemi zdroji. [[Hypertext Transfer Protocol|HTTP]] je široce přijímanou, používanou, škálovatelnou a prověřenou technologií. [39] => [40] => == Příklady == [41] => CouchDB nabízí množinu RESTful [[Hypertext Transfer Protocol|HTTP]] metod (POST, GET, PUT, DELETE) za pomoci [[cURL]] nástroje příkazové řádky pro komunikaci s CouchDB serverem na výchozím portu 5984: [42] => curl http://127.0.0.1:5984/ [43] => CouchDB server zpracuje [[Hypertext Transfer Protocol|HTTP]] požadavek a vrátí následující odpověď formátovanou jako [[JavaScript Object Notation|JSON]] řetězec: [44] => {"couchdb":"Welcome","version":"1.0.1"} [45] => Pro vytvoření nové databáze 'couch' stačí vykonat následující příkaz: [46] => curl -X PUT http://127.0.0.1:5984/couch [47] => V případě, že [[databáze]] ještě neexistuje je vytvořena a dostanete následující odpověď: [48] => {"ok":true} [49] => nebo tuto odpověď v případě, že [[databáze]] již existuje: [50] => {"error":"file_exists","reason":"The database could not be created, the file already exists."} [51] => Tento příkaz slouží k získání informace o databázi: [52] => curl -X GET http://127.0.0.1:5984/couch [53] => Při úspěšném zpracování [[server]] vrátí odpověď: [54] => {"db_name":"couch","doc_count":0,"doc_del_count":0,"update_seq":0,"purge_seq":0,"compact_running":false,"disk_size":79, [55] => "instance_start_time":"1303035684557220","disk_format_version":5,"committed_update_seq":0} [56] => A databázi včetně veškerého jejího obsahu můžeme samozřejmě i smazat: [57] => curl -X DELETE http://127.0.0.1:5984/couch [58] => Proběhlo-li vše v pořádku, obdržíme kladnou odpověď: [59] => {"ok":true} [60] => či odpověď zápornou v případě, že databáze neexistuje: [61] => {"error":"not_found","reason":"missing"} [62] => [63] => == Open source komponenty == [64] => CouchDB zahrnuje množství jiného [[Otevřený software|open source]] softwaru jako součást své základní distribuce. [65] => {| class="wikitable" width = "100%" [66] => ! [67] => ! Popis [68] => ! Licence [69] => |- [70] => | [[SpiderMonkey]] [71] => | SpiderMonkey je kódové označení pro úplně první [[JavaScript]] interpret napsaný Brendanem Eichem v [[Netscape]] Communications, později uvolněný jako [[Otevřený software|open source]] a v současnosti spravovaný [[Mozilla Foundation]]. [72] => | [[Mozilla Public License|MPL]]/[[GNU General Public License|GPL]]/[[GNU Lesser General Public License|LGPL]] [73] => |- [74] => | [[jQuery]] [75] => | jQuery je lehká, na prohlížeči nezávislá [[JavaScript]] knihovna zlepšující interakci mezi [[JavaScript]] a [[HyperText Markup Language|HTML]]. [76] => | [[GNU General Public License|GPL]] a [[MIT Licence|MIT]] [77] => |- [78] => | [[International Components for Unicode|ICU]] [79] => | International Components for Unicode (ICU) je [[Otevřený software|open source]] projekt [[C (programovací jazyk)|C]]/[[C++]] a [[Java (programovací jazyk)|Java]] knihoven pro podporu [[Unicode]], internationalizaci a globalizaci softwaru. ICU je snadno portovatelný na mnoho [[operační systém|operačních systémů]] a prostředí. [80] => | [[MIT Licence]] [81] => |- [82] => | [[OpenSSL]] [83] => | OpenSSL je [[Otevřený software|open source]] implementace [[Secure Sockets Layer|SSL]] a [[Transport Layer Security|TLS]] protokolů. Jaderná knihovna (napsaná v [[C (programovací jazyk)|C]]) implementuje základní kryptografické funkce a nabízí množství užitečných funkcí. [84] => | [[Apache Licence|Apache]] [85] => |- [86] => |[[Erlang (programovací jazyk)|Erlang]] [87] => | Erlang je konkurenční programovací jazyk s všeobecným použitím a runtime prostředí. Erlang je [[funkcionální jazyk]] s dynamickým typováním. [88] => | Modifikovaná [[Mozilla Public License|MPL]] [89] => |} [90] => [91] => == Příklady NoSQL databází == [92] => * [[MongoDB]] [93] => * [[FoundationDB]] [94] => * [[ArangoDB]] [95] => [96] => == Související články == [97] => * [[NoSQL]] [98] => * [[CAP teorém]] [99] => * [[ACID]] [100] => * [[Relační databáze]] [101] => * [[Velká data]] [102] => * [[Lotus Notes]] [103] => [104] => == Reference == [105] => [106] => [107] => == Bibliografie == [108] => * {{ citation [109] => | first1 = J. Chris | last1 = Anderson | first2 = Noah | last2 = Slater | first3 = Jan | last3 = Lehnardt | date = November 15, 2009 | title = CouchDB: The Definitive Guide | edition = 1st | publisher = [[O'Reilly Media]] | pages = 300 | isbn = 0596158165 | url = http://guide.couchdb.org/editions/1/en/index.html }} [110] => * {{citation | first1 = Joe | last1 = Lennon | date = December 15, 2009 | title = Beginning CouchDB | edition = 1st | publisher = [[Apress]] | pages = 300 | isbn = 1430272376 | url = http://www.apress.com/book/view/9781430272373 | access-date = 09-06-2011 | archiveurl = https://web.archive.org/web/20101205154416/http://apress.com/book/view/9781430272373 | archivedate = 05-12-2010 | titul = Archivovaná kopie | datum přístupu = 09-06-2011 | url archivu = https://web.archive.org/web/20101205154416/http://www.apress.com/book/view/9781430272373 | datum archivace = 05-12-2010 | nedostupné = ano }} [111] => * {{ citation | first1 = Bradley | last1 = Holt | date = March 7, 2011 | title = Writing and Querying MapReduce Views in CouchDB | edition = 1st | publisher = [[O'Reilly Media]] | pages = 76 | isbn = 1449303129| url = http://oreilly.com/catalog/0636920018247 }} [112] => [113] => == Externí odkazy == [114] => * {{Commonscat}} [115] => * [http://couchdb.apache.org/ oficiální stránky projektu] [116] => * [https://web.archive.org/web/20090831050402/http://books.couchdb.org/relax/ CouchDB: The Definitive Guide] [117] => * [https://web.archive.org/web/20130602041727/http://www.nosqldatabases.com/main/tag/couchdb CouchDB articles on NoSQLDatabases.com] [118] => * [http://manning.com/free/green_chandler.html CouchDB green paper] [119] => * [http://nosql.mypopescu.com/tagged/couchdb CouchDB news and articles on myNoSQL] [120] => * [http://nosql.mypopescu.com/post/683838234/scaling-couchdb Scaling CouchDB] [121] => * [https://web.archive.org/web/20160303172725/http://wiki.apache.org/couchdb/Complete_HTTP_API_Reference Complete HTTP API Reference] [122] => [123] => == Video odkazy == [124] => * [http://video.google.com/videoplay?docid=-3714560380544574985&hl=en Erlang eXchange 2008: Couch DB at 10,000 feet Jan Lehnardt] {{Wayback|url=http://video.google.com/videoplay?docid=-3714560380544574985&hl=en |date=20121109191546 }} Erlang eXchange 2008 [125] => * [https://web.archive.org/web/20110619041527/http://www.erlang-factory.com/conference/London2009/speakers/janlehnardt Jan Lehnardt is Giving the Following Talks, CouchDB for Erlang Developers] [126] => * [https://web.archive.org/web/20110427212129/http://www.infoq.com/presentations/katz-couchdb-and-me CouchDB and Me] 31. ledna 2009, Damien Katz [127] => [128] => {{Autoritní data}} [129] => [130] => [[Kategorie:Systémový software]] [131] => [[Kategorie:Systémy řízení báze dat]] [] => )
good wiki

CouchDB

Apache CouchDB, (dále pouze CouchDB) je open source dokumentově orientovaný databázový systém napsaný v programovacím jazyku Erlang a navržený pro místní replikaci a snadnou horizontální škálovatelnost napříč rozmanitými zařízeními. CouchDB je podporována komerčními subjekty CouchBase a Cloudant.

More about us

About

Expert Team

Vivamus eget neque lacus. Pellentesque egauris ex.

Award winning agency

Lorem ipsum, dolor sit amet consectetur elitorceat .

10 Year Exp.

Pellen tesque eget, mauris lorem iupsum neque lacus.

You might be interested in

,'JavaScript','Otevřený software','Hypertext Transfer Protocol','Erlang (programovací jazyk)','JavaScript Object Notation','O\'Reilly Media','Lotus Notes','Apache Licence','ACID','Apress','CouchBase','C (programovací jazyk)'