СУБД Digital Q.DataBase
563 subscribers
123 photos
14 videos
2 files
126 links
► Уникальный СУБД-канал Digital Q.DataBase от амбассадора Андрея Жуйкова @zavrius ✍️ - разбираемся, как наша СУБД воспроизводит диалекты Oracle, MS SQL и PostgreSQL и обеспечивает совместимость с существующим кодом приложений без его переписывания.
Download Telegram
Диасофт проведет первый в своей истории День СУБД 🐬
21 апреля 2026 года состоится конференция по промышленной эксплуатации СУБД и архитектуре корпоративных данных!

Приглашаем ИТ-директоров из разных отраслей экономики, разработчиков, архитекторов и администраторов баз данных обсудить:
🗣 изменение подхода к импортозамещению СУБД;
🗣 Digital Q.DataBase от Диасофт – настоящий "полиглот" в мире СУБД;
🗣 СУБД для обеспечения технологического суверенитета;
🗣 импортозамещение СУБД в высоконагруженных системах;
🗣 истории успеха перехода на Digital Q.DataBase клиентов и партнеров Диасофт.

Регистрируйтесь на мероприятие по ссылке 🔗
До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
653
Дорогие подписчики!

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

⬇️Пять фактов о базах данных, которые вы могли не знать

🟣1. Первые СУБД появились еще до эры персональных компьютеров

В 1960-х годах компания General Electric разработала систему Integrated Data Store (IDS) — одну из первых в мире систем управления базами данных. Она работала на мейнфреймах, занимавших целые комнаты, и использовалась преимущественно в военных и космических проектах. А в СССР примерно в то же самое время велись работы над СУБД "Автодиректор", о которой я Вам расскажу завтра.

🟣2. Ошибки в базах данных могут стоить миллиарды

В 2012 году крупный инвестиционный банк Knight Capital потерял 440 миллионов долларов за 45 минут из-за ошибки при развертывании обновления торговой системы. Причиной стал сбой в работе с базой данных: новый код использовал устаревшие настройки, что привело к миллионам ошибочных транзакций. Этот случай оказался настолько "болезненным", что до сих пор приводится в учебниках как пример того, почему тестирование миграций данных критически важно.

🟣3. Самая большая база данных в мире — это… небо

Астрономический проект Large Synoptic Survey Telescope (ныне — Обсерватория Веры Рубин) генерирует около 20 терабайт данных каждую ночь. За десять лет работы объем накопленной информации достигнет 500 петабайт. Уже сейчас это одна из самых больших научных баз данных в мире. Для сравнения: все тексты, когда-либо написанные человечеством, оцениваются примерно в 50 петабайт.

🟣4. СУБД в космосе и на земле

История развития систем управления базами данных тесно связана с космической отраслью. В 1960-х годах, когда NASA готовила высадку на Луну, потребовалась система для управления колоссальными объемами данных — от параметров полета до результатов испытаний оборудования. Именно тогда были заложены принципы надежности и отказоустойчивости, которые сегодня считаются стандартом для любой промышленной СУБД. Технологии, разработанные для космических программ, позже легли в основу многих коммерческих баз данных, с которыми мы работаем сейчас.

🟣5. Почему базы данных называют «холодными»?

В сфере IT данные принято делить на «горячие» (активно используемые, хранящиеся в оперативной памяти) и «холодные» (редко запрашиваемые, хранящиеся на более медленных носителях). Но есть и термин «ледяные данные» — это информация, которая хранится исключительно для выполнения законодательных требований и никогда не запрашивается в рабочем процессе. По некоторым оценкам, до 60% корпоративных данных со временем становятся «ледяными».

🟣Бонус: что общего у СУБД и космических кораблей?

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

Хороших выходных и пусть ваши базы данных всегда остаются в целостности и сохранности!
Please open Telegram to view this post
VIEW IN TELEGRAM
755
Уважаемые подписчики!

Продолжаю делиться с Вами интересными фактами из мира СУБД:

✅ Первая в мире реляционная СУБД сделана в СССР?

В 1961 году, за 9 лет до знаменитой работы Эдгара Кодда, в СССР заработала  СУБД «Автодиректор».

✅ Первое промышленное применение СУБД «Автодиректор» состоялось в составе того, что позднее  назовут АСУ ТП, на одном из металлургических комбинатов СССР. Еще раз: 1961 год - начало промышленной эксплуатации,  на 13 лет раньше появления IBM System R и за 18 лет до появления СУБД Oracle (которая стала первой коммерчески применяемой СУБД в мире).

СУБД "Автодиректор" была реляционной, хотя тогда такого термина ещё не существовало. И она действительно работала!
Но сколь-либо массовой эта СУБД не стала, так как работала она только на ЭВМ «Киев», а таких машин в СССР было выпущено всего несколько штук.

✅ Самая массовая СУБД в СССР

А вот самой массовой по числу применений советской СУБД стала иерархическая СУБД «Инес». Её появление пришлось на самый конец 1979 года, но уже в 1980‑х у неё было около 2000 внедрений — это, между прочим, 60% от всех внедрений СУБД в СССР.

