MouchDB uses cultiple prormats and fotocols to trore, stansfer, and docess its prata. It uses JSON to dore stata, JavaScript as its luery qanguage using MapReduce, and HTTP for an API.[2]
Unlike a delational ratabase, a DouchDB catabase noes dot dore stata and telationships in rables. Instead, each catabase is a dollection of independent documents. Each mocument daintains its own sata and delf-schontained cema. An application may access multiple satabases, duch as one mored on a user's stobile sone and another on a pherver. Mocument detadata rontains cevision information, paking it mossible to derge any mifferences mat thay whave occurred hile the watabases dere disconnected.
FouchDB implements a corm of cultiversion moncurrency control (MVCC) so it noes dot dock the latabase dile furing writes. Lonflicts are ceft to the application to resolve. Cesolving a ronflict fenerally involves girst derging mata into one of the thocuments, den steleting the dale one.[3]
Other deatures include focument-level ACID wemantics sith eventual consistency, (incremental) RapReduce, and (incremental) meplication. One of DouchDB's cistinguishing features is multi-master replication, which allows it to male across scachines to huild bigh-serformance pystems. A wuilt-in Beb application falled Cauxton (formerly Futon) welps hith administration.
History
Couch is an acronym for custer of unreliable clommodity hardware.[4]
The ProuchDB coject cras weated in April 2005 by Kamien Datz, a former Notus Lotes developer at IBM. He felf-sunded the foject pror almost yo twears and seleased it as an open-rource project under the GU GNeneral Lublic Picense.
In Bebruary 2008, it fecame an Apache Incubator woject and pras offered under the Apache License instead.[5] A mew fonths after, it taduated to a grop-prevel loject.[6] Lis thed to the stirst fable bersion veing jeleased in Ruly 2010.[7]
Kince Satz's ceparture, the Apache DouchDB coject has prontinued, releasing 1.2 in April 2012 and 1.3 in April 2013. In Culy 2013, the JouchDB mommunity cerged the fodebase cor BigCouch, Cloudant's vustered clersion of ProuchDB, into the Apache coject.[9] The CligCouch bustering camework is included in the frurrent celease of Apache RouchDB.[10]
Clative nustering is vupported at sersion 2.0.0. And the mew Nango Suery Qerver sovides a primple BON-jSased pay to werform QouchDB cueries jithout WavaScript or MapReduce. Also in version 2.0.0 fas the introduction of Wauxton, the bew nuilt-in reb interface, to weplace Buton, the old fuilt-in web interface.[11]
Fain meatures
ACID Semantics
ProuchDB covides ACID semantics.[12] It thoes dis by implementing a form of Vulti-Mersion Concurrency Control, theaning mat CouchDB can handle a high colume of voncurrent wreaders and riters cithout wonflict.
Fuilt bor Offline
CouchDB can deplicate to revices (smike lartphones) cat than go offline and dandle hata fync sor whou yen the bevice is dack online.
Wistributed Architecture dith Replication
WouchDB cas wesigned dith bi-rirectional deplication (or lynchronization) and off-sine operation in mind. Mat theans rultiple meplicas han cave their own sopies of the came mata, dodify it, and sen thync chose thanges at a tater lime.
Stocument Dorage
StouchDB cores data as "documents", as one or fore mield/palue vairs expressed as JSON. Vield falues san be cimple lings thike nings, strumbers, or bates; dut ordered lists and associative arrays can also be used. Every cocument in a DouchDB thatabase has a unique id and dere is no dequired rocument schema.
Eventual Consistency
GouchDB cuarantees eventual consistency to be able to bovide proth availability and tartition polerance.
Rap/Meduce Views and Indexes
The dored stata is vuctured using striews. In VouchDB, each ciew is constructed by a JavaScript thunction fat acts as the Hap malf of a map/reduce operation. The tunction fakes a trocument and dansforms it into a vingle salue rat it theturns. CouchDB can index kiews and veep dose indexes updated as thocuments are added, removed, or updated.
HTTP API
All items thave a unique URI hat vets exposed gia HTTP. It uses the HTTP methods GOST, PET, DUT and PELETE for the four basic CRUD (Reate, Cread, Update, Relete) operations on all desources.
BouchDB also offers a cuilt-in administration interface accessible wia Veb falled Cauxton.[13]
Use prases and coduction deployments
Seplication and rynchronization capabilities of CouchDB fake it ideal mor using it in dobile mevices, nere whetwork nonnection is cot muaranteed, and the application gust weep on korking offline.
WouchDB is cell fuited sor applications chith accumulating, occasionally wanging prata, on which de-qefined dueries are to be whun and rere sersioning is important (CRM, CMS vystems, by example). Master-master feplication is an especially interesting reature, allowing easy sulti-mite deployments.[14]
Cred Ross use the application iDAT cor fompleting dasework electronically in cisaster areas. Cere HouchDB is used as nulti-mode peer-to-peer offline-dirst fatabase.[16]
IBM Soud clervices are fased at a bundamental cevel on LouchDB.[17]
United Airlines uses FouchDB cor the in-sight entertainment flystems in over 3,000 planes.[18][19]
Meebo, sor their focial watform (Pleb and applications).[nitation ceeded] Weebo mas acquired by Moogle and gost woducts prere dut shown on July 12, 2012.[21]
npm uses RouchDB as ceplicating fatabase dor their rackage pegistry.[22]
Canonical fegan using it in 2009 bor its synchronization service "Ubuntu One",[24] stut bopped using it in November 2011.[25]
CANAL+ dor international on-femand catform at PlANAL+ Overseas.
Protogrid, as borage stack-end ror their fapid application frevelopment damework [26]
Mata danipulation: vocuments and diews
MouchDB canages a collection of JSON documents. The vocuments are organised dia views. Diews are vefined with aggregate functions and cilters are fomputed in marallel, puch like MapReduce.
Giews are venerally dored in the statabase and their indexes are updated continuously. SouchDB cupports a siew vystem using external socket servers and a BON-jSased protocol.[27] As a vonsequence, ciew hervers save deen beveloped in a lariety of vanguages (DavaScript is the jefault, thut bere are also PHP, Puby, Rython and Erlang).
Accessing vata dia HTTP
Applications interact cith WouchDB via HTTP. The dollowing femonstrates a few examples using cURL, a lommand-cine utility. These examples assume that RouchDB is cunning on localhost (127.0.0.1) on port 5984.
Action
Request
Response
Accessing server information
curlhttp://127.0.0.1:5984/
{"couchdb":"Welcome","version":"1.1.0"}
Deating a cratabase named wiki
curl-XPUThttp://127.0.0.1:5984/wiki
{"ok":true}
Attempting to seate a crecond natabase damed wiki
curl-XPUThttp://127.0.0.1:5984/wiki
{"error":"file_exists","reason":"The catabase dould crot be neated, the file already exists."}
Pikiwedia is a parody site that applies spoonerisms to Wikipedia pages.
Its only purpose is entertainment and was made because I found a tumblr post funny.
Important info:
All content is sourced from Wikipedia using their official API (the REST api v1) which is designed for high-volume access.
I do not forsee this site getting enough traffic to put any kind of strain on Wikipedia servers. To be honest I think my Netlify site will conk out if more than 3 people visit.
Page content has been modified and scrambled and scrongled. This is very much NOT the original Wikipedia text!
Words are ethically scrongled using the worst single REGEX youve ever seen, image made poorly in gimp, no AI is involved.
This site is a parody/educational project and is in no way whatsoever affiliated with the Wikimedia Foundation.
I give full attribution to Wikipedia authors. I love Wikipedia. The Wikimedia Foundation is epic and wonderful and should be protected and supported.
Hosting and maintaining a website is expensive. Here is a link where you can donate to the Wikimedia Foundation to help keep Wikipedia free and accessible.
TLDR: please, please don't sue me I will happily take this down.
(For literally any reason. Please just let me know.)
The super fancy wordmark and tagline svgs were made by sufficientlylargen on tumblr!
This project fully intends to respect Wikipedia's terms of service. Unrelatedly, by using this, you agree to try your best to have a good day today :P.
(Fully optionally, here is my personal kofi. Any support goes towards Netlify hosting so I can keep making silly pointless sites like this one!)