Вышел релиз распределенной, документ-ориентированной базы данных Apache CouchDB, относящейся к классу NoSQL-систем. Запросы к CouchDB и индексация данных могут выполняться в соответствии с парадигмой MapReduce, используя для формирования логики выборки данных язык JavaScript. Ядро системы написано на языке Erlang, оптимизированного для создания обслуживающих множество параллельных запросов распределенных систем. View-сервер написан на языке Си и базируется на JavaScript-движке Mozilla Spidermonkey. Исходные тексты проекта распространяются под лицензией Apache 2.

Доступ к БД производится при помощи протокола HTTP с использованием RESTful JSON API. В качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Для организации псевдо-структурированного набора данных из произвольных документов (агрегирования и формирования выборок) применяется концепция формирования представлений (view), для определения которых используется язык JavaScript. На JavaScript также можно определять функции для проверки корректности данных при добавлении новых документов в рамках определенного представления.

CouchDB хранит данные в формате упорядоченного списка и позволяет производить частичную репликацию данных между несколькими БД в режиме «мастер-мастер» с одновременным обнаружением и разрешением конфликтных ситуаций. Каждый сервер хранит свой локальный набор данных, синхронизированный с другими серверами, которые могут переводиться в offline-режим и периодически реплицировать изменения. В частности, данная возможность делает CouchDB привлекательным решением для организации синхронизации настроек программ между разными компьютерами, что уже используется для синхронизации содержимого адресной книги ПК c мобильным телефоном через сервис Ubuntu One. Решения на базе CouchDB внедрены в таких компаниях как BBC, Apple и CERN.

Основные улучшения, добавленные в CouchDB 1.1.0:

  • Нативная поддержка SSL;
  • Поддержка обработки HTTP-заголовков группы "range" для отдачи прикрепленных данных не с начала файла, а с указанной позиции (например, позволяет организовать докачку после обрыва соединения);
  • Добавлена опция конфигурации для включения TCP_NODELAY;
  • Добавлены встроенные фильтры для базы "_changes": "_doc_ids" и "_design";
  • В описании виртуальных хостов теперь допустимо использование масок;
  • Обеспечена более гранулированная поддержка ETag для представлений;
  • Увеличена гибкость системы подмены URL (URL rewriter);
  • Добавлен модуль OS Process для управления фоновыми процессами вне CouchDB;
  • Добавлен обработчик HTTP Proxy;
  • Добавлена база "_replicator" для управления репликацией;
  • Множественные микро-оптимизации для увеличения производительности операций чтения данных;
  • В функцию map добавлена поддержка CommonJS;
  • Добавлена используемая в запросах опция "stale=update_after", дающая возможность обновить представление после возврата состояния "stale=ok";
  • В web-интерфейс Futon добавлена функция изменения пароля.


Источник: http://www.opennet.ru/opennews/art.shtml?num=30807