В 1990 году разработчики СУБД «Инес» даже получили Премию Совета Министров СССР за эту выдающуюся разработку.

✅ Уже после распада СССР на основе СУБД «Инес» создали СУБД «Ника», права на которую перешли к Cognitive Technologies. Авторы СУБД "Инес", ставшие сотрудниками этой компании, адаптировали свои предыдущие наработки к актуальным на тот момент времени операционным системам и "железу".

Эта система жива до сих пор: она включена в  Реестр российского ПО, используется в ряде государственных организаций и поддерживается разработчиком. В частности,  её эксплуатируют Государственный исторический музей и Музей имени Андрея Рублева. В ней хранится описание коллекций этих музеев.

🇷🇺 СУБД Digital Q.DataBase.
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
843
Небольшая, но полезная заметка.

✅ В этом видео покажу, как развернуть тестовую среду из 3 нод с etcd, Patroni, СУБД Digital Q.DataBase и vip-manager.

Все компоненты входят в бесплатный дистрибутив Digital Q.DataBase (до 8 ядер).
Скачать можно на сайте:
https://database.diasoft.ru/?utm_source=andrei

✅ qdb-vip-manager: компонент системы управления сетевой инфраструктурой, отвечающий за управление виртуальным IP-адресом;
обеспечивает автоматическое переключение виртуального IP-адреса; поддерживает динамическое назначение адреса и интеграцию с кластерными решениями.

Q.DataBase vip-manager назначает виртуальный IP-адрес активному узлу кластера в зависимости от состояния, хранящегося в ETCD, Consul или через REST API Patroni.

➡️Rutube видео:
https://rutube.ru/video/5ec9fbcf8ee040fab397aedc69a217d6/?r=wd
Please open Telegram to view this post
VIEW IN TELEGRAM
433
🐘 Изучите возможности СУБД Digital Q.DataBase уже сейчас🔥

➡️Хотите увидеть в деле российскую СУБД-полиглот на базе PostgreSQL, которая исполняет T-SQL и PL/SQL без переписывания?
Это ваш шанс.

➡️Мы уже перевели систему с 92 000 таблиц и 6,5 млн строк
T-SQL-кода с MS SQL Server на российскую СУБД из Реестра.
Да, это реально.

🔄Скачать дистрибутив бесплатно
Мы поддерживаем Alt Linux 11, Astra Linux 1.7, 1.8, Red OS 7,8 и Ubuntu 22.04, 24.04 LTS, Docker-контейнер.

✅ Бесплатная полнофункциональная версия дистрибутива (до 4 ядер) с возможностью использования в том числе в коммерческих целях.


Разбираю ключевые возможности платформы и показываю живые примеры в действии / вебинары.
🎥 Запись на Rutube
🎥 VK video
🎥 Yandex dzen
🎥 YouTube

Также, читайте нас на Habr
➡️ Мой личный хабр
➡️ Хабр компании Diasoft - Digital Q.DataBase

📩 Написать нам можно:

— в нашу тех. поддержку 👉 supportqdb@diasoft.ru
— в личку 👉 @zavrius
— на почту 👉 azhuykov@diasoft.ru
— через форму 👉
https://database.diasoft.ru/?utm_source=tgdqdatabase#contacts

➡️Замена Oracle или MS SQL Server?
✓ dbms-пакеты работают
✓ плавный переход
✓ экономия времени и денег

Подписывайтесь, чтобы узнать подробности и записаться на показ демо!

🇷🇺 СУБД Digital Q.DataBase.
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
443
СУБД Digital Q.DataBase pinned «🐘 Изучите возможности СУБД Digital Q.DataBase уже сейчас🔥 ➡️Хотите увидеть в деле российскую СУБД-полиглот на базе PostgreSQL, которая исполняет T-SQL и PL/SQL без переписывания? Это ваш шанс. ➡️Мы уже перевели систему с 92 000 таблиц и 6,5 млн строк T…»
Дорогие подписчики!

🟣 Сегодня — необычный праздник. 31 марта отмечается Всемирный день резервного копирования, или Всемирный день бэкапа (World Backup Day).

✅ Дата выбрана не случайно: накануне апреля, когда многие шутят и разыгрывают друг друга, организаторы решили напомнить о серьёзных вещах. По статистике, каждый третий пользователь никогда не делал резервную копию своих данных, а 29% катастроф с потерей информации происходят по чистой случайности.

✅ В Digital Q.DataBase мы относимся к сохранности данных со всей серьёзностью. В честь праздника — краткий обзор инструментов резервного копирования и несколько полезных команд.

✅ Основные инструменты бэкапа в Digital Q.DataBase

Для создания резервных копий используется утилита pg_dump. Она создает согласованную копию базы данных даже при одновременной работе пользователей, не блокируя доступ на чтение и запись.

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

✅ Центр управления позволяет:

