Выпуск СУБД Couchbase Server 4.0, сочетающей возможности CouchDB, memcached и Membase
После года разработки представлен релиз СУБД Couchbase Server 4.0, которая относится к классу NoSQL-систем и предоставляет похожие на Apache CouchDB средства для создания документ-ориентированных баз данных в сочетании с напоминающими Membase хранилищами в формате ключ-значение. При этом, благодаря поддержке стандартного протокола memcached, система остаётся совместимой с большим числом уже имеющихся приложений и может выступать в роли прозрачной замены других NoSQL-систем. Код системы распространяется под лицензией Apache.
Проект создан объединённой командой разработчиков CouchDB и Membase, основанной после слияния компании CouchOne и Membase. Couchbase Server можно рассматривать как бэкенд хранилища на основе технологий Membase, поверх которого добавлены движки для индексации и формирования запросов CouchDB. Таким образом удалось добиться совместимости с Apache CouchDB на уровне оформления запросов и индексов, и совместимости с Membase на уровне протокола доступа к данным и управляющего API. Критичные к производительности части CouchDB были переписаны на языке C++, но многие подсистемы по-прежнему остаются на языке Erlang. Для разработки приложений на языках Java, Ruby, .NET, C/C++, PHP, Node.js и Python подготовлены специальные SDK.
Couchbase Server отличается высокой масштабируемостью и позволяет организовать хранение данных как на одном сервере, так и в форме распределённой системы, размещающей данные поверх группы серверов. В том числе имеются встроенные средства для обеспечения высокой доступности, самовосстановления в случае сбоя обслуживающих хранилище узлов (данные могут дублироваться на разных узлах) и построения сегментированных хранилищ, копии которых разнесены по разным датацентрам и приближены к конечным пользователям. Поддерживаются как однонаправленные ("master-slave"), так и двунаправленные ("master-master") режимы репликации. Поддерживается создание первичных и вторичных индексов, а также индексов по нескольким ключам. Для дополнительной оптимизации производительности применяются встроенные механизмы кэширования в оперативной памяти и средства автоматической генерации индексов.
Помимо возможности хранения данных в формате ключ/значения, Couchbase Server позволяет использовать концепцию документ-ориентированного хранилища, в котором в качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Используемая в Couchbase Server модель данных позволяет определять документы в формате JSON, снимая с разработчика необходимость определения схемы хранения. Запросы и индексация данных могут выполняться в соответствии с парадигмой MapReduce, а также с использованием SQL-подобного языка запросов. Для организации псевдо-структурированного набора данных из произвольных документов предлагается концепция формирования представлений (view). Для формирования логики выборки используется язык JavaScript.
Основные новшества:
- Представлен язык формирования запросов N1QL, комбинирующий простоту SQL с гибкостью JSON. Доступны выражения SELECT, DELETE, INSERT, UPDATE, UPSERT, CREATE/DROP INDEX, агрегатные функции, слияния запросов (Join), подзапросы. При этом модель хранения и формат вывода определяются представлением JSON. Пример запроса:
SELECT name, brewery_id from 'beer-sample' WHERE brewery_id IS NOT MISSING LIMIT 2;
- Новый движок хранения ForestDB, использующий структуры B+Trie (в штатном движке Couchstore применяется B+tree) и поддерживающий собственный локальный кэш. Из достоинств ForestDB отмечается более эффективное хранение ключей большого размера и большого числа записией;
- Новый режим индексации данных с использованием вторичных GSI-индексов (Global Secondary Indexing) для N1QL-запросов. GSI-индексы подходят для использования в интерактивных приложениях, требующих минимального времени отклика;
- Поддержка связывания Couchbase Server с другими СУБД через драйверы ODBC/JDBC;
- Средства для манипуляции географическими координатами в запросах для приложений, учитывающих местоположение;
- Поддержка новых фреймворков и языков: LINQ, Spring, Go;
- Режим многомерного масштабирования (MDS, Multi-Dimensional Scaling) для равномерного распределения ресурсов в кластере в привязке и имеющейся нагрузке. При MDS ресурсы для запросов, индексов и хранения данных распределяются отдельно, в зависимости от реальной потребности;
- Встроенные средства идентификации через интеграцию с LDAP;
- Средства аудита безопасности, позволяющие проконтролировать кто и когда выполнял административные действия с СУБД;
- Улучшенные средства репликации между датацентрами, например, доступны средства отфильтровывания только необходимых в данном регионе данных;
- Поддержка подключения к хранилищам Spark Core, Spark SQL, Spark Streaming, Kafka и Sqoop;
- Средства для быстрого развёртывания рабочих конфигураций в контейнерах Docker и облачных сервисах AWS, Azure, Joyent, Cisco и Verizon. Формирование пакетов для SUSE Enterprise Linux 11 и Oracle Linux 6.
© OpenNet