Доступна открытая СУБД 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;


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')

Источники

править


 
 
Creative Commons
Эта статья содержит материалы из статьи «Доступна открытая СУБД CrateDB 1.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.