CouchDB

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].

Примечания

Литература

Ссылки


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

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

См. также

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

Wikimedia Foundation. 2010.

Игры ⚽ Нужно решить контрольную?

Полезное


Смотреть что такое "CouchDB" в других словарях:

  • CouchDB — Apache CouchDB CouchDB s Futon Administration Interface, User database Original author(s) Damien Katz, Jan Lehnardt, Noah Slater, Christopher Lenz …   Wikipedia

  • CouchDB — Apache CouchDB Administrationsoberfläche Futon …   Deutsch Wikipedia

  • CouchDB — Apache CouchDB …   Wikipédia en Français

  • Cloudant — is a Massachusetts based enterprise software company which provides an open source non relational, distributed database service of the same name that requires zero configuration. Cloudant is based on the Apache backed CouchDB project and the… …   Wikipedia

  • Couchbase — is a Silicon Valley based enterprise software company[1] which offers product Couchbase (a database combining the leading NoSQL data management technologies CouchDB [of the Apache Software Foundation[2]], Membase, and Memcached) [3], plus sells… …   Wikipedia

  • Cloud database — A cloud database is a database running on Cloud Computing platform, such as Amazon EC2, GoGrid and Rackspace. There are two common deployment models: Users can run databases on the cloud independently, using a Virtual Machine image, or they can… …   Wikipedia

  • Datenbank (Liste) — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Datenbankliste — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • Liste von Datenbanken — Die Liste der Datenbankmanagementsysteme umfasst Software zur Verwaltung von Datenbanken, vor allen von relationalen Datenbanken, objektorientierten Datenbanken und objektrelationalen Datenbanken. Inhaltsverzeichnis 0 9 A B C D E F G H I J …   Deutsch Wikipedia

  • NoSQL — En informatique, NoSQL est un buzzword pour désigner une catégorie de système de gestion de base de données (abr. SGBD) destinés à manipuler des bases de données géantes pour des sites web de très grande audience tels que Google, Amazon.com,… …   Wikipédia en Français


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»