Lt304888.ru

Туристические услуги

CouchDB

26-05-2023

Apache CouchDB
Тип

Документо-ориентированная СУБД

Автор

Damien Katz, Jan Lehnardt, Noah Slater, Christopher Lenz, J. Chris Anderson

Разработчик

Apache Software Foundation

Написана на

Erlang

Операционная система

Кроссплатформенное программное обеспечение

Первый выпуск

2005

Последняя версия

1.2.0 (3 марта 2012)

Состояние

Active

Лицензия

Apache 2.0

Сайт

http://couchdb.apache.org/

Apache CouchDB[1] — документо-ориентированная система управления базами данных, не требующая описания схемы данных. Эта программа является свободной, открытой, и написана на языке Erlang.

CouchDB можно рассматривать как сервер веб-приложений; для реализации этой идеи в CouchDB встроен производительный CouchApp.

Содержание

Архитектура системы

Подобно иным документно-ориентированным СУБД (Mnesia, Lotus Notes, MongoDB), и в отличие от реляционных СУБД, CouchDB предназначена для работы с полу-структурированной информацией и имеет следующие особенности:

  • данные сохраняются не в строках и колонках, а в виде JSON-подобных документов, моделью которых является не таблицы, а деревья;
  • типизация элементов данных, то есть сопоставление отдельным полям документов типов INTEGER, DATE и пр., не поддерживается — вместо этого пользователь может написать функцию-валидатор;
  • целостность базы данных обеспечивается исключительно на уровне отдельных записей (но не на уровне связей между ними);
  • связи между таблицами или записями принципиально не поддерживаются, соответственно операция объединения (JOIN) между таблицами не определена;
  • для построения индексов и выполнения запросов используются функции представления (view)[2];
  • функции-валидаторы, функции-представления, функции-фильтры сохраняются в текстовом виде в самой базе данных;
  • эти функции, как правило, написаны на языках JavaScript или Erlang, а для их выполнения запускается отдельный сервер запросов, взаимодействие с которым происходит посредством сокетов и текстового JSON-протокола;
  • каждой базе данных в системе CouchDB соответствует единственное B-дерево (не путать с двоичным деревом);
  • каждое B-дерево хранится в виде отдельного файла на диске;
  • одновременно может быть запущено несколько потоков для чтения базы данных и только один — для записи;
  • целостность базы данных обеспечивается только при записи данных на диск;
  • представления хранятся в БД и их индексы обновляются непрерывно, однако при каждом обновлении функций представления или отображения обновляется всё B-дерево целиком;
  • при обработке данных с помощью функций-представлений используется упрощённая модель технологии MapReduce, что позволяет производить параллельные вычисления, в том числе и на многоядерном процессоре;
  • распределение вычислений на несколько узлов не поддерживается — вместо этого используется механизм репликации;
  • обработка данных с помощью цепочки последовательных функций MapReduce не поддерживается;
  • поддерживается вертикальная масштабируемость, что означает поддержку не только огромных кластеров, но и портативных устройств (нетбуки, смартфоны и пр.);
  • внешний интерфейс (API) к данной СУБД построен на основе архитектуры REST, то есть сама база данных, отдельные записи, отображения и запросы — суть ресурсы, которые имеют уникальный адрес (URL) и поддерживают операции GET, PUT, POST, DELETE;
  • поэтому для взаимодействия с базой данных было написано много клиентских библиотек, в том числе на таких языках JavaScript[3], PHP, Ruby, Python и Erlang;
  • взаимодействие между отдельными компонентами СУБД, то есть с серверами представлений осуществляется опять-таки с помощью текстового протокола, а данные передаются в формате JSON; это позволило использовать различные языки программирования для написания этих компонентов — Java, Python, JavaScript и пр.

История развития

Проект CouchDB был принят в инкубатор Apache в феврале 2008 года. Несмотря на то, что CouchDB изначально предназначался для работы в операционной системе Linux, уже разработаны варианты этой системы для операционных систем Microsoft Windows[4] и Mac OS. Более того, дистрибутив Linux Ubuntu с 9.10 (Karmic Koala) поставляется с системой CouchDB.

Использование CouchDB

CouchDB используется во многих программных продуктах и на множестве веб-сайтов [5], в том числе:

Примечания

  1. Apache CouchDB™ website
  2. Серверы представлений: документация
  3. Плагин для jQuery
  4. CouchdDB: Windows binary installer
  5. Проекты использующие CouchDB
  6. Integrating CouchDB with Ubuntu One: Full Specification
  7. Raindrop Software Architecture

Литература

  • Anderson, J. Chris; Slater, Noah & Lehnardt, Jan (November 15, 2009), CouchDB: The Definitive Guide (1st ed.), http://guide.couchdb.org/index.html> 
  • Lennon, Joe (December 15, 2009), Beginning CouchDB (1st ed.), http://www.apress.com/book/view/9781430272373> 

Ссылки

  • CouchDB: A Case Study
  • Ricky Ho. CouchDB Implementation
  • Простая библиотека для работы с CouchDB на PHP5
  • Asynchronous CouchDB client for Java


На русском языке:

  • Map/Reduce своими руками — Apache CouchDb
  • CouchDB и его применимость
  • Обзор NoSQL систем
  • CouchDB для начинающих

Блоги разработчиков:

  • Damien Katz — ведущий программист CouchDB
  • Jan Lehnardt
  • Christopher Lenz

См. также

CouchDB.

© 2020–2023 lt304888.ru, Россия, Волжский, ул. Больничная 49, +7 (8443) 85-29-01