питів використовуються функції подання (view);
Функції-валідатори, функції-вистави, функції-фільтри зберігаються в текстовому вигляді в самій базі даних;
Ці функції написані, якправило, на мовах JavaScript або Erlang, а для їх виконання запускається окремий сервер запитів, взаємодія з яким відбувається посредствам сокетів (програмних інтерфейсів) і JSON-протоколу;
кожній базі даних у системі CouchDB відповідає єдине B-дерево (структура даних, дерево пошуку);
кожне B-дерево зберігається у вигляді окремого файлу на диску;
одночасно може бути запущено декілька потоків для читання бази даних і тільки один - для запису; ЦІЛІСНІСТЬ БАЗИ ДАНИХ ЗАБЕЗПЕЧУЄТЬСЯ ТІЛЬКИ ЗА ЗАПИСИ ДАНИХ НА ДИСК;
подання зберігаються в базах даних та їх індекси оновлюються безперервно, однак при кожному оновленні функцій подання або відображення оновлюється всі B-дерево цілком;
при обробці даних за допомогою функцій-уявлень використовується спрощена модель технології MapReduse, що дозволяє виробляти паралельні обчислення, в тому числі і на багатоядерному процесорі;
розподілення обчислень на кілька вузлів не дозволені - замість цього використовується міханізм реплікації (копіювання даних з одного джерела на безліч інших і навпаки);
обробка даних за допомогою ланцюжка послідовних функцій MapReduse не дозволені;
підтримується вертикальна масштабованість, що означає підтримку не тільки величезних кластерів, але і портативних пристроїв;
зовнішній інтерфейс (API) до даної СУБД побудований на основі архітектури REST, тобто сама база даних, окремі записи, відображення та запити - суть ресурси, які мають унікальну адресу (URL) і підтримують операції GET, PUT, POST, DELETE;
тому для взаємодії з базою даних було написано багато клієнтських бібліотек, у тому числі на таких мовах JavaScript, PHP, Ruby, Python і Erlang;
взаємодія між окремими компонентами СУБД, тобто з серверами уявлень здійснюється знову-таки за допомогою текстового протоколу, а дані передаються в форматі JSON;
це дозволило використовувати різні мови програмування для написання цих компонентів - Java, Python, JavaScript і пр.
CouchDB використовується в багатьох програмних продуктах і на безлічі веб-сайтів, у тому числі:
UbuntuOne, Firefox, TomBoy, Akonadi, Evolution - для синхронізації адрес, заміток і закладок.
Ajatus - розподілена CRM-система. p align="justify"> Mozilla Raindrop - агрегатор повідомлень електронної пошти, соціальних мереж, систем обміну миттєвими повідомленнями (Skype, Jabber).
eXist - СУБД з відкритим вихідним кодом, повністю заснована на технології XML.
<...