Digital Q.DataBase 🎙
650 subscribers
85 photos
4 videos
2 files
85 links
🟣Уникальный СУБД канал
Digital Q.DataBase в формате подкаста от амбассадора Андрея Жуйкова @zavrius ✍️

🟣 Команда, кейсы и внутренний взгляд
🟣 Инсайты и примеры из практики
🟣 Идеи, за которыми будущее
Download Telegram
Добрый день! Сегодня мне бы хотелось рассказать Вам об еще одной древней СУБД, что жива до сих пор, активно обновляется и способна обставить по скорости работы многие современные решения. Итак, IBM IMS (Information Management System).

Разработка — середина 1960‑х. В 1969 году система вышла на коммерческий рынок и стала одной из первых промышленных СУБД в мире.

Архитектура вполне типична для решений этих лет — иерархическое дерево. Данные хранятся как вложенные структуры: корневой сегмент (например, «Клиент») и дочерние («Заказы», «Платежи»). Чтобы получить информацию, нужно знать точный путь по этому дереву. Никаких сложных JOIN — только навигация.

Система до сих пор работает в крупнейших банках, страховых компаниях и авиаперевозчиках.
Например один европейский банк ежегодно проводит через core-banking систему на базе IMS рекордные 80 миллиардов транзакций.

IMS вполне выдерживает до 117 000 обновляющих информацию запросов в секунду. Такое и не снилось многим более современным системам.

СУБД IMS регулярно обновляется. Последнее обновление IMS 15.6 вышло 13 июня 2025 года.

IMS, несмотря на свой почтенный возраст, поддерживает многие современные технологии, например, REST API, шифрование данных, использование Java и Python, поддерживает интеграцию с Kafka и даже имеет свой оператор для Kubernetes.
543
➡️ Продолжаем рассказывать о новшествах версии 18.2. Сегодня — о поддержке команды ALTER VIEW в нашей реализации T-SQL-диалекта.

Для чего это нужно

✔️ Ранее для изменения определения представления требовалось удалить его и создать заново. Команда ALTER VIEW позволяет изменять определение существующего представления, не удаляя его и не теряя связанные разрешения.

Синтаксис

ALTER VIEW view_name
AS
select_statement

Пример использования

-- Создание представления
CREATE VIEW active_employees AS
SELECT id, name FROM employees WHERE status = 'active';

-- Изменение определения представления (добавление поля department)
ALTER VIEW active_employees AS
SELECT id, name, department FROM employees WHERE status = 'active';


Что важно

· Права доступа к представлению сохраняются при изменении;
· Зависимые объекты (процедуры, функции) не требуют перекомпиляции;
· Поддерживается как в T-SQL, так и в PL/SQL-диалектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
422
1️⃣Диасофт и Парус (поставщик решений для цифровизации финансово-хозяйственной деятельности и управления производством) успешно завершили испытания совместимости системы "Парус" и СУБД Digital Q.DataBase ⛵️

Испытания подтвердили стабильную работу систем как единого программного комплекса, высокую производительность и полную готовность к промышленной эксплуатации.

2️⃣На основе Directum RX (цифровая платформа для управления компанией, основа всех ИТ-решений Directum) и СУБД Digital Q.DataBase можно создать импортозамещенную ИТ-инфраструктуру для управления документами и бизнес-процессами.

Подтвержденная совместимость позволяет задействовать отечественную СУБД для работы с критически важными корпоративными данными без изменения прикладной логики платформы. Это особенно важно для организаций, которые переходят с зарубежного ПО и предъявляют высокие требования к производительности, масштабируемости и информационной безопасности 🛡
Please open Telegram to view this post
VIEW IN TELEGRAM
432
Дорогие подписчики!

✔️ Продолжаем рассказывать о новшествах версии 18.2. Сегодня — о поддержке команды ALTER TRIGGER в нашей реализации T-SQL-диалекта.

Для чего это нужно

➡️ Ранее для изменения свойств триггера требовалось удалить его и создать заново. Команда ALTER TRIGGER позволяет включать, отключать или изменять определение существующего триггера без его удаления.

Что можно делать

· Включать и отключать триггер без потери его определения;
· Изменять тело триггера (при необходимости);
· Сохранять связанные разрешения и зависимости.

Синтаксис
-- Включение триггера
ALTER TRIGGER trigger_name ENABLE;

-- Отключение триггера
ALTER TRIGGER trigger_name DISABLE;

