Анонсирован релиз проекта Couchbase Server 2.0, в рамках которого развивается NoSQL-система, предоставляющая похожие на Apache CouchDB средства для создания документ-ориентированных баз данных в сочетании с напоминающими Membase хранилищами в формате ключ-значение. При этом, благодаря поддержке стандартного протокола memcached, система остаётся совместимой с большим число уже имеющихся приложений и может выступать в роли прозрачной замены других NoSQL-систем.

Система отличается высокой масштабируемостью и позволяет организовать хранение данных как на одном сервере, так и в форме распределённой системы, размещающей данные поверх группы серверов. Couchbase Server содержит встроенные средства для обеспечения высокой доступности и поддерживает функции самовосстановления в случае сбоя обслуживающих хранилище узлов (данные могут дублироваться на разных узлах). Особенностью Couchbase Server 2.0 является поддержка технологии XDCR (Cross Data Center Replication), позволяющей не только разнести хранилище из нескольких узлов в локальной сети, но и развернуть сегментированное хранилище, копии которого разнесены по разным датацентрам и приближены к конечным пользователям. При этом система остаётся максимально живучей, даже при выходе из строя целого дата-центра, данные можно получить из оставшихся в работе частей. Система поддерживает как однонаправленные ("master-slave"), так и двунаправленные ("master-master") режимы репликации.

Помимо возможности хранения данных в формате ключ/значения, Couchbase Server позволяет использовать концепцию документ-ориентированного хранилища, в котором в качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Используемая в Couchbase Server модель данных позволяет определять документы в формате JSON, снимая с разработчика необходимость определения схемы хранения. Поддерживается создание первичных и вторичных индексов, а также индексов по нескольким ключам. Для дополнительной оптимизации производительности применяются встроенные механизмы кэширования в оперативной памяти и средства автоматической генерации индексов.

Запросы и индексация данных в Couchbase Server могут выполняться в соответствии с парадигмой MapReduce, используя для формирования логики выборки данных язык JavaScript. Для организации псевдо-структурированного набора данных из произвольных документов (агрегирования и формирования выборок) применяется концепция формирования представлений (view), для определения и проверки корректности которых используется язык JavaScript.

Проект создан объединённой командой разработчиков CouchDB и Membase, основанной после слияния компании CouchOne и Membase. Отбросив детали, Couchbase Server можно рассматривать как бэкенд хранилища на основе технологий Membase, поверх которого добавлены движки для индексации и формирования запросов CouchDB. Таким образом удалось добиться совместимости с Apache CouchDB на уровне оформления запросов и индексов, и совместимости с Membase на уровне протокола доступа к данным и управляющего API. Критичные к производительности части CouchDB были переписаны на языке C++, но многие подсистемы по-прежнему остаются на языке Erlang. Техническим лидером проекта выступил Дэмиен Катц (Damian Katz), основатель документ-ориентированной базы данных CouchDB.

Код системы распространяется под лицензией Apache. Помимо полностью открытого варианта Couchbase Server 2.0 поставляется коммерческий продукт на его основе, отличающийся предоставлением технической поддержки, наличием канала оперативной доставки обновлений и более интенсивным тестированием сборок (кодовая база для коммерческой и свободной редакции полностью идентична). Для разработки приложений на языках Java, Ruby, .NET, C, PHP и Python подготовлены специальные SDK.

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