После года разработки представлен (http://blog.couchbase.com/2015/october/announcing-couchbase-...) релиз СУБД Couchbase Server 4.0 (http://www.couchbase.com/couchbase-server/overview), которая относится к классу NoSQL-систем и предоставляет похожие на Apache CouchDB (https://www.opennet.dev/opennews/art.shtml?num=39981) средства для создания документ-ориентированных баз данных в сочетании с напоминающими Membase (https://www.opennet.dev/opennews/art.shtml?num=28267) хранилищами в формате ключ-значение. При этом, благодаря поддержке стандартного протокола memcached, система остаётся совместимой с большим числом уже имеющихся приложений и может выступать в роли прозрачной замены других NoSQL-систем. Код системы распространяется (http://www.couchbase.com/couchbase-open-source-project) под лицензией Apache.Проект создан объединённой командой разработчиков CouchDB и Membase, основанной после слияния (https://www.opennet.dev/opennews/art.shtml?num=29528) компании CouchOne и Membase. Couchbase Server можно рассматривать как бэкенд хранилища на основе технологий Membase, поверх которого добавлены движки для индексации и формирования запросов CouchDB. Таким образом удалось добиться совместимости с Apache CouchDB на уровне оформления запросов и индексов, и совместимости с Membase на уровне протокола доступа к данным и управляющего API. Критичные к производительности части CouchDB были переписаны на языке C++, но многие подсистемы по-прежнему остаются на языке Erlang. Для разработки приложений на языках Java, Ruby, .NET, C/C++, PHP, Node.js и Python подготовлены специальные SDK (http://www.couchbase.com/develop).
Couchbase Server отличается высокой масштабируемостью и позволяет организовать хранение данных как на одном сервере, так и в форме распределённой системы, размещающей данные поверх группы серверов. В том числе имеются встроенные средства для обеспечения высокой доступности, самовосстановления в случае сбоя обслуживающих хранилище узлов (данные могут дублироваться на разных узлах) и построения сегментированных хранилищ, копии которых разнесены по разным датацентрам и приближены к конечным пользователям. Поддерживаются как однонаправленные ("master-slave"), так и двунаправленные ("master-master") режимы репликации. Поддерживается создание первичных и вторичных индексов, а также индексов по нескольким ключам. Для дополнительной оптимизации производительности применяются встроенные механизмы кэширования в оперативной памяти и средства автоматической генерации индексов.
Помимо возможности хранения данных в формате ключ/значения, Couchbase Server позволяет использовать концепцию документ-ориентированного хранилища, в котором в качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Используемая в Couchbase Server модель данных позволяет определять документы в формате JSON, снимая с разработчика необходимость определения схемы хранения. Запросы и индексация данных могут выполняться в соответствии с парадигмой MapReduce, а также с использованием SQL-подобного языка запросов. Для организации псевдо-структурированного набора данных из произвольных документов предлагается концепция формирования представлений (view). Для формирования логики выборки используется язык JavaScript.
Основные новшества (http://developer.couchbase.com/documentation/server/4.0/intr...):
- Представлен язык формирования запросов N1QL (http://developer.couchbase.com/documentation/server/4.0/n1ql...), комбинирующий простоту SQL с гибкостью JSON. Доступны выражения SELECT, DELETE, INSERT, UPDATE, UPSERT, CREATE/DROP INDEX, агрегатные функции, слияния запросов (Join), подзапросы. При этом модель хранения и формат вывода определяются представлением JSON. Пример запроса:
<font color="#461b7e">
SELECT name, brewery_id from 'beer-sample' WHERE brewery_id IS NOT MISSING LIMIT 2;
</font>
- Новый движок хранения ForestDB, использующий структуры B+Trie (в штатном движке Couchstore применяется B+tree) и поддерживающий собственный локальный кэш. Из достоинств ForestDB отмечается более эффективное хранение ключей большого размера и большого числа записией;
- Новый режим индексации данных с использованием вторичных GSI-индексов (Global Secondary Indexing) для N1QL-запросов. GSI-индексы подходят для использования в интерактивных приложениях, требующих минимального времени отклика;
- Поддержка связывания (http://www.simba.com/couchbase/setting-up-couchbase-as-a-lin...) Couchbase Server с другими СУБД через драйверы ODBC/JDBC;
- Средства для манипуляции географическими координатами в запросах для приложений, учитывающих местоположение;
- Поддержка новых фреймворков и языков: LINQ, Spring, Go;
- Режим многомерного масштабирования (MDS, Multi-Dimensional Scaling (http://developer.couchbase.com/documentation/server/4.0/arch...)) для равномерного распределения ресурсов в кластере в привязке и имеющейся нагрузке. При MDS ресурсы для запросов, индексов и хранения данных распределяются отдельно, в зависимости от реальной потребности;
- Встроенные средства идентификации (http://developer.couchbase.com/documentation/server/4.0/secu...) через интеграцию с LDAP;
- Средства (http://developer.couchbase.com/documentation/server/4.0/secu...) аудита безопасности, позволяющие проконтролировать кто и когда выполнял административные действия с СУБД;
- Улучшенные (http://developer.couchbase.com/documentation/server/4.0/xdcr...) средства репликации между датацентрами, например, доступны средства отфильтровывания только необходимых в данном регионе данных;
- Поддержка (http://www.couchbase.com/press-releases/couchbase-delivers-r...) подключения к хранилищам Spark Core, Spark SQL, Spark Streaming, Kafka и Sqoop;
- Средства для быстрого развёртывания рабочих конфигураций в контейнерах Docker (http://developer.couchbase.com/documentation/server/4.0/inst...) и облачных сервисах AWS, Azure, Joyent, Cisco и Verizon. Формирование пакетов для SUSE Enterprise Linux 11 и Oracle Linux 6.
URL: http://blog.couchbase.com/2015/october/announcing-couchbase-...
Новость: http://www.opennet.dev/opennews/art.shtml?num=43108