Пример использования
-- Отключение триггера перед массовой загрузкой данных
ALTER TRIGGER trg_audit_employees DISABLE;

-- Выполнение массовой операции
INSERT INTO employees SELECT * FROM temp_employees;

-- Включение триггера обратно
ALTER TRIGGER trg_audit_employees ENABLE;


Области применения

· Временное отключение триггеров при массовых загрузках данных;
· Отладка без удаления триггера;
· Управление производительностью пакетных операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
422
🎥 Продолжаем рассказывать о новшествах версии 18.2. Сегодня — о добавлении справочных системных процедур sp_helptrigger и sp_helpconstraint в нашу реализацию T-SQL-диалекта.

Для чего они нужны

🎥 Эти процедуры позволяют быстро получить информацию о триггерах и ограничениях таблицы без написания сложных запросов к системным представлениям.

sp_helptrigger
🎥 Возвращает информацию о триггерах, определённых на указанной таблице.

EXEC sp_helptrigger 'employees';

sp_helpconstraint
🎥 Возвращает список всех ограничений (PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT) для указанной таблицы.

EXEC sp_helpconstraint 'employees';
Please open Telegram to view this post
VIEW IN TELEGRAM
422
Дорогие подписчики!

Продолжаем рассказывать о новшествах версии 18.2. Сегодня — о поддержке конструкции CREATE OR ALTER FUNCTION в нашей реализации T-SQL-диалекта.

Для чего это нужно

Ранее для изменения существующей функции требовалось сначала удалить её с помощью DROP FUNCTION, а затем создать заново через CREATE FUNCTION. Конструкция CREATE OR ALTER объединяет оба действия: если функция существует — она изменяется, если нет — создаётся новая.

Это особенно удобно при развертывании обновлений и написании миграционных скриптов.

Пример использования
-- Создаёт новую функцию или изменяет существующую
CREATE OR ALTER FUNCTION dbo.GetFullName (
@FirstName VARCHAR(50),
@LastName VARCHAR(50)
)
RETURNS VARCHAR(101)
AS
BEGIN
RETURN @LastName + ' ' + @FirstName;
END;

Преимущества

· Не нужно удалять функцию перед изменением;
· Сохраняются связанные разрешения;
· Упрощается процесс обновления базы данных;
· Снижается риск ошибок при миграции.
Please open Telegram to view this post
VIEW IN TELEGRAM
543
DOOM, работающий на SQL

Представьте себе многопользовательский шутер, все компоненты которого написаны исключительно на SQL.

Проект называется DOOMQL — он работает внутри СУБД CedarDB (частично совместимой с PostgreSQL):

- Вся игровая логика, рендеринг, физика столкновений и синхронизация реализованы через таблицы, VIEW и хранимые процедуры
- Игровой цикл крутится с частотой 30 Гц через shell-скрипт, отправляющий запросы в БД
- 3D-рендерер на SQL поддерживает трассировку лучей
- Нажатия клавиш передаются через INSERT, а изображение выводится через SELECT
- Графика — ASCII-анимация

Мораль: SQL - давно уже не просто язык запросов, а полноценная среда исполнения. И да, исходники проекта открыты под MIT.
433
Машина времени для СУБД

Представьте ситуацию: из таблицы БД пропала важная запись. Коллеги твердят: "Её никогда не было"! Но Вы-то знаете, что она была! Если бы только существовала машина времени для баз данных...

Ретроспективные запросы (Temporal Queries) — это и есть такая машина времени.

Это способ заглянуть в прошлое таблицы и увидеть, как выглядели данные в конкретный момент. В мире, где данные меняются каждую секунду (переводы, смены статусов, обновления профилей), это незаменимая вещь для аудита, анализа и отладки.

Посмотрим как это работает на примере MS SQL Server и PostgreSQL.

В MS SQL Server эта фича называется System-Versioned Temporal Tables. Создаёте таблицу с двумя скрытыми колонками (ValidFrom и ValidTo), и СУБД автоматически сохраняет историю каждого изменения.

В ванильном PostgreSQL нет нативной поддержки Temporal Queries на уровне базовой функциональности СУБД. Но это легко реализуется с помощью расширения pg_temporal.

Допустим, клиент утверждает, что ему вчера одобрили скидку 20%, а сегодня в системе стоит 10%. Чтобы узнать правду, используем FOR SYSTEM_TIME AS OF:

