Новая современная СУБД SoQoL. Посмотрим на неё внимательнее
Вышел первый коммерческий релиз СУБД реляционного типа — SoQoL версии 3.0. В русском варианте название СУБД звучит как СОКОЛ.
Что это за птица?
Для начала нужно сказать, что название у СУБД появилось благодаря языку структурированных запросов SQL и красивой, стремительной птице — соколу.
Стоит отметить, что SoQoL — российская реляционная СУБД общего назначения с современной архитектурой, выстроенной с нуля, а не на продуктах с открытым исходным кодом.
А теперь кратко и по существу.
Архитектура
СУБД ЛИНТЕР SoQoL является классической дисковой СУБД с точки зрения пользователя — система основана на дисковом хранилище вида B-Tree и WAL-журнале (Write-Ahead Logging).
Архитектура SoQoL в работе с данными поддерживает от самого нижнего до самого верхнего уровня неблокирующий подход, реализует все требования ACID без исключений и при этом SoQoL не in-memory СУБД — она работает не только с данными в оперативной памяти, но и с данными, размещенными на диске. Это обеспечивает высокую эффективность работы системы при конкурентной обработке данных.
Архитектура СУБД SoQoL ориентирована на генерацию и исполнение как IR (Intermediate Representation) кода, так и нативного кода.
Среда исполнения
Сейчас СУБД SoQoL:
работает в среде Linux x86–64 (дистрибутивы, бинарно совместимые с Red Hat8: Ubuntu 18.04 LTS, RHEL 8.0, Debian 10, Alt Linux 9.0, AstraLinux 1.7) и Windows10 (и выше);
тестировалась в среде ОС Эльбрус;
находится в процессе подтверждения совместимости с российскими операционными системами — Альт, AstraLinux, РОСА, РедОС и др.
Системные требования
Минимальные требования выглядят так:
Технические характеристики СУБД
Кратко:
максимальная длина поля (кроме BLOB/CLOB полей) — до 8000 байт. Размер BLOB/CLOB-значения — до 2^64 байт;
максимальная длина имени таблицы и поля — до 64 байт;
максимальное число строк в таблице ограничено общим размером таблицы — 2^64;
максимальное число индексов в таблице — явно не ограничено;
максимальное число таблиц в запросе (на одном уровне) ограничено памятью, доступной при обработки запроса;
максимальное число всех объектов БД (пользователей, таблиц, представлений и т.д.) — до 2^48
Администрирование
В СУБД SoQoL управление пользовательскими базами данных выполняется из сервиса, предоставляемого сервером СУБД. Для сервиса управления, так же как и для каждой пользовательской БД имеется отдельная точка подключения.
Администрирование в SoQoL включает в себя организацию и управление базами данных, обеспечение их доступности, производительности и безопасности. Таким образом:
администратору сервиса доступны для выполнения команды манипуляций с каждой базой данных, которые позволяют: создавать и удалять БД, запускать и модифицировать БД, останавливать БД или сервис, перезапускать сервер и т.д.
администратору БД доступны для выполнения команды управления хранилищем данных (создание и управление объектами базы данных) и безопасностью (управление доступа к БД и её объектам).
В СУБД реализованы вспомогательные утилиты для:
исполнения запросов к СУБД в интерактивном и пакетном режиме (vsql_console);
импорта / экспорта данных (vsql_copy).
Интерфейсы
Сейчас в СУБД SoQoL поддерживаются программные интерфейсы ODBC, JDBC и PHP.
Поддержка SoQoL«ом стандартных интерфейсов позволяет подключать внешние визуальные инструменты для работы с базами данных, например, DBeaver.
Типы данных
В этом пункте все максимально привычно. В СУБД SoQoL версии 3.0.0 реализованы следующие типы данных:
строковые — CHAR, VARCHAR, CLOB. Здесь стоит сказать, что в текущей версии тип CHAR реализован как синоним VARCHAR;
для хранения дат — DATE, TIMESTAMP и DATETIME. Последний реализован как синоним типа DATE;
числовые — NUMBER, SMALLINT, INTEGER, INT, BIGINT, NUMERIC, DECIMAL, FLOAT, DOUBLE PRECISION, REAL. Здесь важно отметить, что часть указанных числовых типов реализованы как синонимы NUMBER (38,0), а другая часть как NUMBER [(precision [, scale])];
логический — BOOLEAN;
двоичные — BINARY, VARBINARY, BLOB, RAW. Последний реализован как синоним типа VARBINARY.
Операции
В СУБД SoQoL поддерживается большое количество операций, которые можно разделить на группы:
строковые — конкатенация;
логические — «AND», «OR», «NOT»;
арифметические — сложение, вычитание, деление, умножение, а также унарные »+» (плюс) и »-» (минус);
операторы сравнения — »=» (равно),»<" (меньше), ">» (больше), «BETWEEN», «LIKE», «EXISTS» и многие другие.
Язык запросов
Язык запросов в СУБД SoQoL включает в себя набор стандартных DDL, DML, DCL команд языка SQL, таких как:
команды для создания, изменения и удаления объектов базы данных — CREATE, ALTER, DROP;
команды манипулирования данными — SELECT, INSERT, UPDATE, DELETE;
для управления доступом — GRANT, REVOKE и другие.
Кроме того, в SoQoL дополнительные специализированные команды, например:
EXPLAIN — команда для получения плана выполнения запроса, построенного планировщиком СУБД;
ANALYZE TABLE — команда для обновления статистики таблицы базы данных, результаты которой впоследствии использует планировщик запросов;
и т.д.
Объекты базы данных
СУБД SoQoL поддерживает различные объекты базы данных. Например: таблицы (постоянные и временные), представления, генераторы последовательности, индексы, схемы, пользователей, привилегии и роли. Здесь стоит сказать, что таблицы в SoQoL основаны на кластеризованных индексах.
Функции
В SoQoL поддерживаются встроенные агрегатные и скалярные функции, которые могут использоваться для обработки данных при выполнении запросов.
Из агрегатных функций поддерживаются наиболее часто применяемые — AVG, COUNT, MAX, MIN, STRING_AGG, SUM.
Из скалярных функций поддерживается набор наиболее популярных:
функции работы со строками, например, функции CONCAT (для объединения строк), SUBSTR (для извлечения подстроки), INSTR (для поиска подстроки) и т. д.
функции работы с числами, например, функции для округления (ROUND), вычисления абсолютного значения (ABS), определения наибольшего и наименьшего значения () и т.д.
функции работы с датами и временем, например: извлечения части даты (EXTRACT), форматирования даты (TO_CHAR) и др.
функции для работы с NULL значениями, например, функции для проверки на NULL (NVL), замены NULL значений (COALESCE) и т. д.
функции работы с регистром символов, например, функции для преобразования в верхний регистр (UPPER), нижний регистр (LOWER), и другие.
Ограничения целостности
В SoQoL существует несколько типов ограничений целостности, которые можно применять к таблицам в базе данных. Например:
NOT NULL;
PRIMARY KEY;
CLUSTERED KEY;
FOREIGN KEY;
UNIQUE;
CHECK.
Также в СУБД SoQoL реализован процедурный язык PL/SOQOL, имеющий собственный синтаксис языка хранимых процедур, близкий к PL/SQL.
Процедурный язык наследует все типы данных, функции, операции, которые используются в SQL. Операторы PL/SOQOL и SQL-команды транслируются в однородный код, что позволяет устранить переключения контекста исполнения при выполнении поочередно операторов PL/SOQOL и SQL-команд.
В языке PL/SOQOL можно использовать следующие операторы:
присваивания значения — »:=»;
управления ходом выполнения — IF-THEN-ELSE, CASE, LOOP, WHILE, FOR, EXIT, CONTINUE;
выборки данных — SELECT INTO, FETCH INTO;
обработки исключений — EXCEPTION, RAISE;
для работы с курсорами — OPEN, CLOSE.
Про права и доступы
В СУБД SoQoL есть предустановленный набор привилегий (системных и объектных) и ролей. Администратор БД может создавать новые роли и включать в них как системные, так и объектные привилегии.
В текущей версии SoQoL реализован дискреционный контроль доступа: администратор базы данных управляет предоставлением и отзывом привилегий и ролей. Если пользователь БД не обладает правами администратора, то он может предоставить другим пользователям только объектные привилегии на объекты в своих схемах.
В ближайшее время в СУБД СОКОЛ запланирована реализация и мандатного контроля доступа.
Техническая поддержка
Компания-разработчик — российская и есть возможность прямого взаимодействия с ней. Техническая поддержка проводится на родном русском языке и есть возможность физического присутствия технического специалиста из команды разработки СУБД в регионе клиента.
Варианты технической поддержки зависят от выбранного варианта лицензии.
Сейчас для всех техническая поддержка работает в формате вопрос-ответ в телеграме.
О планах
В горизонте пары лет планируется сертификация СУБД на соответствие требованиям ФСТЭК и Министерства обороны России.
Если смотреть крупными блоками, то кроме сертификации, для дальнейшего развития СУБД планируется:
развитие функциональных возможностей;
развитие интеграции с облаками;
повышение уровня надёжности и безопасности и т.д.
На этом пока всё. Всем спасибо за внимание!