· Подключаться к серверу Digital Q.DataBase через удобный графический интерфейс;
· Просматривать список баз данных;
· Создавать резервные копии в несколько кликов;
· Восстанавливать базы данных из ранее созданных бэкапов;
· Настраивать параметры резервного копирования без необходимости писать скрипты.

⬇️Как создать бэкап через Центр управления

1. Запустите Центр управления Digital Q.DataBase;
2. Подключитесь к нужному серверу;
3. В списке баз данных выберите ту, которую необходимо зарезервировать;
4. Нажмите кнопку «Резервное копирование»;
5. Укажите параметры:
· Каталог для сохранения копии;
· Формат (текстовый SQL-файл, сжатый архив, каталог для параллельного бэкапа);
· Количество параллельных потоков (для больших баз);
· Необходимость включить в копию глобальные объекты (роли, табличные пространства);
6. Нажмите «Выполнить».

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

⬇️Восстановление из бэкапа

Восстановление выполняется так же просто:

1. В Центре управления выберите базу данных (или создайте новую);
2. Нажмите кнопку «Восстановление»;
3. Укажите путь к файлу или каталогу с резервной копией;
4. При необходимости настройте параметры восстановления;
5. Запустите процесс.

✅ Кому подойдет Центр управления

· Администраторам, которые предпочитают графический интерфейс командной строке;
· Разработчикам, которым нужно быстро создать локальную копию базы для тестирования;
· При переходе с других СУБД — многие администраторы Oracle и MS SQL Server привыкли к визуальным инструментам (Oracle Enterprise Manager, SQL Server Management Studio), и Центр управления Digital Q.DataBase обеспечивает схожий пользовательский опыт.

🟣 Важное напоминание

Резервная копия ценна только тогда, когда проверена ее восстановление. Рекомендуется периодически тестировать восстановление из бэкапов на тестовом окружении — это единственный способ убедиться, что в критический момент всё пройдёт штатно.

Всемирный день бэкапа — хороший повод проверить, настроено ли у вас регулярное резервное копирование. Если нет — сегодня отличный день, чтобы это исправить!

🇷🇺 СУБД Digital Q.DataBase.
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
554
Дорогие подписчики!

✅ В Digital Q.DataBase мы последовательно расширяем набор встроенных пакетов, обеспечивающих совместимость с PL/SQL-окружением Oracle.
Сегодня я расскажу Вам о двух важных пакетах, которые были добавлены (в числе прочих) в последнюю вышедшую версию Digital Q.DataBase.

DBMS_ALERT — уведомления между сеансами

✅ Пакет DBMS_ALERT предоставляет механизм асинхронной передачи уведомлений между различными сеансами работы с базой данных. Это позволяет одному сеансу отправить сигнал о наступлении определенного события, а другим сеансам — ожидать его и реагировать.

Основные возможности:

· Регистрация на получение уведомлений с указанием имени сигнала;
· Отправка уведомлений с возможностью передачи короткого текстового сообщения;
· Ожидание уведомления с настройкой таймаута;
· Возможность одного сеанса подписаться на несколько сигналов одновременно.

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

-- Сеанс 1: регистрируется на получение уведомления
EXEC DBMS_ALERT.REGISTER('my_alert');

-- Сеанс 2: отправляет уведомление
EXEC DBMS_ALERT.SIGNAL('my_alert', 'Данные обновлены');

-- Сеанс 1: ожидает уведомление
DECLARE
v_name VARCHAR2(100);
v_msg VARCHAR2(1000);
v_status INTEGER;
BEGIN
DBMS_ALERT.WAITONE('my_alert', v_name, v_msg, v_status, 30);
IF v_status = 0 THEN
DBMS_OUTPUT.PUT_LINE('Получено: ' || v_msg);
END IF;
END;

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

· Оповещение прикладных модулей об изменении справочных данных;
· Координация работы параллельных процессов;
· Информирование администраторов о наступлении пороговых событий.

DBMS_APPLICATION_INFO — мониторинг выполнения операций

✅ Пакет DBMS_APPLICATION_INFO позволяет приложению передавать в СУБД информацию о текущей выполняемой операции. Эти данные становятся доступными через системные представления и могут использоваться для мониторинга, отладки и аудита.

Основные возможности:

· Установка имени модуля (MODULE), который в данный момент выполняется;
· Установка имени действия (ACTION) внутри модуля;
· Передача дополнительной клиентской информации (CLIENT_INFO);
· Отслеживание прогресса выполнения длительных операций.

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

-- Начало выполнения отчета
EXEC DBMS_APPLICATION_INFO.SET_MODULE('Отчетность', 'Формирование годового отчета');

-- Уточнение действия внутри модуля
EXEC DBMS_APPLICATION_INFO.SET_ACTION('Загрузка данных');

-- Выполнение длительной операции
INSERT INTO annual_report SELECT * FROM operations WHERE period = 2025;

-- Обновление прогресса
EXEC DBMS_APPLICATION_INFO.SET_ACTION('Агрегация данных');

-- Дальнейшие операции...