-- Узнаём статус заказа номер 12345 ровно на вчерашний полдень
SELECT
OrderID,
CustomerName,
Discount,
ValidFrom,
ValidTo
FROM Orders
FOR SYSTEM_TIME AS OF '2026-07-11 12:00:00'
WHERE OrderID = 12345;

И вот мы видим данные ровно на тот момент. Истина будет неизбежно восстановлена!

Ретроспективные запросы — это не просто «прикольная фича», а насущная необходимость. Это способ:
· Проводить аудит без костылей и записей в логах.
· Анализировать тренды и видеть эволюцию данных.
· Возвращаться к состоянию на любой момент времени без поднятия бэкапа.

Так что в следующий раз, когда кто-то скажет Вам: "Этих данных никогда не было", просто отправьте ему ретроспективный запрос. Данные не врут!
743
⚡️ Digital Q.CDC — напоминаем о нашем инструменте для бесшовной миграции и репликации БД

Когда встаёт задача плавного импортозамещения СУБД, ключевой вопрос — как организовать параллельную работу старой и новой системы с возможностью переключения за минуты. Именно для этого у нас есть Digital Q.CDC.

➡️ Что это?
Классический Change Data Capture (CDC), работающий как системный процесс с удобным Web-интерфейсом. Он обеспечивает непрерывную синхронизацию изменений между Oracle, MSSQL, PostgreSQL и Digital Q.DataBase.

➡️ Как работает?
1. В начале работы новой связки автоматически сравнивает структуру и данные, помогает исправить расхождения.
2. Затем переходит в режим непрерывного захвата и репликации всех изменений.

Главное отличие от конкурентов:
Digital Q.CDC синхронизирует не только данные, но и изменения структуры БД, хранимые процедуры, пакеты, ограничения и другую хранимую логику, а также права доступа. Конкуренты обычно ограничиваются только данными.

➡️ Почему это важно для импортозамещения?
· Позволяет организовать параллельную работу старой и новой СУБД.
· Момент переключения сокращается до нескольких минут.
· Поддерживается реверсирование направления синхронизации — можно в любой момент переключить поток обратно.
· Мастер переноса и мастер сравнения БД помогают на всех этапах миграции.

➡️ Реальный кейс: при переводе корпоративной 1С с MS SQL на Digital Q.DataBase именно наш CDC обеспечил синхронизацию баз, позволив выполнить переключение без остановки бизнес-процессов.

Если Вы планируете импортозамещение СУБД и хотите сделать это плавно, с возможностью отката и параллельной работой, то Digital Q.CDC это Ваш инструмент!

🔗 Вопросы по настройке и внедрению можно направлять на наш адрес supportqdb@diasoft.ru.
Please open Telegram to view this post
VIEW IN TELEGRAM
411
✔️ Обновление DGrid: персистентное Key-Value хранилище в Digital Q.DataBase

В модуле DGrid, ранее отвечавшем только за распределённое in-memory хранение (ключ-значение и таблицы), теперь доступна опция долговременного хранения данных в формате Key-Value. Объём данных - до петабайт, внутренняя реализация Rocks DB.

⬇️ Ключевые характеристики:

· Поддержка транспортного протокола Redis / ValKey — можно использовать DGrid как замену этим продуктам без переписывания клиентов.
· Производительность сопоставима с оригинальными Redis/ValKey, при этом данные могут быть распределены по кластеру с настраиваемым фактором репликации.
· Доступ к данным DGrid возможен также и напрямую из SQL-части СУБД, что позволяет встраивать KV-операции с данными в памяти в хранимые процедуры, пакеты и прочую хранимую бизнес-логику.

Таким образом, DGrid становится гибридным решением: горячие данные в памяти, большие объёмы — на постоянном носителе, с единым интерфейсом доступа и возможностью использования внутри реляционных запросов.

🔗Нужны подробности или помощь с настройкой? Пишите на supportqdb@diasoft.ru. Мы будем рады Вам помочь!
Please open Telegram to view this post
VIEW IN TELEGRAM
432
Дорогие подписчики!

➡️ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Мы поддержали новый пакет OWA_COOKIE.

Для чего он нужен

➡️ Пакет OWA_COOKIE предоставляет функции для работы с HTTP-куками (cookies) в веб-приложениях, построенных на PL/SQL. Он позволяет отправлять куки клиенту, получать их значения и управлять атрибутами.

Основные функции

· GET — получение значения куки по имени;
· SET — установка куки с указанием имени, значения и опциональных атрибутов (путь, домен, срок действия);
· REMOVE — удаление куки;
· GET_VALUES — получение всех значений куки с указанным именем.

