Доступна открытая СУБД CrateDB 1.0
17 декабря 2016 года
После трёх лет разработки состоялся релиз проекта CrateDB 1.0, в рамках которого развивается открытая, быстрая и масштабируемая СУБД с поддержкой выполнения SQL-запросов и встроенными возможностями полнотекстового поиска. Версия 1.0 позиционируется как первый выпуск, достигший должного уровня стабильности и пригодный для промышленного использования. Исходные тексты CrateDB написаны на языке Java и распространяются под лицензией Apache 2.0.
СУБД позволяет использовать SQL как для структурированных, так и для неструктурированных данных. Запросы могут выполняться распределённо, охватывая данные, хранящиеся на нескольких узлах, при этом для таких запросов обеспечивается производительность, близкая к обработке в реальном режиме времени. CrateDB оптимально подходит для хранения и формирования выборок для различных автоматически генерируемых данных, таких как логи, результаты периодического опроса датчиков и параметры сетевого трафика.
Особенности и возможности CrateDB:
- Возможность подключения к СУБД с использованием бинарного протокола PostgreSQL. CrateDB на уровне протокола эмулирует PostgreSQL 9.5 и позволяет с некоторыми ограничениями (например, не поддерживаются транзакции) использовать написанное для PostgreSQL клиентское ПО;
- Встроенный управляющий web-интерфейс (http://localhost:4200/admin/) и CLI-клиент crash;
- Средства для обеспечения высокой доступности и масштабируемости - возможно распределённое хранение данных с шардингом на несколько узлов и хранением нескольких копий на разных узлах. Репликация выполняется автоматически, уровень дубликатов задаётся в конфигурации БД. В случае сбоя или вывода узла для обновления, хранимая на нём информация замещается данными с других узлов;
- Хорошая масштабируемость - для расширения хранилища или увеличения производительности достаточно просто добавить в кластер СУБД дополнительные узлы и СУБД сама выполнит автоматическую ребалансировку данных. Для распараллеливания операций в CrateDB применяется архитектура без разделения ресурсов ( shared-nothing - каждый узел независим и самодостаточен, не использует централизованную информацию о состоянии и не конкурирует с другими узлами);
- Эффективная система кэширования полей, позволяющая выполнять запросы, в том числе с агрегатными функциями, слиянием таблиц и подзапросами, со скоростью обращения данным в оперативной памяти;
- Высокая производительность операций добавления данных (INSERT). На типовом оборудовании обеспечивается производительность на уровне 40 тысяч операций INSERT в секунду на один узел в кластере. Запросы выполняются с предсказуемой производительностью за считанные миллисекунды, независимо от наличия активности на запись;
- Интерфейсы для определения схемы хранения данных и структуры метаданнных. Поддержка как реляционных данных, так и вложенных документов JSON и блобов. Возможность обращения к атрибутам JSON из SQL и хранение в форме блобов изображений, видео и прочих бинарных данных;
- Средства аналитики для выявления аномалий и тенденций во временных рядах. Для ускорения производительности и удобства работы поддерживается автоматическое партицирование данных за разные интервалы времени (каждый интервал представлен как виртуальная таблица);
- CrateDB не поддерживает ACID-транзакции и обеспечивает непротиворечивость на уровне строк через использование модели "read-after-write" и оптимистическое управление параллельной обработкой данных ( OCC - Optimistic Concurrency Control), в котором для выявления и разрешения конфликтов используется внутреннее версионирование;
- Встроенные средства инкрементального резервного копирования БД, позволяющие сохранять снапшоты со срезом данных на текущий момент времени;
- Наличие условных и математических функций, а также типов для задания местоположения (geo_point и geo_shape) и функций для вычисления расстояний, пересечений и вхождений областей;
- Возможность создания узлов, доступных только на чтение;
- Поддержка подзапросов (вложенные SELECT);
select average_price from ( select avg(price) as average_price from articles) as t order by average_price;
- Поддержка внешних слияний ( LEFT/RIGHT/FULL/CROSS JOIN);
select e.name || ' ' || e.surname as employee, coalesce(d.name, '') as manager_of_department from employees e left join departments d on e.id = d.manager_id order by e.id;
- Поддержка определения полуструктурированных схем хранения с динамически добавляемыми в процессе работы полями:
create table demo ( name string, obj object (dynamic) as ( age int ), tags array (string)); insert into demo (name, obj, tags) values ('Trillian', {age = 39, gender='female'}, // поле gender явно не определено в схеме и создаётся динамически ['mathematician', 'astrophysicist']); select * from demo where obj['gender'] = 'female';
- Встроенные средства полнотекстового поиска на базе движка Lucene. Например, можно задавать вес для совпадений в определённых полях:
select title from wikipedia where match((title 1.5, text 1.0), 'Test')
Источники
править
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.