-- Завершение
EXEC DBMS_APPLICATION_INFO.SET_MODULE(NULL, NULL);

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

· Отслеживание длительных операций в системах мониторинга;
· Идентификация источника нагрузки в представлениях сессий;
· Аудит действий прикладного кода;
· Отладка сложных хранимых процедур.

✅ В ближайшее время расскажем Вам и о других DBMS пакетах, добавленных в вышедшую 21 марта версию.
Please open Telegram to view this post
VIEW IN TELEGRAM
644
Дорогие подписчики!

✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета из тех, что попали в последний выпуск (версия от 21 марта), — DBMS_LOCK и DBMS_ODCI.

DBMS_LOCK — пользовательские блокировки

✅ Пакет DBMS_LOCK предоставляет механизм создания блокировок, управляемых непосредственно прикладным кодом. Это позволяет синхронизировать выполнение нескольких сеансов при работе с общими ресурсами, не затрагивая стандартные механизмы блокировок строк и таблиц.

Основные возможности:

· Запрос и освобождение блокировки с указанием имени и режима;
· Преобразование режима уже полученной блокировки;
· Проверка идентификатора блокировки по имени;
· Ожидание освобождения блокировки с настройкой таймаута.

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

-- Объявление идентификатора блокировки
DECLARE
v_lockhandle VARCHAR2(128);
BEGIN
-- Запрос блокировки с именем 'MY_APP_LOCK'
DBMS_LOCK.ALLOCATE_UNIQUE('MY_APP_LOCK', v_lockhandle);

-- Захват блокировки в монопольном режиме
DBMS_LOCK.REQUEST(v_lockhandle, DBMS_LOCK.X_MODE, 10);

-- Критическая секция: работа с общим ресурсом

-- Освобождение блокировки
DBMS_LOCK.RELEASE(v_lockhandle);
END;

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

· Ограничение одновременного выполнения одной и той же процедуры;
· Синхронизация доступа к внешним системам (файловая система, API);
· Реализация очередей и пулов ресурсов на уровне приложения;
· Защита критических участков кода при параллельных вызовах.

DBMS_ODCI — управление контекстом транзакций

✅ Пакет DBMS_ODCI предоставляет функции для работы с контекстом выполнения и управления состоянием транзакций в пользовательских типах данных и методах. Этот пакет используется преимущественно при реализации пользовательских индексов и операторов расширения данных.

Основные возможности:

· Получение информации о текущем состоянии транзакции;
· Управление контекстом выполнения для методов пользовательских типов;
· Поддержка кастомных реализаций индексов (ODCI — Oracle Data Cartridge Interface);
· Обеспечение корректной фиксации и отката в расширенных сценариях.

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

-- Проверка состояния транзакции в методе пользовательского типа
CREATE OR REPLACE TYPE BODY my_custom_type AS
MEMBER FUNCTION check_state RETURN NUMBER AS
BEGIN
-- Проверка, активна ли текущая транзакция
IF DBMS_ODCI.IS_TRANSACTION_ACTIVE = 1 THEN
RETURN 1;
ELSE
RETURN 0;
END IF;
END;
END;

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

· Разработка пользовательских типов данных со сложной транзакционной логикой;
· Создание нестандартных методов доступа к данным;
· Реализация расширений для полнотекстового поиска и пространственных данных;
· Интеграция с внешними движками обработки данных.

Хочу ещё раз напомнить - именно наличие большого количества аналогов DBMS_-пакетов Oracle позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
Please open Telegram to view this post
VIEW IN TELEGRAM
754
🚨 Мы в Diasoft запускаем свою серию мероприятий по СУБД.
Первое — уже 21 апреля 2026: конференция о промышленной эксплуатации и архитектуре корпоративных данных.

Место проведения — Москва, Кибердом.

➡️ Я выступлю с двумя докладами:

🔥 Как мы воспроизводим функциональность MS SQL и переносим решения без переписывания
🔥 Digital Q.CDC — когда критична синхронизация изменений данных.

➡️ В нашей программе намечается много интересного, в том числе обсудим:

✅ как мы воспроизводим функциональность Oracle
✅ практика импортозамещения и работа с высоконагруженными системами на базе Digital Q.DataBase
✅ Low-Code подходы и замещение зарубежных платформ
✅ единая работа данных для OLTP и OLAP
✅ развитие инструментов управления СУБД
✅ как формируется СУБД за счет объединения компетенций и технологий

Наши профессионалы подробно объяснят реальные кейсы и практику внедрения.

Обязательно регистрируйтесь

https://dbd.diasoft.ru/?utm_source=andrei#programme

Увидимся! 🚀
Please open Telegram to view this post
VIEW IN TELEGRAM
522
Диасофту 35 лет!

Сегодня, 4 апреля, нашей компании исполнилось 35 лет.

Вот уже 35 лет мы работаем для Вас, создавая IT-системы, которым доверяют!