Пример использования
-- Получение значения куки
DECLARE
v_cookie OWA_COOKIE.COOKIE;
BEGIN
v_cookie := OWA_COOKIE.GET('user_preferences');
-- Обработка полученных значений
END;

-- Установка куки
BEGIN
OWA_COOKIE.SET(
name => 'theme',
value => 'dark',
path => '/',
expires => SYSDATE + 30
);
END;

Области применения
· Хранение пользовательских настроек в веб-приложениях;
· Управление сессиями;
· Отслеживание предпочтений пользователя (язык, тема оформления).
Please open Telegram to view this post
VIEW IN TELEGRAM
332
Дорогие подписчики!

Сегодня, 16 июля, — Всемирный день Искусственного Интеллекта (в эту дату в 1956 году был впервые введен этот термин).


А потому мы просто не могли не рассказать Вам о новых возможностях, что в ближайшее время появятся в Digital Q.DataBase для поддержки совместимости с LLM-фичами MS SQL Server 2025 и Oracle 23ai.

Уже скоро в нашей СУБД появится поддержка подключения внешних LLM в точности тем же способом, как в вышеупомянутых зарубежных СУБД.

Так в нашем модуле Marble (замена MS SQL Server) станет доступной команда CREATE EXTERNAL MODEL и системная таблица sys.external_models, а также функция AI_GENERATE_EMBEDDINGS, которая отправляет запрос по API внешней ИИ-модели и получает в ответ сгенерированный вектор.

А в нашем модуле Onyx (замена Oracle Database) для подключения внешних моделей появится полный аналог пакета DBMS_CLOUD_AI и функция VECTOR_EMBEDDING(), позволяющие работать с внешними моделями в точности так, как принято в Oracle 23ai.

Не будет обойден вниманием и наш модуль Pearl (поддержка функциональности PostgreSQL). В нем также скоро появятся соответствующие функции.

Новая функциональность позволит Вам легко создавать эмбеддинги — цифровые отпечатки текстовых данных, которые в дальнейшем можно использовать для поиска информации по смыслу, построения RAG-систем и рекомендательных сервисов.

🔗 Если Вы заинтересованы принять участие в пилотировании этой фунциональности до её официального выпуска - напишите нам на supportqdb@diasoft.ru.
Please open Telegram to view this post
VIEW IN TELEGRAM
444
Forwarded from DiasoftNews_channel
Подтверждена совместимость СУБД Digital Q.DataBase и СРК Кибер Бэкап 🤩
Компании Киберпротект и Диасофт подтвердили совместимость системы резервного копирования Кибер Бэкап 18.0 и российской СУБД Digital Q.DataBase.

Совместное использование этих систем предоставляет организациям комплексное решение для защиты критически важных данных, обеспечивая высокий уровень безопасности и отказоустойчивости ИТ-инфраструктуры 🛡

"Для корпоративной СУБД важны не только производительность и функциональность, но и совместимость с инфраструктурными решениями, которые обеспечивают сохранность данных в нештатных ситуациях. Подтверждение совместимости Digital Q.DataBase с Кибер Бэкап позволяет заказчикам использовать проверенный отечественный стек для работы с критически важными данными", – отметил Алексей Татаринов, руководитель продукта Digital Q.DataBase.
432
Достойная альтернатива для ClickHouse:

Сегодня я хочу рассказать Вам об аналитической СУБД Apache Doris.

Это открытая MPP-аналитическая СУБД с колоночным хранением, совместимая с MySQL по языку запросов и транспортному протоколу.

Она разработана для задач оперативной аналитики (Real-Time OLAP) со сценариями высокой нагрузки и сложными запросами.

Сравнение производительности с ClickHouse (по данным официальных бенчмарков Apache Doris, 2025 г.):

· RTABench (стандартизированный тест реального времени): Doris в 6 раз быстрее ClickHouse
· SSB (Star Schema Benchmark): в 18–34 раза быстрее ClickHouse
· ClickBench: в 2.5–4.6 раза быстрее ClickHouse
· CoffeeBench / TPC-H / TPC-DS: по всем трём тестам Doris вплоть до 40 раз быстрее ClickHouse v25.8 (on-premises) и ClickHouse Cloud
· Сложные JOIN-запросы: скорость выше в 2–10 раз; Doris выполняет все запросы TPC-DS, тогда как около 50% запросов в ClickHouse завершаются ошибкой
· Реальные обновления (UPSERT): в 34 раза быстрее благодаря механизму Merge-on-Write

