Дорогие подписчики!
🟣 Сегодня — необычный праздник. 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.
Подпишись на МАХ канал!
Для создания резервных копий используется утилита 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 обеспечивает схожий пользовательский опыт.
Резервная копия ценна только тогда, когда проверена ее восстановление. Рекомендуется периодически тестировать восстановление из бэкапов на тестовом окружении — это единственный способ убедиться, что в критический момент всё пройдёт штатно.
Всемирный день бэкапа — хороший повод проверить, настроено ли у вас регулярное резервное копирование. Если нет — сегодня отличный день, чтобы это исправить!
Подпишись на МАХ канал!
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ В Digital Q.DataBase мы последовательно расширяем набор встроенных пакетов, обеспечивающих совместимость с PL/SQL-окружением Oracle.
Сегодня я расскажу Вам о двух важных пакетах, которые были добавлены (в числе прочих) в последнюю вышедшую версию Digital Q.DataBase.
DBMS_ALERT — уведомления между сеансами
✅ Пакет DBMS_ALERT предоставляет механизм асинхронной передачи уведомлений между различными сеансами работы с базой данных. Это позволяет одному сеансу отправить сигнал о наступлении определенного события, а другим сеансам — ожидать его и реагировать.
Основные возможности:
· Регистрация на получение уведомлений с указанием имени сигнала;
· Отправка уведомлений с возможностью передачи короткого текстового сообщения;
· Ожидание уведомления с настройкой таймаута;
· Возможность одного сеанса подписаться на несколько сигналов одновременно.
Пример использования:
Области применения:
· Оповещение прикладных модулей об изменении справочных данных;
· Координация работы параллельных процессов;
· Информирование администраторов о наступлении пороговых событий.
DBMS_APPLICATION_INFO — мониторинг выполнения операций
✅ Пакет DBMS_APPLICATION_INFO позволяет приложению передавать в СУБД информацию о текущей выполняемой операции. Эти данные становятся доступными через системные представления и могут использоваться для мониторинга, отладки и аудита.
Основные возможности:
· Установка имени модуля (MODULE), который в данный момент выполняется;
· Установка имени действия (ACTION) внутри модуля;
· Передача дополнительной клиентской информации (CLIENT_INFO);
· Отслеживание прогресса выполнения длительных операций.
Пример использования:
Области применения:
· Отслеживание длительных операций в системах мониторинга;
· Идентификация источника нагрузки в представлениях сессий;
· Аудит действий прикладного кода;
· Отладка сложных хранимых процедур.
✅ В ближайшее время расскажем Вам и о других DBMS пакетах, добавленных в вышедшую 21 марта версию.
Сегодня я расскажу Вам о двух важных пакетах, которые были добавлены (в числе прочих) в последнюю вышедшую версию Digital Q.DataBase.
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 — мониторинг выполнения операций
Основные возможности:
· Установка имени модуля (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);
Области применения:
· Отслеживание длительных операций в системах мониторинга;
· Идентификация источника нагрузки в представлениях сессий;
· Аудит действий прикладного кода;
· Отладка сложных хранимых процедур.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета из тех, что попали в последний выпуск (версия от 21 марта), — DBMS_LOCK и DBMS_ODCI.
DBMS_LOCK — пользовательские блокировки
✅ Пакет DBMS_LOCK предоставляет механизм создания блокировок, управляемых непосредственно прикладным кодом. Это позволяет синхронизировать выполнение нескольких сеансов при работе с общими ресурсами, не затрагивая стандартные механизмы блокировок строк и таблиц.
Основные возможности:
· Запрос и освобождение блокировки с указанием имени и режима;
· Преобразование режима уже полученной блокировки;
· Проверка идентификатора блокировки по имени;
· Ожидание освобождения блокировки с настройкой таймаута.
Пример использования:
Области применения:
· Ограничение одновременного выполнения одной и той же процедуры;
· Синхронизация доступа к внешним системам (файловая система, API);
· Реализация очередей и пулов ресурсов на уровне приложения;
· Защита критических участков кода при параллельных вызовах.
DBMS_ODCI — управление контекстом транзакций
✅ Пакет DBMS_ODCI предоставляет функции для работы с контекстом выполнения и управления состоянием транзакций в пользовательских типах данных и методах. Этот пакет используется преимущественно при реализации пользовательских индексов и операторов расширения данных.
Основные возможности:
· Получение информации о текущем состоянии транзакции;
· Управление контекстом выполнения для методов пользовательских типов;
· Поддержка кастомных реализаций индексов (ODCI — Oracle Data Cartridge Interface);
· Обеспечение корректной фиксации и отката в расширенных сценариях.
Пример использования:
Области применения:
· Разработка пользовательских типов данных со сложной транзакционной логикой;
· Создание нестандартных методов доступа к данным;
· Реализация расширений для полнотекстового поиска и пространственных данных;
· Интеграция с внешними движками обработки данных.
Хочу ещё раз напомнить - именно наличие большого количества аналогов DBMS_-пакетов Oracle позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
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 — управление контекстом транзакций
Основные возможности:
· Получение информации о текущем состоянии транзакции;
· Управление контекстом выполнения для методов пользовательских типов;
· Поддержка кастомных реализаций индексов (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
Первое — уже 21 апреля 2026: конференция о промышленной эксплуатации и архитектуре корпоративных данных.
Место проведения — Москва, Кибердом.
Наши профессионалы подробно объяснят реальные кейсы и практику внедрения.
Обязательно регистрируйтесь
https://dbd.diasoft.ru/?utm_source=andrei#programme
Увидимся!
Please open Telegram to view this post
VIEW IN TELEGRAM
Диасофту 35 лет!
Сегодня, 4 апреля, нашей компании исполнилось 35 лет.
Вот уже 35 лет мы работаем для Вас, создавая IT-системы, которым доверяют!
🚀 Многие знают, что нашу Компанию основали выходцы из Центра Управления Полетами. Люди, для которых «надежность» — не маркетинг, а безусловный приоритет в оценке результатов деятельности.
За минувшие годы мы выросли в крупного разработчика ПО. И сегодня, празднуя 35 лет со дня основания компании, мы хотим выразить благодарность нашим клиентам, партнёрам и всем, кто пользуется нашими продуктами.
И мы очень рады развивать для Вас нашу СУБД Digital Q.DataBase - продукт в котором особенно важно сохранить наследие и традиции ЦУП.
🙌 Нам будет очень приятно получить Ваши поздравления с днем рождения компании и Ваши отзывы об использовании нашего продукта на наш адрес: supportqdb@diasoft.ru.
Сегодня, 4 апреля, нашей компании исполнилось 35 лет.
Вот уже 35 лет мы работаем для Вас, создавая IT-системы, которым доверяют!
🚀 Многие знают, что нашу Компанию основали выходцы из Центра Управления Полетами. Люди, для которых «надежность» — не маркетинг, а безусловный приоритет в оценке результатов деятельности.
За минувшие годы мы выросли в крупного разработчика ПО. И сегодня, празднуя 35 лет со дня основания компании, мы хотим выразить благодарность нашим клиентам, партнёрам и всем, кто пользуется нашими продуктами.
И мы очень рады развивать для Вас нашу СУБД Digital Q.DataBase - продукт в котором особенно важно сохранить наследие и традиции ЦУП.
Please open Telegram to view this post
VIEW IN TELEGRAM
Уважаемые подписчики!
Хочу напомнить Вам о двух каналах, связанных с нашей Компанией:
⚡️ Канал о цифровизации финансовых компаний, мнения экспертов отрасли, новости банков, регулятора и IT-разработчиков:
🌐
https://t.me/DiasoftNews_channel
⚡️ Канал о технологиях и эффективном производстве современных IT-решений:
🌐
https://t.me/DiasoftTechno_Channel
Тут Вы сможете узнавать о важных новостях, связанных с нашей компанией.
Хочу напомнить Вам о двух каналах, связанных с нашей Компанией:
https://t.me/DiasoftNews_channel
https://t.me/DiasoftTechno_Channel
Тут Вы сможете узнавать о важных новостях, связанных с нашей компанией.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
✅ Продолжаем рассказывать о встроенных пакетах Digital Q.DataBase, обеспечивающих совместимость с PL/SQL-окружением Oracle. Сегодня разберём ещё два пакета из тех, что попали в последний выпуск (версия от 21 марта), — DBMS_ERRLOG и DBMS_HASH.
DBMS_ERRLOG — логирование ошибок DML-операций
➡️ Пакет DBMS_ERRLOG позволяет сохранять информацию об ошибках, возникающих при выполнении массовых DML-операций (INSERT, UPDATE, MERGE, DELETE), без прерывания всего процесса. Это особенно полезно при загрузке больших объёмов данных, когда отдельные некорректные записи не должны останавливать обработку всего набора.
Основные возможности:
· Создание таблицы логирования ошибок для указанной таблицы;
· Продолжение выполнения DML-операции при возникновении ошибок в отдельных строках;
· Фиксация кода ошибки, номера строки и значений ошибочных колонок;
· Настройка перечня колонок, подлежащих логированию.
Пример использования:
Области применения:
· Загрузка данных из внешних источников с «грязными» данными;
· Массовые обновления в условиях, когда часть строк не проходит валидацию;
· Аудит и анализ причин отбраковки данных при ETL-процессах;
· Обеспечение отказоустойчивости пакетной обработки.
DBMS_HASH — хэширование данных
➡️ Пакет DBMS_HASH предоставляет функции для вычисления хэш-значений данных различных типов. Это позволяет создавать контрольные суммы, сравнивать большие объёмы данных, реализовывать механизмы кэширования и проверки целостности.
Основные возможности:
· Вычисление хэша для значений типов VARCHAR2, NUMBER, DATE, RAW, CLOB, BLOB;
· Поддержка алгоритмов MD5 и SHA-1 (совместимость с Oracle);
· Получение хэша от конкатенации нескольких значений;
· Использование в выражениях SQL и PL/SQL.
Пример использования:
Области применения:
· Сравнение содержимого двух таблиц без построчного обхода;
· Проверка целостности данных при репликации;
· Создание ключей кэширования на основе сложных составных данных;
· Обнаружение дубликатов при отсутствии однозначного первичного ключа;
· Контроль неизменности конфигурационных данных.
✅ Хочу ещё раз напомнить: именно наличие большого количества аналогов DBMS-пакетов Oracle, позволяющих не изменять хранимую бизнес-логику при уходе с Oracle, делает Digital Q.DataBase наиболее рациональным вариантом для замены этой зарубежной СУБД.
DBMS_ERRLOG — логирование ошибок DML-операций
Основные возможности:
· Создание таблицы логирования ошибок для указанной таблицы;
· Продолжение выполнения 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 — хэширование данных
Основные возможности:
· Вычисление хэша для значений типов 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;Области применения:
· Сравнение содержимого двух таблиц без построчного обхода;
· Проверка целостности данных при репликации;
· Создание ключей кэширования на основе сложных составных данных;
· Обнаружение дубликатов при отсутствии однозначного первичного ключа;
· Контроль неизменности конфигурационных данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
➡️ Продолжаем рассказывать о доработках, вошедших в последний выпуск Digital Q.DataBase (версия от 21 марта). Сегодня — о рабочей поддержке команды UPDATE STATISTICS.
Для чего нужна эта команда
➡️ Статистика — это метаданные, которые описывают распределение данных в таблицах и индексах. Оптимизатор запросов использует их для выбора наиболее эффективного плана выполнения. Если статистика устаревает, например после массовой вставки, обновления или удаления данных, оптимизатор может принять неверное решение, что приведёт к падению производительности.
Команда UPDATE STATISTICS обновляет эту информацию, позволяя оптимизатору строить актуальные планы запросов.
Что именно добавлено
➡️ В Digital Q.DataBase теперь поддерживаются следующие варианты синтаксиса UPDATE STATISTICS, совместимые с MS SQL Server:
Основные возможности:
· Обновление статистики на уровне таблицы, отдельного индекса или статистического объекта;
· Выбор режима сбора данных: полное сканирование или указание процента выборки;
· Совместимость с существующими скриптами и хранимыми процедурами, переходящими с MS SQL Server.
Пример использования в миграционных сценариях
➡️ При переходе с MS SQL Server на Digital Q.DataBase многие приложения содержат вызовы UPDATE STATISTICS и sp_updatestats в регламентных заданиях. Ранее такие вызовы приходилось удалять или заменять. Теперь основные прикладные сценарии работают без изменений:
➡️ В текущей реализации поддерживаются основные варианты синтаксиса и вызовы системной процедуры, необходимые для подавляющего большинства прикладных сценариев обслуживания и миграции.
➡️ Хочу ещё раз напомнить: именно такие, на первый взгляд небольшие, доработки делают переход с зарубежных СУБД на Digital Q.DataBase максимально плавным. Хранимые процедуры, регламентные задания и скрипты обслуживания продолжают работать так же, как и раньше, — без переписывания.
Для чего нужна эта команда
Команда UPDATE STATISTICS обновляет эту информацию, позволяя оптимизатору строить актуальные планы запросов.
Что именно добавлено
-- Обновление статистики по указанной таблице
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
EXEC sp_updatestats; -- Вызов хранимой процедуры обновления статистики по всей БД
-- Или прямая команда
UPDATE STATISTICS sales.orders WITH FULLSCAN;
Please open Telegram to view this post
VIEW IN TELEGRAM
«Мучения клиента выгодны бизнесу».
Я показал, что это возможно, если СУБД изначально спроектирована с учетом реальных сценариев миграции, а не просто повторяет PostgreSQL с частичными доработками.
Отдельно разобрали, почему классические подходы через «форки ради форков» создают для заказчика:
почему другие отечественные компании не достигли такого же результата?
либо у них нет технологий и ресурсов,
либо они не стремятся облегчать переход заказчику,
так как «мучение клиента» выгодно для бизнеса.
Обсуждение получилось живым, а сам тезис разошёлся далеко за пределы мероприятия.
Порой правда звучит немного неудобно - зато её хорошо запоминают.
Статья на Tadviser
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
➡️ Продолжаем рассказывать о встроенных пакетах 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.
Пример использования:
Области применения:
· Формирование сложных XML-отчётов внутри базы данных;
· Генерация XML-файлов для обмена с внешними системами;
· Разбор входящих XML-сообщений без привлечения внешних парсеров;
· Преобразование реляционных данных в иерархические XML-структуры.
DBMS_XMLGEN — преобразование SQL-результатов в XML
➡️ Пакет DBMS_XMLGEN позволяет преобразовывать результаты SQL-запросов в XML-формат. В отличие от DBMS_XMLDOM, этот пакет ориентирован на автоматическую генерацию XML из реляционных данных с минимальным участием разработчика.
Основные возможности:
· Преобразование результатов SELECT в XML любого уровня вложенности;
· Настройка форматирования: имя корневого элемента, кодировка, отступы;
· Поддержка как прямой генерации в память, так и потокового вывода;
· Возможность задавать правила отображения столбцов в XML-элементы.
Пример использования:
Области применения:
· Экспорт табличных данных в XML для интеграции с внешними системами;
· Создание XML-представлений для веб-сервисов;
· Формирование XML-отчётов по шаблону «запрос — XML»;
· Быстрое прототипирование XML-интерфейсов без написания сложного парсинга.
DBMS_XMLDOM — работа с XML-документами через DOM-модель
Основные возможности:
· Создание 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
Основные возможности:
· Преобразование результатов 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
Дорогие подписчики!
✅ Продолжаем рассказывать о встроенных пакетах 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.
Пример использования:
Области применения:
· Проверка целостности данных при передаче между системами;
· Создание контрольных сумм для выгрузок и архивов;
· Хэширование паролей и чувствительной информации;
· Обнаружение дубликатов через хэш-индексы.
DBMS_REPORT — формирование отчётов и преобразования
➡️ Пакет DBMS_REPORT предоставляет вспомогательные функции для работы с отчётами и преобразованиями данных. В текущей версии реализованы функции JSON_TO_TEXT и ZLIB2BASE64_CLOB.
JSON_TO_TEXT — преобразование JSON в читаемый текст
➡️ Функция JSON_TO_TEXT преобразует JSON-документ в форматированное текстовое представление, удобное для включения в отчёты и логи.
ZLIB2BASE64_CLOB — распаковка и декодирование
➡️ Функция ZLIB2BASE64_CLOB принимает строку в формате BASE64, сжатую алгоритмом ZLIB, и возвращает распакованный результат в виде CLOB. Полезна для обработки данных, передаваемых в сжатом виде через API и веб-сервисы.
Области применения DBMS_REPORT:
· Формирование удобочитаемых логов из JSON-сообщений;
· Подготовка данных для включения в текстовые отчёты;
· Распаковка сжатых ответов от внешних API;
· Обработка данных, передаваемых в BASE64 через веб-сервисы.
Сегодня разберём DBMS_CRYPTO и DBMS_REPORT.
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 — формирование отчётов и преобразования
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 — распаковка и декодирование
-- Декодирование и распаковка сжатых данных
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
Военные тогда сказали: «Пусть пока работает так, а через полгода мы купим нормальную СУБД». Прошло почти 26 лет, но написанная Хиппом программа до сих пор работает как часы.
Ричард Хипп потом шутил в одном из интервью: «Лучший способ сделать софт вечным — назвать его "временным фиксом". Тогда его никто не тронет».
SQLite настолько мала по размеру и надёжна, что её код встроен в:
· бортовые системы самолетов Airbus и Boeing,
· марсоход NASA Perseverance,
· мультимедиа и телеметрию автомобилей Tesla и большинства китайских автомобилей.
Ричард Хипп не заработал на SQLite миллиарды, но зато получил всемирное признание. На вопрос «А Вам не надоело?» он ответил: «Мне нравится создавать инструмент, который делает людей чуточку счастливее».
Пусть и в Ваших проектах будет такой фундамент. Даже если над ним работает всего один человек. 🌱
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
Сегодня , 12 апреля — удивительный день, когда космос и светлая Пасха встретились в одной дате.
С днём космонавтики!
65 лет назад Юрий Гагарин сказал «Поехали!» — и человечество навсегда изменило своё представление о возможном. С тех пор 12 апреля — день, когда мы вспоминаем, что границы существуют только для того, чтобы их раздвигать.
С Пасхой!
В этом году православная Пасха также приходится на 12 апреля. Праздник обновления, надежды и победы жизни.
Две разные высоты. Одна — физическая, за пределами земной атмосферы. Другая — духовная. Но обе напоминают: всегда есть куда расти и во что верить.
С праздниками! Светлой Пасхи и удачного космического полёта по жизни.
Сегодня , 12 апреля — удивительный день, когда космос и светлая Пасха встретились в одной дате.
С днём космонавтики!
65 лет назад Юрий Гагарин сказал «Поехали!» — и человечество навсегда изменило своё представление о возможном. С тех пор 12 апреля — день, когда мы вспоминаем, что границы существуют только для того, чтобы их раздвигать.
С Пасхой!
В этом году православная Пасха также приходится на 12 апреля. Праздник обновления, надежды и победы жизни.
Две разные высоты. Одна — физическая, за пределами земной атмосферы. Другая — духовная. Но обе напоминают: всегда есть куда расти и во что верить.
С праздниками! Светлой Пасхи и удачного космического полёта по жизни.
В этом видео:
Видео пока выходит без звука.
Версия с комментариями будет опубликована отдельно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
🟣 Продолжаем рассказывать о доработках, вошедших в последний выпуск Digital Q.DataBase. Сегодня — о поддержке методов работы с XML в нашей реализации T-SQL-диалекта. Начнём с метода value().
value() — извлечение скалярных значений из XML
🟣 Метод value() позволяет получить единственное значение из XML-документа по указанному XPath-выражению. Это один из наиболее востребованных методов при работе с XML-данными в MS SQL Server.
Пример использования:
Основные возможности:
· Извлечение скалярных значений по XPath-выражению;
· Поддержка типов VARCHAR, INT, DECIMAL, DATE, DATETIME;
· Работа с элементами и атрибутами;
· Возврат NULL при отсутствии узла.
🟣 Метод value() доступен в Digital Q.DataBese, начиная с версии от 21 марта.
value() — извлечение скалярных значений из XML
Пример использования:
-- Извлечение значения из XML-столбца
SELECT
id,
xml_data.value('(/employee/name)[1]', 'varchar(100)') AS employee_name
FROM employees_xml;
-- Использование в условиях WHERE
SELECT *
FROM orders_xml
WHERE orders_xml.value('(/order/amount)[1]', 'decimal(10,2)') > 10000;
Основные возможности:
· Извлечение скалярных значений по XPath-выражению;
· Поддержка типов VARCHAR, INT, DECIMAL, DATE, DATETIME;
· Работа с элементами и атрибутами;
· Возврат NULL при отсутствии узла.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
🟣 Продолжаем рассказывать о поддержке XML-методов в Digital Q.DataBase. Сегодня — о методе query().
query() — извлечение фрагментов XML
🟣 Метод query() позволяет получить из XML-документа один или несколько узлов в виде отдельного XML-фрагмента. В отличие от value(), возвращающего скаляр, query() сохраняет структуру XML.
Пример использования:
Основные возможности:
· Возврат результата в виде XML-фрагмента;
· Поддержка сложных XPath-выражений с условиями;
· Сохранение иерархической структуры узлов;
· Возможность вложения query() в другие выражения.
🟣 Метод query() доступен в Digital Q.DataBase, начиная с версии от 21 марта.
query() — извлечение фрагментов XML
Пример использования:
-- Извлечение поддерева XML
SELECT
id,
xml_data.query('/employee/address') AS address_xml
FROM employees_xml;
-- Получение нескольких узлов
SELECT
xml_data.query('/order/items/item[@quantity > 1]') AS important_items
FROM orders_xml;
Основные возможности:
· Возврат результата в виде XML-фрагмента;
· Поддержка сложных XPath-выражений с условиями;
· Сохранение иерархической структуры узлов;
· Возможность вложения query() в другие выражения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Дорогие подписчики!
🟣 Продолжаем рассказывать о поддержке XML-методов в Digital Q.DataBase. Сегодня — о методе nodes().
nodes() — развертывание XML в реляционные строки
🟣 Метод nodes() позволяет преобразовать XML-документ в набор строк, где каждая строка соответствует одному узлу. Это особенно полезно, когда в XML-документе содержится несколько однотипных элементов (например, список сотрудников или товаров).
Пример использования:
Основные возможности:
· Преобразование XML-документа в реляционное представление;
· Работа с CROSS APPLY и OUTER APPLY;
· Поддержка XPath-выражений для отбора узлов;
· Комбинирование с другими XML-методами.
nodes() — развертывание XML в реляционные строки
Пример использования:
-- Развертывание списка сотрудников в строки
SELECT
id AS parent_id,
node.value('(name)[1]', 'varchar(100)') AS name,
node.value('(salary)[1]', 'int') AS salary
FROM departments_xml
CROSS APPLY xml_data.nodes('/department/employees/employee') AS ref(node);
-- Развертывание с фильтрацией
SELECT
node.value('(@id)[1]', 'int') AS product_id,
node.value('(price)[1]', 'decimal(10,2)') AS price
FROM products_xml
CROSS APPLY xml_data.nodes('/catalog/product[price > 1000]') AS ref(node);
Основные возможности:
· Преобразование XML-документа в реляционное представление;
· Работа с CROSS APPLY и OUTER APPLY;
· Поддержка XPath-выражений для отбора узлов;
· Комбинирование с другими XML-методами.
Please open Telegram to view this post
VIEW IN TELEGRAM
2 3 2 2
📅 21 апреля 2026 — встреча для тех, кто принимает решения в области данных и инфраструктуры.
Если вы работаете с высоконагруженными системами, думаете об импортозамещении или ищете устойчивые архитектурные решения — это мероприятие точно стоит вашего времени.
На конференции разберём:
До встречи!
Please open Telegram to view this post
VIEW IN TELEGRAM
1 7 5 5
Сегодня в "посте выходного дня" мы поговорим о том, как слон по имени Слоник (Slonik) стал логотипом PostgreSQL
Большинство современных систем на базе PostgreSQL используют изображение слона как часть своего логотипа. Тем самым они подчеркивают свою связь с проектом PostgreSQL, логотипом которого в настоящее время является голова слона.
Некоторые даже знают, что у этого логотипа есть собственное имя - Slonik, что происходит от русского слова "слоник", то есть маленький слон.
Почему именно слон был выбран в качестве логотипа? Считается, что это отсылка к детективу Агаты Кристи «Слоны умеют помнить». Символизм заключается в том, что хорошая база данных (как и слон) не забывает информацию и хранит её вечно.
Но всегда ли слон был логотипом PostgreSQL? Оказывается нет.
Самым первым логотипом PostgreSQL (использованный вскоре после переименования проекта) была надпись PostgreSQL, которая пробивается к зрителю из космоса сквозь разлетающуюся на куски кирпичную стену. Одновременно с ним использовалось изображение гепарда, разместившегося на первых буквах названия, в сочетании с надписью "Empowered".
Новый логотип придумывали и обсуждали довольно долго. В качестве идей для логотипа рассматривались аллигатор, гепард, лев или львица, тигрица, газель, орел, слон и даже собака. Были и совсем странные варианты, например, рыцарский меч, миска супа (с плавающими в ней буквами PostgreSQL), каменный мост и даже револьвер наёмного убийцы. Однако идея со слоном оказалась самой удачной.
Изображение "слона в алмазе", помещенное в файл slonik.gif, в сообщество PostgreSQL прислал Дмитрий Самерсов из Санкт-Петербурга. По его словам реальным автором этой картинки была его подруга.
Позже швед Daniel Lundin убрал алмаз и именно в таком виде изображение и стало новым официальным логотипом проекта.
Однако не во всех странах именно оно олицетворяет проект PostgreSQL. Так, например, в Японии принято использовать изображение черепахи.
Почему черепаха стала логотипом японского сообщества пользователей PostgreSQL?
Дело в том, что еще в 1970-х годах черепаха использовалась в качестве талисмана INGRES. Ее выбрали потому что "она медленная, но всегда добирается, куда нужно". И она была сохранена как талисман POSTGRES по сентиментальным причинам. Сделав её логотипом своего сообщества, японские пользователи подчеркнули связь PostgreSQL с этим проектами.
Наверное, японцы что-то знают? 🤣
Большинство современных систем на базе PostgreSQL используют изображение слона как часть своего логотипа. Тем самым они подчеркивают свою связь с проектом PostgreSQL, логотипом которого в настоящее время является голова слона.
Некоторые даже знают, что у этого логотипа есть собственное имя - Slonik, что происходит от русского слова "слоник", то есть маленький слон.
Почему именно слон был выбран в качестве логотипа? Считается, что это отсылка к детективу Агаты Кристи «Слоны умеют помнить». Символизм заключается в том, что хорошая база данных (как и слон) не забывает информацию и хранит её вечно.
Но всегда ли слон был логотипом PostgreSQL? Оказывается нет.
Самым первым логотипом PostgreSQL (использованный вскоре после переименования проекта) была надпись PostgreSQL, которая пробивается к зрителю из космоса сквозь разлетающуюся на куски кирпичную стену. Одновременно с ним использовалось изображение гепарда, разместившегося на первых буквах названия, в сочетании с надписью "Empowered".
Новый логотип придумывали и обсуждали довольно долго. В качестве идей для логотипа рассматривались аллигатор, гепард, лев или львица, тигрица, газель, орел, слон и даже собака. Были и совсем странные варианты, например, рыцарский меч, миска супа (с плавающими в ней буквами PostgreSQL), каменный мост и даже револьвер наёмного убийцы. Однако идея со слоном оказалась самой удачной.
Изображение "слона в алмазе", помещенное в файл slonik.gif, в сообщество PostgreSQL прислал Дмитрий Самерсов из Санкт-Петербурга. По его словам реальным автором этой картинки была его подруга.
Позже швед Daniel Lundin убрал алмаз и именно в таком виде изображение и стало новым официальным логотипом проекта.
Однако не во всех странах именно оно олицетворяет проект PostgreSQL. Так, например, в Японии принято использовать изображение черепахи.
Почему черепаха стала логотипом японского сообщества пользователей PostgreSQL?
Дело в том, что еще в 1970-х годах черепаха использовалась в качестве талисмана INGRES. Ее выбрали потому что "она медленная, но всегда добирается, куда нужно". И она была сохранена как талисман POSTGRES по сентиментальным причинам. Сделав её логотипом своего сообщества, японские пользователи подчеркнули связь PostgreSQL с этим проектами.
Наверное, японцы что-то знают? 🤣
1 7 5 4
Друзья, сегодня в рубрике «Пост выходного дня» — история одного из самых известных (и хорошо задокументированных) "маркетинговых ходов" в истории СУБД.
⛔️ Версия, которой не было
В 1979 году вышла Oracle V2.
Версии 1 не существовало в принципе.
Логика была простая: никто не захочет покупать «сырую первую версию». Поэтому продукт сразу назвали «второй версией» — чтобы он выглядел более зрелым и проверенным.
Вот только зрелости в нём не было. Один из первых сотрудников компании Oracle - Стюарт Фейгин позже вспоминал:
«Наша версия два была как минимум такой же глючной, как у кого-либо версия один».
Сами разработчики называли её «мотелем для тараканов».
❗️ Чем это обернулось к 1990 году
Такая "лихая" тактика продаж едва не уничтожила компанию. Её продукты не соответствовали обещаниям маркетинга. А выход особенно сырой шестой версии окончательно добил доверие клиентов.
Спасла ситуацию только седьмая версия Oracle, увидевшая свет в 1992 году — благодаря своему высокому качеству она действительно стала прорывом и уже в первый год после выпуска заняла 50% рынка баз данных для UNIX-систем.
В 1979 году вышла Oracle V2.
Версии 1 не существовало в принципе.
Логика была простая: никто не захочет покупать «сырую первую версию». Поэтому продукт сразу назвали «второй версией» — чтобы он выглядел более зрелым и проверенным.
Вот только зрелости в нём не было. Один из первых сотрудников компании Oracle - Стюарт Фейгин позже вспоминал:
«Наша версия два была как минимум такой же глючной, как у кого-либо версия один».
Сами разработчики называли её «мотелем для тараканов».
Такая "лихая" тактика продаж едва не уничтожила компанию. Её продукты не соответствовали обещаниям маркетинга. А выход особенно сырой шестой версии окончательно добил доверие клиентов.
Спасла ситуацию только седьмая версия Oracle, увидевшая свет в 1992 году — благодаря своему высокому качеству она действительно стала прорывом и уже в первый год после выпуска заняла 50% рынка баз данных для UNIX-систем.
Please open Telegram to view this post
VIEW IN TELEGRAM
1 5 4 3
Digital Q.DataBase 🎙
Photo
Дорогие подписчики!
Информирую Вас о том, что на сайте database.diasoft.ru появилась возможность скачать дистрибутивы для установки нашего аналога SQL Server Reporting Services (SSRS).
Перейдите в раздел "скачать бесплатно" и в выпадающем списке выберите "Службы отчётов Digital Q.DataBase".
Электронный адрес службы поддержки: supportqdb@diasoft.ru
Информирую Вас о том, что на сайте database.diasoft.ru появилась возможность скачать дистрибутивы для установки нашего аналога SQL Server Reporting Services (SSRS).
Перейдите в раздел "скачать бесплатно" и в выпадающем списке выберите "Службы отчётов Digital Q.DataBase".
Электронный адрес службы поддержки: supportqdb@diasoft.ru
1 5 4 3