🚀 Многие знают, что нашу Компанию основали выходцы из Центра Управления Полетами. Люди, для которых «надежность» — не маркетинг, а безусловный приоритет в оценке результатов деятельности.

За минувшие годы мы выросли в крупного разработчика ПО. И сегодня, празднуя 35 лет со дня основания компании, мы хотим выразить благодарность нашим клиентам, партнёрам и всем, кто пользуется нашими продуктами.

И мы очень рады развивать для Вас нашу СУБД Digital Q.DataBase - продукт в котором особенно важно сохранить наследие и традиции ЦУП.

🙌 Нам будет очень приятно получить Ваши поздравления с днем рождения компании и Ваши отзывы об использовании нашего продукта на наш адрес: supportqdb@diasoft.ru.
Please open Telegram to view this post
VIEW IN TELEGRAM
866
Уважаемые подписчики!

Хочу напомнить Вам о двух каналах, связанных с нашей Компанией:

⚡️Канал о цифровизации финансовых компаний, мнения экспертов отрасли, новости банков, регулятора и IT-разработчиков:

🌐
https://t.me/DiasoftNews_channel


⚡️Канал о технологиях и эффективном производстве современных IT-решений:

🌐
https://t.me/DiasoftTechno_Channel

Тут Вы сможете узнавать о важных новостях, связанных с нашей компанией.
Please open Telegram to view this post
VIEW IN TELEGRAM
855
Дорогие подписчики!

✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета из тех, что попали в последний выпуск (версия от 21 марта), — DBMS_ERRLOG и DBMS_HASH.

DBMS_ERRLOG — логирование ошибок DML-операций

➡️ Пакет DBMS_ERRLOG позволяет сохранять информацию об ошибках, возникающих при выполнении массовых DML-операций (INSERT, UPDATE, MERGE, DELETE), без прерывания всего процесса. Это особенно полезно при загрузке больших объёмов данных, когда отдельные некорректные записи не должны останавливать обработку всего набора.

Основные возможности:

· Создание таблицы логирования ошибок для указанной таблицы;
· Продолжение выполнения DML-операции при возникновении ошибок в отдельных строках;
· Фиксация кода ошибки, номера строки и значений ошибочных колонок;
· Настройка перечня колонок, подлежащих логированию.

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

-- Создание таблицы логирования ошибок для таблицы employees
EXEC DBMS_ERRLOG.CREATE_ERROR_LOG('employees', 'err_employees');

-- Выполнение массовой вставки с логированием ошибок
INSERT INTO employees (id, name, salary)
SELECT emp_id, emp_name, emp_salary FROM source_data
LOG ERRORS INTO err_employees REJECT LIMIT UNLIMITED;

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

· Загрузка данных из внешних источников с «грязными» данными;
· Массовые обновления в условиях, когда часть строк не проходит валидацию;
· Аудит и анализ причин отбраковки данных при ETL-процессах;
· Обеспечение отказоустойчивости пакетной обработки.

DBMS_HASH — хэширование данных

➡️ Пакет DBMS_HASH предоставляет функции для вычисления хэш-значений данных различных типов. Это позволяет создавать контрольные суммы, сравнивать большие объёмы данных, реализовывать механизмы кэширования и проверки целостности.

Основные возможности:

· Вычисление хэша для значений типов VARCHAR2, NUMBER, DATE, RAW, CLOB, BLOB;
· Поддержка алгоритмов MD5 и SHA-1 (совместимость с Oracle);
· Получение хэша от конкатенации нескольких значений;
· Использование в выражениях SQL и PL/SQL.

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

-- Вычисление хэша для строкового значения
DECLARE
v_hash RAW(16);
BEGIN
v_hash := DBMS_HASH.MD5('Hello, Digital Q.DataBase');
DBMS_OUTPUT.PUT_LINE(RAWTOHEX(v_hash));
END;


-- Использование в SQL-запросе для сравнения таблиц
SELECT DBMS_HASH.MD5(column1 || column2 || column3) AS row_hash
FROM my_table;


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

· Сравнение содержимого двух таблиц без построчного обхода;
· Проверка целостности данных при репликации;
· Создание ключей кэширования на основе сложных составных данных;
· Обнаружение дубликатов при отсутствии однозначного первичного ключа;
· Контроль неизменности конфигурационных данных.

✅ Хочу ещё раз напомнить: именно наличие большого количества аналогов DBMS-пакетов Oracle, позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
Please open Telegram to view this post
VIEW IN TELEGRAM
554
Дорогие подписчики!

➡️ Продолжаем рассказывать о доработках, вошедших в последний выпуск Digital Q.DataBase (версия от 21 марта). Сегодня — о рабочей поддержке команды UPDATE STATISTICS.

Для чего нужна эта команда

➡️ Статистика — это метаданные, которые описывают распределение данных в таблицах и индексах. Оптимизатор запросов использует их для выбора наиболее эффективного плана выполнения. Если статистика устаревает, например после массовой вставки, обновления или удаления данных, оптимизатор может принять неверное решение, что приведёт к падению производительности.