Помимо производительности, Doris обеспечивает более высокую конкуренцию запросов (до 1000 против менее 100 у ClickHouse), поддерживает полные ACID-транзакции и архитектуру разделения вычислений и хранения с открытым исходным кодом.

Таким образом, в корпоративных сценариях со сложной аналитикой, частыми обновлениями данных и высокими требованиями к консистентности Apache Doris демонстрирует измеримое и существенное преимущество перед ClickHouse.

Очень рекомендую Вам познакомиться с этим проектом.

А завтра я расскажу Вам о "великом расколе" Apache Doris, что породил две еще более быстрые аналитические СУБД.
432
Великий раскол Apache Doris:

Иногда конфликт в команде разработчиков идет только на пользу обществу и продуктам. Именно это и произошло с аналитической СУБД Apache Doris, о которой мы рассказывали Вам вчера.

Немного истории:

В 2017 году Baidu (китайский аналог Google) открыла миру код своей мощной аналитической СУБД. В 2018 году этот опенсорсный проект был передан под управление Apache Software Foundation. Так появился на свет проект Apache Doris.

Однако развитие Doris в рамках Apache Software Foundation было слишком медленным из-за бюрократии.

Из-за этого уже к февралю 2020 года команда разделилась на два лагеря:
тех кто выступал за постепенное улучшение старого кода и тех кто выступал за полное переписывание движка с нуля.

В итоге "революционеры" ушли и основали свою компанию. Так появилась на свет StarRocks Inc. и открытая СУБД DorisDB, чуть позже переименованная в StarRocks из-за претензий со стороны Apache.

А та часть разработчиков, которая выступала за постепенное развитие существующего кода продукта, тоже не осталась в долгу: создала компанию SelectDB и выпустила СУБД VeloDB - коммерческий форк Apache Doris с полуоткрытой лицензией.

Оригинальный Doris так и остался под управлением Apache Foundation. Он успешно "выпустился из инкубатора" в 2022 году и стал одним из Top-Level проектов ASF. Вчера мы рассказывали Вам об его успехах.

В результате "великого раскола", оба продукта - VeloDB и StarRocks - являются наследниками Apache Doris, но имеют совершенно разный набор исходных кодов.

Яростная конкуренция на протяжении последних 6 лет между этими двумя "когда-то родственными" проектами привела к созданию двух очень хороших OLAP-систем на рынке, оставивших позади оригинальный Apache Doris как по скорости работы (и без того весьма впечатляющей) так и по функциональности.
443
Сегодня всё чаще говорят: импортозамещение заканчивается там, где начинается переписывание миллионов строк бизнес-логики.

Именно поэтому всё больший интерес вызывают полиглотные СУБД, которые позволяют заменить СУБД, а не приложение, сохранив привычные языки программирования и существующую бизнес-логику. На мой взгляд, именно за таким подходом сегодня развивается рынок корпоративных баз данных.

Digital Q.DataBase — именно такая СУБД. Она воспроизводит функциональные возможности Microsoft SQL Server и Oracle Database, позволяя существенно сократить объём доработок существующих информационных систем при миграции.

Отличный повод вспомнить моё выступление на международной конференции «Информационные технологии. Проблемы и решения – IT'DAYS» в Уфе.

RuTube:
https://rutube.ru/video/e6f1ebee72a7a8d2fa2e81c9a764a217/
211
Дорогие подписчики!

🟣 Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня — о функции OPEN_CURSOR из пакета DBMS_SQL.

Для чего она нужна

🟣 Функция OPEN_CURSOR открывает новый курсор для динамического выполнения SQL-запросов. При вызове возвращает числовой идентификатор курсора, который затем используется в других процедурах пакета DBMS_SQL — PARSE, BIND_VARIABLE, EXECUTE, FETCH_ROWS и CLOSE_CURSOR . После завершения работы курсор необходимо явно закрыть с помощью CLOSE_CURSOR .

Пример использования

DECLARE
v_cursor INTEGER;
BEGIN
-- Открытие нового курсора
v_cursor := DBMS_SQL.OPEN_CURSOR;

-- Использование курсора для динамического SQL
DBMS_SQL.PARSE(v_cursor, 'SELECT * FROM employees', DBMS_SQL.NATIVE);
-- ... дальнейшие операции

-- Закрытие курсора
DBMS_SQL.CLOSE_CURSOR(v_cursor);
END;
Please open Telegram to view this post
VIEW IN TELEGRAM
221