Это позволяет кратно ускорять работу информационных систем, иногда даже в десятки раз.
Например, "горячие остатки" банковской системы в памяти.
Вместо того чтобы каждый раз собирать доступный для использования клиентом остаток по разным таблицам (остаток на счёте минус имеющиеся лимиты, блокировки, аресты), система лишь один самый первый раз рассчитывает его, а далее подвешивает в память.
Нужно обновить данные?
Они тут же обновляются и в памяти, и потому всегда остаются актуальными.
И ещё раз напомним, что для использования всего этого чуда не надо менять архитектуру системы, не надо иметь программиста-бэкендера на языке высокого уровня вроде Java, Go или C++ — достаточно того, что и так умеет обычный SQL-разработчик, которых в банке много.
Please open Telegram to view this post
VIEW IN TELEGRAM
8 7 5 4
Где они могут храниться❓
In-memory данные (в зависимости от потребностей и решаемой задачи) могут храниться:
🟣 в пределах одной сессии;
🟣 для всех сессий конкретного пользователя;
🟣 для всех пользователей, подключённых к одной БД;
🟣 глобально в пределах сервера или кластера серверов.
Есть возможность гибкого управления доступом к этим данным.
In-memory данные (в зависимости от потребностей и решаемой задачи) могут храниться:
Есть возможность гибкого управления доступом к этим данным.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 9 8 6
Если у вас есть ресурсоёмкая хранимая процедура, выполняющая некоторый нетривиальный расчёт, которую не хочется запускать каждый раз, можно:
А можно даже фоновым процессом обеспечить их актуальность для всех пользователей.
Можно в разы ускорить работу legacy-приложения, при этом не потребуется сильной переделки архитектуры или значительного переписывания логики SQL-процедур.
Вся обработка остаётся внутри базы!
Please open Telegram to view this post
VIEW IN TELEGRAM
9 8 6 5
Сегодня поговорим про ядро.
Итак, после протокола и интерпретатора запрос поступает к ядру СУБД.
Данный сервис является ядром СУБД.
Оно обрабатывает запросы пользователей, обеспечивает целостность данных, оптимизирует производительность и поддерживает параллельную работу множества клиентов.
Please open Telegram to view this post
VIEW IN TELEGRAM
11 10 5 4
В основе инструмента лежит pgBackRest, но мы интегрировали его в платформу Q.DataBase, обеспечили поддержку российских ОС (Astra Linux, РЕД ОС, Альт) и добавили управление через консоль «Центра управления».
Это не отдельный сторонний сервис, а часть экосистемы Q.DataBase — с единым администрированием и технической поддержкой.
Please open Telegram to view this post
VIEW IN TELEGRAM
9 7 5 4
Что это даёт:
Функционал:
Это решение позволяет стабилизировать работу приложений, ускорить доступ к данным и обеспечить готовность Digital Q.DataBase к задачам цифровой трансформации.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 8 6 5
PostgreSQL 19-devel на Linux
Ryzen 7950X, 32 ГБ RAM, SSD
Бенчмарк TPC-C (128 складов, 100 соединений)
Базовая производительность: ~7082 TPS (транзакций в секунду)
Postgres хранит считанные блоки в памяти для ускорения запросов. В нормальной конфигурации с 10 ГБ кэша он выдавал ~7082 TPS. Но при сжатии буфера до 2 МБ производительность рухнула ниже 500 TPS.
Обычно autovacuum запускается периодически. Здесь его настроили так, что даже один INSERT сразу вызывал уборку. В комбинации с маленьким кэшем это дало постоянные обращения к диску и падение до ~293 TPS.
Все изменения начали записываться в журнал (WAL) до внесения в базу максимально агрессивно. Результат — TPS упал ниже 100.
Параметры random_page_cost и cpu_index_tuple_cost завысили настолько, что планировщик перестал использовать индексы и перешёл на последовательное сканирование.
Даже при увеличении кэша до 8 МБ TPS стал меньше единицы.
Параметры io_method = worker и io_workers = 1 перевели систему в однопоточный режим. Итог — TPS около 0,1.
На 100 соединениях за 120 секунд завершились всего 11 транзакций — остальные упали с OOM или по таймауту.
Не ради практической пользы, а чтобы лучше понять, как работает Postgres изнутри.
Иногда изучение пределов системы даёт больше понимания, чем обычная оптимизация.
byteofdev.com/posts/making-postgres-slow
Please open Telegram to view this post
VIEW IN TELEGRAM
7 7 6 6
Адаптер разработан на базе проверенной технологии oracle_fdw, работает на импортонезависимом стеке и полностью соответствует требованиям цифровой трансформации.
Please open Telegram to view this post
VIEW IN TELEGRAM
11 6 5 5
С тех пор она стала лишь немного «умнее» и обросла новыми настройками, но архитектурно осталась прежней. Поэтому, несмотря на длительную историю, интерес к ней не угасает — её регулярно упоминают в статьях и обсуждениях.
Что ж, давайте разберёмся, какие у неё сильные и слабые стороны.
Код «олдскульный», поддержка и расширение требуют знаний Perl.
Таблицы с NESTED TABLES не конвертируются вообще.
Поддерживаются только «костыльно», логика часто ломается.
В Oracle их более 760.
В PostgreSQL есть расширение orafce, где реализованы лишь отдельные функции из самых популярных пакетов (например, dbms_output).
Но это капля в море — реальных поддержанных пакетов меньше десяти.
В итоге после конвертации процедуры, использующие пакеты, содержат вызовы к тому, чего в ванильном PostgreSQL просто нет.
Значит, либо переписывать вручную, либо логика ломается полностью.
Частично конвертируются, часто с потерями или предупреждениями.
Конвертируется плохо, требует ручной переписки.
Почти никогда не работает «из коробки».
Если процедура заработала без ручной правки — это вам просто очень повезло.
Реалистично воспринимать результат только как «подстрочник» для переписывания.
Код, сгенерированный утилитой, может быть рабочим, но неоптимальным для PostgreSQL.
Конфигурационный файл громоздкий и не всегда очевидный.
Без опыта миграции легко запутаться.
Please open Telegram to view this post
VIEW IN TELEGRAM
11 8 7 5
Существует и доработанная версия — ora2pgpro.
Please open Telegram to view this post
VIEW IN TELEGRAM
7 7 7 5
Ещё один претендент на звание «спасителя миграций».
Разберём, что он делает хорошо, а где придётся вздохнуть и править руками.
Плюсы
Тут они реально лучше ora2pg и даже ora2pgpro.
Минусы (и тут интереснее)
Please open Telegram to view this post
VIEW IN TELEGRAM
11 7 6 5
This media is not supported in your browser
VIEW IN TELEGRAM
16 9 6 5
которых не всегда хватает.
Если в СУБД нет аналогов для используемых в оригинальном PL/SQL-коде функций dbms-пакетов, нет понятия пакетов, нет ряда механизмов — ничего работоспособного почти наверняка не получится.
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
14 7 6 6
Наш подход можно описать просто: не нужно «приземлять» работающий клиентский код под ограниченные возможности большинства форков ванильного PostgreSQL.
Вместо этого нужно сделать обратное
Это значит, что СУБД должна уметь исполнять не только PL/pgSQL, но и PL/SQL, и даже T-SQL — напрямую, без промежуточных преобразований и ручных миграций.
В ней должны быть:
Когда в СУБД есть всё это, миграция с зарубежной платформы проходит просто, быстро и без боли.
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
12 7 6 6
Конвертация к синтаксису PostgreSQL для Q.DataBase просто не нужна - она прекрасно понимает и непреобразованные скрипты от MS SQL и Oracle.
Никто не вмешивается в текст ваших хранимых процедур или функций, которые успешно работали в зарубежной СУБД.
Они загружаются в Q.DataBase без изменений и работают максимально близко к оригиналу.
Продолжение
Please open Telegram to view this post
VIEW IN TELEGRAM
11 9 7 6
Когда Generate SQL Scripts в Microsoft SSMS падает с ошибкой «Out of memory», Мастер всё равно генерирует скрипты до конца.
Поэтому им пользуются даже те, кто ещё не перешёл на Digital Q.DataBase.
А те, кто уже перешёл, активно запускают PL/SQL и T-SQL наравне с родным #PostgreSQL
И мы продолжаем нашу историю
Please open Telegram to view this post
VIEW IN TELEGRAM
10 7 5 5
Please open Telegram to view this post
VIEW IN TELEGRAM
9 7 6 5
В заключение отмечу и один минус — он тут всего лишь один.
Наш инструмент «Мастер переноса БД» предполагает, что целевая СУБД умеет выполнять все то, что работало в исходной.
➡️ На текущий момент только одна российская СУБД умеет исполнять PL/SQL и T-SQL без из преобразования.
Поэтому полные возможности инструмента доступны лишь в его связке с нашей СУБД - Digital Q.DataBase.
Использовать его для миграции на «ванильный» PostgreSQL или его коммерческие форки с "недоразвитыми" по сравнению с MS SQL и Oracle функциональными возможностями нет никакого практического смысла.
➡️ Вывод
Мастер переноса БД в Digital Q.DataBase — это не просто утилита, а мост между популярными зарубежными и российской СУБД.
Он экономит время, убирает головную боль с "поломанными" хранимыми процедурами, кодировками и правами.
Система готова к работе сразу же после переноса.
Если вы всё ещё думаете, стоит ли пробовать Digital Q.DataBase, — начните с знакомство с ней с этого инструмента. Вы удивитесь тому, как просто может выглядеть миграция Вашей БД.
Наш инструмент «Мастер переноса БД» предполагает, что целевая СУБД умеет выполнять все то, что работало в исходной.
Поэтому полные возможности инструмента доступны лишь в его связке с нашей СУБД - Digital Q.DataBase.
Использовать его для миграции на «ванильный» PostgreSQL или его коммерческие форки с "недоразвитыми" по сравнению с MS SQL и Oracle функциональными возможностями нет никакого практического смысла.
Мастер переноса БД в Digital Q.DataBase — это не просто утилита, а мост между популярными зарубежными и российской СУБД.
Он экономит время, убирает головную боль с "поломанными" хранимыми процедурами, кодировками и правами.
Система готова к работе сразу же после переноса.
Если вы всё ещё думаете, стоит ли пробовать Digital Q.DataBase, — начните с знакомство с ней с этого инструмента. Вы удивитесь тому, как просто может выглядеть миграция Вашей БД.
Please open Telegram to view this post
VIEW IN TELEGRAM
5 7 6 5
Наличие подобных сбоев в казалось бы многократно проверенном опенсорсном продукте показывает, насколько важно иметь контракт на поддержку с ответственной российской компанией.
Страшно представить, что было бы, если бы банк остался с этой нетривиальной проблемой один на один.
🧰 Само исправление в итоге заняло всего один день.
Please open Telegram to view this post
VIEW IN TELEGRAM
6 7 7 6
#dqdb #cубд
Please open Telegram to view this post
VIEW IN TELEGRAM
12 11 7 7