Выпуск документ-ориентированной БД Apache CouchDB 2.0
После нескольких лет разработки представлен релиз распределенной, документ-ориентированной базы данных Apache CouchDB 2.0.0, относящейся к классу NoSQL-систем. Выпуск 2.0 вобрал в себя улучшения, разработанные в рамках проекта BigCouch, который развивался компанией Cloudant и был передан Фонду Apache после поглощения компанией IBM. Исходные тексты проекта распространяются под лицензией Apache 2.0.
Запросы к CouchDB и индексация данных могут выполняться в соответствии с парадигмой MapReduce, используя для формирования логики выборки данных язык JavaScript. Ядро системы написано на языке Erlang, оптимизированного для создания обслуживающих множество параллельных запросов распределенных систем. View-сервер написан на языке Си и базируется на JavaScript-движке Mozilla Spidermonkey. Доступ к БД производится при помощи протокола HTTP с использованием RESTful JSON API, что позволяет обращаться к данным в том числе из выполняемых в браузере web-приложений.
В качестве единицы хранения данных выступает документ, имеющий уникальный идентификатор, версию и содержащий произвольный набор именованных полей в формате ключ/значение. Для организации псевдо-структурированного набора данных из произвольных документов (агрегирования и формирования выборок) применяется концепция формирования представлений (view), для определения которых используется язык JavaScript. На JavaScript также можно определять функции для проверки корректности данных при добавлении новых документов в рамках определенного представления.
CouchDB хранит данные в формате упорядоченного списка и позволяет производить частичную репликацию данных между несколькими БД в режиме «мастер-мастер» с одновременным обнаружением и разрешением конфликтных ситуаций. Каждый сервер хранит свой локальный набор данных, синхронизированный с другими серверами, которые могут переводиться в offline-режим и периодически реплицировать изменения. В частности, данная возможность делает CouchDB привлекательным решением для организации синхронизации настроек программ между разными компьютерами. Решения на базе CouchDB внедрены в таких компаниях как BBC, Apple и CERN.
Основные улучшения, добавленные в CouchDB 2.0:
- Добавлена встроенная поддержка полноценных кластерных возможностей, позволяющих создавать системы высокой доступности и масштабировать CouchDB для создания очень больших хранилищ или распараллеливания запросов в высоконагруженных систмемах. Кластеризация реализована с использованием методов, применяемых в движке Amazon Dynamo, и позволяет развернуть на нескольких узлах единое хранилище CouchDB, выглядящее для клиентских систем как один большой сервер CouchDB;
- Несмотря на значительные внутренние изменения удалось сохранить совместимость с прошлыми версиями для 99% вызовов API, что позволяет использовать CouchDB 2.0 с большинством старых приложений;
- Представлен новый язык оформления запросов «Mango», который значительно быстрее и проще ранее предлагаемой системы JavaScript-представлений. Запросы в Mango формируются с использованием JSON;
- Значительная оптимизация производительности, особенно заметная при выполнения операций репликации и упаковки;
- Полностью переписан интерфейс администратора, который обзавёлся современным внешним видом (используется React.js и Flux) и новыми возможностями. Например, добавлены средства для разрешения конфликтов между документами, создания и использования индексов, настройки кластера.
© OpenNet