Pull to refresh

Новая современная СУБД SoQoL. Посмотрим на неё внимательнее

Level of difficultyMedium
Reading time6 min
Views12K

Вышел первый коммерческий релиз СУБД реляционного типа — 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, РОСА, РедОС и др.

Системные требования

Минимальные требования выглядят так:

  • 512 МБ оперативной памяти для ядра СУБД;

  • 64-битный процессор с поддержкой SSE4.1.

Технические характеристики СУБД

Кратко:

  • максимальная длина поля (кроме 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 реализован дискреционный контроль доступа: администратор базы данных управляет предоставлением и отзывом привилегий и ролей. Если пользователь БД не обладает правами администратора, то он может предоставить другим пользователям только объектные привилегии на объекты в своих схемах.

В ближайшее время в СУБД СОКОЛ запланирована реализация и мандатного контроля доступа.

Техническая поддержка

Компания-разработчик — российская и есть возможность прямого взаимодействия с ней. Техническая поддержка проводится на родном русском языке и есть возможность физического присутствия технического специалиста из команды разработки СУБД в регионе клиента.

Варианты технической поддержки зависят от выбранного варианта лицензии.

Сейчас для всех техническая поддержка работает в формате вопрос-ответ в телеграме.

О планах

В горизонте пары лет планируется сертификация СУБД на соответствие требованиям ФСТЭК и Министерства обороны России.

Если смотреть крупными блоками, то кроме сертификации, для дальнейшего развития СУБД планируется:

  • развитие функциональных возможностей;

  • развитие интеграции с облаками;

  • повышение уровня надёжности и безопасности и т.д.

На этом пока всё. Всем спасибо за внимание!

Tags:
Hubs:
Total votes 23: ↑19 and ↓4+15
Comments81

Articles