CouchDB

[править]
Материал из Википедии — свободной энциклопедии
Перейти к: навигация, поиск
Apache CouchDB
Couchdb screenshot.png
Тип

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

Автор

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 встроен производительный веб-сервер, а программный код, как и данные, сохраняется в той же базе данных. Для автоматизации работы с приложениями 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], в том числе:

  • UbuntuOne, Firefox, TomBoy, Akonadi, Evolution — для синхронизации адресов, заметок и закладок[6].
  • Mozilla Raindrop — агрегатор сообщений электронной почты, социальных сетей, систем обмена мгновенными сообщениями (Skype, Jabber)[7].

Примечания [править]

Литература [править]

Ссылки [править]


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

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

См. также [править]