Команда UPDATE STATISTICS обновляет эту информацию, позволяя оптимизатору строить актуальные планы запросов.

Что именно добавлено

➡️ В Digital Q.DataBase теперь поддерживаются следующие варианты синтаксиса UPDATE STATISTICS, совместимые с MS SQL Server:

-- Обновление статистики по указанной таблице
UPDATE STATISTICS employees;

-- Обновление статистики по конкретному индексу или статистическому объекту
UPDATE STATISTICS employees (ix_employees_name);

-- Обновление статистики с полным сканированием таблицы
UPDATE STATISTICS employees WITH FULLSCAN;

-- Обновление статистики с указанием процента выборки
UPDATE STATISTICS employees WITH SAMPLE 10 PERCENT;


Основные возможности:

· Обновление статистики на уровне таблицы, отдельного индекса или статистического объекта;
· Выбор режима сбора данных: полное сканирование или указание процента выборки;
· Совместимость с существующими скриптами и хранимыми процедурами, переходящими с MS SQL Server.

Пример использования в миграционных сценариях

➡️ При переходе с MS SQL Server на Digital Q.DataBase многие приложения содержат вызовы UPDATE STATISTICS и sp_updatestats в регламентных заданиях. Ранее такие вызовы приходилось удалять или заменять. Теперь основные прикладные сценарии работают без изменений:

-- Типовой скрипт обслуживания из MS SQL Server
EXEC sp_updatestats;  -- Вызов хранимой процедуры обновления статистики по всей БД

-- Или прямая команда
UPDATE STATISTICS sales.orders WITH FULLSCAN;


➡️ В текущей реализации поддерживаются основные варианты синтаксиса и вызовы системной процедуры, необходимые для подавляющего большинства прикладных сценариев обслуживания и миграции.

➡️ Хочу ещё раз напомнить: именно такие, на первый взгляд небольшие, доработки делают переход с зарубежных СУБД на Digital Q.DataBase максимально плавным. Хранимые процедуры, регламентные задания и скрипты обслуживания продолжают работать так же, как и раньше, — без переписывания.
Please open Telegram to view this post
VIEW IN TELEGRAM
643
🔥Иногда полезно оглянуться назад и вспомнить выступления, которые действительно зацепили аудиторию.

🔄 На Tadviser я выступал с довольно провокационным тезисом:

«Мучения клиента выгодны бизнесу».

➡️Мы говорили о переходе с Oracle и MS SQL на отечественные решения - без переписывания прикладной логики и с минимальными издержками.

Я показал, что это возможно, если СУБД изначально спроектирована с учетом реальных сценариев миграции, а не просто повторяет PostgreSQL с частичными доработками.

Отдельно разобрали, почему классические подходы через «форки ради форков» создают для заказчика:

🟣долгую конвертацию
🟣риски ошибок
🟣зависимость от подрядчиков

➡️В финале прозвучал вопрос из зала:
почему другие отечественные компании не достигли такого же результата?

✅ Я ответил честно:
либо у них нет технологий и ресурсов,
либо они не стремятся облегчать переход заказчику,
так как «мучение клиента» выгодно для бизнеса.

➡️Судя по реакции зала - тема попала точно в нерв.

Обсуждение получилось живым, а сам тезис разошёлся далеко за пределы мероприятия.
Порой правда звучит немного неудобно - зато её хорошо запоминают.

Статья на Tadviser
Please open Telegram to view this post
VIEW IN TELEGRAM
333
Дорогие подписчики!

➡️ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета — DBMS_XMLDOM и DBMS_XMLGEN.

DBMS_XMLDOM — работа с XML-документами через DOM-модель

➡️ Пакет DBMS_XMLDOM предоставляет интерфейс для работы с XML-документами на основе объектной модели DOM (Document Object Model). Он позволяет создавать, модифицировать и анализировать XML-структуры непосредственно в хранимых процедурах.

Основные возможности:

· Создание XML-документов с нуля с использованием DOM-узлов;
· Парсинг существующих XML-документов в DOM-структуру;
· Навигация по дереву документа с доступом к любому узлу;
· Модификация содержимого, атрибутов и структуры документа;
· Преобразование DOM-документа обратно в текстовое представление XML.

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

DECLARE
v_doc DBMS_XMLDOM.DOMDocument;
v_root DBMS_XMLDOM.DOMNode;
v_elem DBMS_XMLDOM.DOMNode;
BEGIN
-- Создание нового документа
v_doc := DBMS_XMLDOM.newDOMDocument;
v_root := DBMS_XMLDOM.makeNode(v_doc);

-- Создание корневого элемента
v_elem := DBMS_XMLDOM.createElement(v_doc, 'employees');
v_root := DBMS_XMLDOM.appendChild(v_root, v_elem);

-- Вывод документа
DBMS_OUTPUT.PUT_LINE(DBMS_XMLDOM.getXMLType(v_doc).getClobVal);
END;

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

