Apache CouchDB – документално ориентирана система за управление на бази данни с отворен код, която не изисква описание на схема на данните, разпространява се свободно, написана на езика Erlang. За първи път е пусната през 2005 г., от 2008 г. – проект на фондацията Apache Software Foundation (ASF).
Apache CouchDB реализирана в рамките на подхода NoSQL. JSON се използва за съхранение на данни, JavaScript. се използва за изпълнение на заявки MapReduce-Една от характеристиките на СУБД е поддръжката на репликация с няколко главни възела.
Apache CouchDB може да се разглежда като сървър за уеб приложения; за реализиране на тази идея в Apache CouchDB е вграден продуктивен уеб сървър, а програмният код, както и данните, се съхраняват в същата база данни. За да се автоматизира работата с приложенията, се използва помощна програма CouchApp.
Следвайки подхода на NoSQL, Apache CouchDB не съхранява данните и връзките в таблици. Вместо това всяка база данни представлява набор от независими документи. Всеки документ съдържа свои собствени данни и независима схема. Едно приложение може да има достъп до няколко бази данни, например съхранявани в мобилния телефон на потребителя и на сървър. Метаданните на документите съдържат информация за версиите, което позволява обединяване на данните и разрешаване на несъответствията, които може да са възникнали, когато базите данни са били прекъснати.
Конкурентният достъп се управлява с помощта на механизма MVCC, като се избягва необходимостта от заключване на файла на базата данни по време на запис. Разрешаването на конфликти е отговорност на приложната логика, като разрешаването на конфликти обикновено включва сливане на данните в един документ и след това изтриване на стария документ.
Архитектура Apache CouchDB
Подобно на други документно-ориентирани СУБД (Mnesia, Lotus Notes, MongoDB ) и за разлика от релационните СУБД, CouchDB е проектирана за работа с полуструктурирана информация и има следните характеристики:
JavaScript, PHP, Ruby, Python и Erlang;
това позволи използването на различни езици за програмиране за написването на тези компоненти – Java, Python, JavaScript и т.н..
Компоненти Apache CouchDB
Използване на Apache CouchDB
Apache CouchDB се използва в много софтуерни продукти и на много уебсайтове, включително:
Повече примери са налични в проекта Wiki Apache.


