После года разработки представлен (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.me/opennews/art.shtml?num=39981) средства для создания документ-ориентированных баз данных в сочетании с напоминающими Membase (https://www.opennet.me/opennews/art.shtml?num=28267) хранилищами в формате ключ-значение. При этом, благодаря поддержке стандартного протокола memcached, система остаётся совместимой с большим числом уже имеющихся приложений и может выступать в роли прозрачной замены других NoSQL-систем. Код системы распространяется (http://www.couchbase.com/couchbase-open-source-project) под лицензией Apache.Проект создан объединённой командой разработчиков CouchDB и Membase, основанной после слияния (https://www.opennet.me/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.me/opennews/art.shtml?num=43108
атомарный select-update тут есть? подключение новых серверов на ходу и решардинг? если не тут то где такое есть?
В RethinkDB вроде есть
> В RethinkDB вроде естьК сожалению туда скорость не завезли. Адовые задержки даже на смешных датасетах. Пионерия, чо.
пишут что compare and swap (CAS) для одного ключа поддерживается, множество ключей атомарно не изменить. это уже что-то. как у этого CouchDB с хранением ключа? когда я делаю insert/update и питание теряется данные теряются?
так же есть lock записи с таймаутом. не ясно нафига с таймаутом - нужно просто по обрыву соединения lock снимать.
> Для разработки приложений на языках Java, Ruby, .NET, C/C++, PHP, Node.js и PythonНайдите лишнего.
естественно .NET
> комбинирующий простоту SQL с гибкостью JSONЭм... комбинирующий простоту JSON с гибкостью SQL? :)
>> комбинирующий простоту SQL с гибкостью JSON
>
> Эм... комбинирующий простоту JSON с гибкостью SQL? :)комбинирующий простоту JSON с гиблостью SQL?
> CouchDB, memcached и Membase"Павлино-утко-ёж" (цэ)