· Формирование сложных XML-отчётов внутри базы данных;
· Генерация XML-файлов для обмена с внешними системами;
· Разбор входящих XML-сообщений без привлечения внешних парсеров;
· Преобразование реляционных данных в иерархические XML-структуры.

DBMS_XMLGEN — преобразование SQL-результатов в XML

➡️ Пакет DBMS_XMLGEN позволяет преобразовывать результаты SQL-запросов в XML-формат. В отличие от DBMS_XMLDOM, этот пакет ориентирован на автоматическую генерацию XML из реляционных данных с минимальным участием разработчика.

Основные возможности:

· Преобразование результатов SELECT в XML любого уровня вложенности;
· Настройка форматирования: имя корневого элемента, кодировка, отступы;
· Поддержка как прямой генерации в память, так и потокового вывода;
· Возможность задавать правила отображения столбцов в XML-элементы.

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

-- Простейшая генерация XML из результата запроса
DECLARE
v_ctx DBMS_XMLGEN.ctxHandle;
v_xml XMLType;
BEGIN
v_ctx := DBMS_XMLGEN.newContext('SELECT id, name, salary FROM employees');
v_xml := DBMS_XMLGEN.getXML(v_ctx);
DBMS_OUTPUT.PUT_LINE(v_xml.getClobVal);
DBMS_XMLGEN.closeContext(v_ctx);
END;


-- Генерация XML с настройкой формата
DECLARE
v_ctx DBMS_XMLGEN.ctxHandle;
v_xml CLOB;
BEGIN
v_ctx := DBMS_XMLGEN.newContext('SELECT id, name FROM employees');
DBMS_XMLGEN.setRowSetTag(v_ctx, 'employees_list');
DBMS_XMLGEN.setRowTag(v_ctx, 'employee');
v_xml := DBMS_XMLGEN.getXML(v_ctx);
DBMS_OUTPUT.PUT_LINE(v_xml);
DBMS_XMLGEN.closeContext(v_ctx);
END;

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

· Экспорт табличных данных в XML для интеграции с внешними системами;
· Создание XML-представлений для веб-сервисов;
· Формирование XML-отчётов по шаблону «запрос — XML»;
· Быстрое прототипирование XML-интерфейсов без написания сложного парсинга.
Please open Telegram to view this post
VIEW IN TELEGRAM
644
Дорогие подписчики!

✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle.
Сегодня разберём DBMS_CRYPTO и DBMS_REPORT.

DBMS_CRYPTO — криптографические функции

➡️ Пакет DBMS_CRYPTO предоставляет инструменты для хэширования данных.
В текущей реализации поддержана функция HASH, позволяющая вычислять контрольные суммы и хэш-значения для строк, чисел и бинарных данных.

Основные возможности:

· Вычисление хэша алгоритмами MD5, SHA-1, SHA-256;
· Поддержка входных данных типов VARCHAR2, CLOB, RAW, BLOB;
· Совместимость с синтаксисом Oracle DBMS_CRYPTO.HASH;
· Возврат результата в формате RAW.

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

-- Вычисление MD5-хэша для строки
DECLARE
v_hash RAW(16);
BEGIN
v_hash := DBMS_CRYPTO.HASH(
UTL_I18N.STRING_TO_RAW('Hello, Digital Q.DataBase', 'AL32UTF8'),
DBMS_CRYPTO.HASH_MD5
);
DBMS_OUTPUT.PUT_LINE(RAWTOHEX(v_hash));
END;


-- Вычисление SHA-256 для проверки целостности данных
SELECT DBMS_CRYPTO.HASH(
UTL_I18N.STRING_TO_RAW(data_column, 'AL32UTF8'),
DBMS_CRYPTO.HASH_SH256
) AS data_hash
FROM my_table;


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

· Проверка целостности данных при передаче между системами;
· Создание контрольных сумм для выгрузок и архивов;
· Хэширование паролей и чувствительной информации;
· Обнаружение дубликатов через хэш-индексы.

DBMS_REPORT — формирование отчётов и преобразования

➡️ Пакет DBMS_REPORT предоставляет вспомогательные функции для работы с отчётами и преобразованиями данных. В текущей версии реализованы функции JSON_TO_TEXT и ZLIB2BASE64_CLOB.

JSON_TO_TEXT — преобразование JSON в читаемый текст

➡️ Функция JSON_TO_TEXT преобразует JSON-документ в форматированное текстовое представление, удобное для включения в отчёты и логи.

-- Преобразование JSON в текстовый вид
DECLARE
v_json CLOB := '{"employees":[{"id":1,"name":"Иванов"},{"id":2,"name":"Петров"}]}';
v_text CLOB;
BEGIN
v_text := DBMS_REPORT.JSON_TO_TEXT(v_json);
DBMS_OUTPUT.PUT_LINE(v_text);
END;


ZLIB2BASE64_CLOB — распаковка и декодирование

➡️ Функция ZLIB2BASE64_CLOB принимает строку в формате BASE64, сжатую алгоритмом ZLIB, и возвращает распакованный результат в виде CLOB. Полезна для обработки данных, передаваемых в сжатом виде через API и веб-сервисы.

-- Декодирование и распаковка сжатых данных
DECLARE
v_compressed_base64 VARCHAR2(32767); -- сжатые и закодированные данные
v_decompressed CLOB;
BEGIN
v_decompressed := DBMS_REPORT.ZLIB2BASE64_CLOB(v_compressed_base64);
DBMS_OUTPUT.PUT_LINE(v_decompressed);
END;


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

· Формирование удобочитаемых логов из JSON-сообщений;
· Подготовка данных для включения в текстовые отчёты;
· Распаковка сжатых ответов от внешних API;
· Обработка данных, передаваемых в BASE64 через веб-сервисы.
Please open Telegram to view this post
VIEW IN TELEGRAM
544
⚡️Друзья, сегодня в рубрике «Пост выходного дня» — история о самой крошечной и одновременно самой массовой реляционной СУБД в мире.

✅ Это SQLite и прямо сейчас на различных устройствах запущено около 5 триллионов (триллион, при записи цифрами, — это единица и потом 12 нулей!) активных экземпляров этой СУБД. Её SQL-диалект немного похож на T-SQL, который используется внутри Microsoft SQL Server и в нашей Digital Q.DataBase.

✅ Интересно, что 97% кода SQLite написал всего один человек — Ричард Хипп. В мае 2000 года он всего за одни выходные (с вечера пятницы до утра понедельника) написал её первую версию. Просто потому, что устал терпеть баги от программы синхронизации электронной почты, которая была установлена на борту эсминца ВМС США USS McCampbell, где Хипп работал в качестве инженера. Исходная программа была построена на технологиях от Microsoft и постоянно падала. Ричард Хипп написал свою замену для нее, назвав это "временным исправлением".
Военные тогда сказали: «Пусть пока работает так, а через полгода мы купим нормальную СУБД». Прошло почти 26 лет, но написанная Хиппом программа до сих пор работает как часы.

Ричард Хипп потом шутил в одном из интервью: «Лучший способ сделать софт вечным — назвать его "временным фиксом". Тогда его никто не тронет».

✅ Главная философия автора: СУБД не имеет права падать. SQLite написана на языке C. Не доверяя посторонним, Хипп лично написал 97% её программного кода. За первые 15 лет существования SQLite он и вовсе не принял ни одного коммита от внешних разработчиков.

SQLite настолько мала по размеру и надёжна, что её код встроен в:
· бортовые системы самолетов Airbus и Boeing,
· марсоход NASA Perseverance,
· мультимедиа и телеметрию автомобилей Tesla и большинства китайских автомобилей.

✅ Даже в Вашем смартфоне прямо сейчас работает от 1 до 20 экземпляров этой СУБД (для хранения Вашего списка контактов, для хранения истории Вашего браузера, внутри почтовой программы, в приложении для воспроизведения музыки и т.д.).

Ричард Хипп не заработал на SQLite миллиарды, но зато получил всемирное признание. На вопрос «А Вам не надоело?» он ответил: «Мне нравится создавать инструмент, который делает людей чуточку счастливее».

✅ Сегодня, когда всё вокруг требует облаков и кластеров, SQLite напоминает: иногда гениальное — это просто быть надёжным инструментом, который всегда под рукой.

Пусть и в Ваших проектах будет такой фундамент. Даже если над ним работает всего один человек. 🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
953
Дорогие подписчики!

Сегодня , 12 апреля — удивительный день, когда космос и светлая Пасха встретились в одной дате.

С днём космонавтики!

65 лет назад Юрий Гагарин сказал «Поехали!» — и человечество навсегда изменило своё представление о возможном. С тех пор 12 апреля — день, когда мы вспоминаем, что границы существуют только для того, чтобы их раздвигать.

С Пасхой!

В этом году православная Пасха также приходится на 12 апреля. Праздник обновления, надежды и победы жизни.

Две разные высоты. Одна — физическая, за пределами земной атмосферы. Другая — духовная. Но обе напоминают: всегда есть куда расти и во что верить.

С праздниками! Светлой Пасхи и удачного космического полёта по жизни.
744
🔥 В этом видео я покажу полный процесс установки и базовой настройки Digital Q.DataBase 18.1 на операционной системе ALSE 1.8.3 «Воронеж» (ядро 6.12), а также разберу ключевые моменты, на которые стоит обратить внимание при развёртывании.

В этом видео:
🟣Установка Astra Linux 1.8.3 «Воронеж»
🟣как скачать актуальный дистрибутив Digital Q.DataBase 18.1
🟣базовые настройки системы: кодировки и сетевые параметры
🟣установка серверной части
🟣установка клиентской части
🟣где скачать и как использовать DBeaver
🟣выполнение тестовых скриптов на T-SQL и PL/SQL

Видео пока выходит без звука.
Версия с комментариями будет опубликована отдельно.

➡️ Rutube видео
Please open Telegram to view this post
VIEW IN TELEGRAM
543