HQbird 2024R2 Update 10 - подробности о том, что нового
Что нового в HQbird 2024R2 Update 10
Материализованные представления (Новая функция в 5.0)
HQbird теперь включает полную поддержку материализованных представлений - нового типа объектов базы данных, который сочетает определение представления с физическим хранением обычной таблицы.
Обзор
Материализованное представление (MV) определяется с помощью стандартного SQL-запроса, который движок использует для заполнения базовой таблицы MV строками данных. В отличие от обычных представлений, данные MV сохраняются на диске и могут быть индексированы. Операторы DML (INSERT, UPDATE, DELETE) не разрешены напрямую для MV - данные должны обновляться с помощью новой команды REFRESH.
Создание и управление материализованными представлениями
CREATE [OR ALTER] MATERIALIZED VIEW- создает или заменяет MV с опциональной начальной загрузкой данных (WITH DATA/WITH NO DATA).ALTER MATERIALIZED VIEW- изменяет определение MV; автоматически удаляет все существующие индексы.RECREATE MATERIALIZED VIEW- удаляет любое существующее представление (обычное или материализованное) с тем же именем и создает новое MV.DROP VIEW- используется для удаления материализованного представления (отдельной командыDROP MATERIALIZED VIEWне существует).- Индексы любого типа могут быть созданы на MV. Ограничения и триггеры не поддерживаются.
Преобразование между типами представлений
ALTER MATERIALIZED VIEW ... TO NOT MATERIALIZED- преобразует MV в обычное представление. Все индексы и данные удаляются.ALTER VIEW ... TO MATERIALIZED- преобразует обычное представление в материализованное. Зависимые объекты не затрагиваются.
Обновление данных материализованного представления
Новый оператор REFRESH MATERIALIZED VIEW обновляет содержимое MV. Это команда DDL - выполнение откладывается до фиксации текущей транзакции. Доступны четыре режима:
-
Полная перезагрузка (эксклюзивный режим) -
REFRESH MATERIALIZED VIEW- Деактивирует индексы, удаляет все существующие данные, перезагружает из запроса MV, реактивирует индексы.
- Самый быстрый вариант, когда изменилось много строк.
- Требует эксклюзивной блокировки таблицы MV.
- При ошибке загрузки данных: вновь загруженные данные удаляются, индексы реактивируются как пустые.
- При ошибке активации индекса: затронутый индекс остается неактивным; данные и другие индексы не затрагиваются. Ошибки построения индекса сообщаются как предупреждения.
-
Параллельное обновление -
REFRESH MATERIALIZED VIEW CONCURRENTLY- Не требует эксклюзивной блокировки - параллельные запросы к MV разрешены во время обновления.
- Использует алгоритм слияния с двумя упорядоченными курсорами: один для текущих данных MV, другой для результатов запроса MV.
- Вставляет новые строки, обновляет измененные строки, удаляет удаленные строки - все под контролем транзакции.
- Требует уникального индекса на MV.
- Предпочтителен, когда требуется параллельный доступ или когда с момента последнего обновления изменилось мало строк.
- Примечание: если запрос MV содержит
ORDER BY, порядок строк может не сохраниться после параллельного обновления.
-
Удаление всех данных -
REFRESH MATERIALIZED VIEW DROP DATA- Удаляет все данные MV и содержимое индексов. Полезно для освобождения дискового пространства. Требует эксклюзивной блокировки.
-
Каскадное обновление - добавьте
CASCADEк любой из вышеуказанных форм- Обновляет все MV, от которых зависит данное MV, в правильном порядке зависимостей.
- Каждое MV обрабатывается только один раз.
CONCURRENTLY CASCADEтребует, чтобы все затронутые MV имели уникальный индекс.DROP DATA CASCADEудаляет данные всех затронутых MV.- Имена затронутых MV и порядок обновления сообщаются как предупреждения в векторе состояния перед фиксацией.
Резервное копирование и восстановление (gbak)
- Резервное копирование: данные MV не сохраняются в файле резервной копии, так же как и для обычных представлений - специальная обработка не требуется.
- Восстановление: все MV автоматически обновляются в конце процесса восстановления в правильном порядке зависимостей.
- Новый переключатель gbak
-NO_MATVIEWS(может быть сокращен до-NO_M) - пропускает обновление MV при восстановлении. - Соответствующая опция Services API:
isc_spb_res_no_matviews. - Важно: резервная копия, содержащая MV, не может быть восстановлена на версии Firebird, которая не поддерживает MV. Используйте
ALTER MATERIALIZED VIEW ... TO NOT MATERIALIZEDперед резервным копированием при миграции на более старую версию.
Известные ограничения / Планируемые работы
- Поддержка репликации - еще не реализована.
- Триггеры DDL - еще не реализованы.
- Проверка прав доступа - еще не реализована.
- Сообщения об ошибках - на рассмотрении.
Резервное копирование и восстановление
- Задача проверочного резервного копирования: добавлено циклическое удаление перед сжатием; коэффициенты расчета дискового пространства теперь настраиваются.
- Задача nBackup: исправлена логика пропуска; алгоритм переименования журнала изменен на атомарное переименование с повтором для предотвращения частичных переименований.
- Каталог резервного копирования и шаблон имени файла для задач BRZ теперь настраиваются:
backup-directory- позволяет указать целевой каталог для каждой базы данных и задания.backup-name- позволяет задать шаблон имени файла, напримерbrr_{0,date,yyyyMMdd_HH-mm-ss}.fbk.- Добавлен валидатор ввода: проверяет допустимость имени каталога и создает каталог, если он не существует.
Облачное резервное копирование / Передача файлов
- Добавлена поддержка загрузки файлов через протокол Socket в задаче cloudbackup (filetransfer).
- Опция выборочного посегментного сжатия файлов удалена - сжатие файлов для соответствующих задач теперь всегда включено.
Трассировка
- Добавлено поле
connection_idкак дополнительное поле в конфигурации трассировки. - Обработка отчетов трассировки: добавлена группировка и фильтрация без учета регистра по имени процесса.
VSS Writer
- Добавлено дополнительное диагностическое логирование - теперь записывается информация о состоянии базы данных, включая размер базы данных, дату и время, а также вывод
gstat -h.
Веб-интерфейс
- Улучшения локализации: исправлены переводы и скорректированы алгоритмы локализации в веб-консоли.
- Добавлен визуальный разделитель с текстом метки в веб-диалоги - обеспечивает логическую группировку элементов формы.
- Изменена стратегия инвалидации кэша для клиентских ресурсов (веб-страницы, JS, CSS) для предотвращения использования браузерами устаревших файлов после обновления.
Конфигурация
- Обновлены имена полей авторизации сервера (
sysdba/owner,serviceAPI). - Добавлен зарезервированный параметр конфигурации для настройки языка/локали на стороне сервера (Java).
- Исправлены файлы конфигурации по умолчанию в соответствии с новыми настройками по умолчанию для задач передачи файлов:
- Порт изменен с 8721 на 8722.
- Пользователь по умолчанию изменен с
admin2/admin3наsocketuser. - Настройка сложности пароля унифицирована до надежного пароля во всех конфигурациях.
- При регистрации файла лицензии KA указание префикса протокола HTTP/HTTPS в поле хоста больше не требуется.
Исправления ошибок
- Исправлено ложное критическое предупреждение, возникающее, когда у базы данных временно отключены все задачи.
- Исправлена ошибка при получении списка активных сессий трассировки для систем, где настроенный пользователь SYSDBA не имеет разрешения на просмотр списка сессий трассировки.
- Исправлена ошибка в стороннем компоненте дешифрования, который некорректно обрабатывал пути в кодировке UTF-8. Примечание: до обновления и пересборки службы mon/trace символы UTF-8 в путях к файлам или базам данных могут по-прежнему вызывать ошибки в выводе mon/trace.
- Исправлена проблема в обработчике конфигурации репликации, который некорректно сохранял ключи с пустыми значениями.
- Исправлена обработка
journal_archive_commandдля Firebird 4 и более поздних версий (приведено в соответствие с исправлением в firebird/firebird PR #8381). - Исправлены ошибки в плагине генератора конфигурации
dg2fbcc.jarи в коде его вызова.
Установщик и сборка
- Установщик Windows обновлен с пересмотренными скриптами и логикой.
- Обновлены бинарные файлы клиентской библиотеки.
- OpenSSL обновлен до более новой версии.
- Добавлены условные ветви кода для вариантов сборки, специфичных для продукта.
- Добавлена подпись файлов в процесс сборки установщика.
Инфраструктура локализации на стороне сервера
Реализован механизм локализации текстовых сообщений на стороне сервера (Java). Файлы локали подготовлены, но еще не заполнены переводами, и механизм еще не активирован в производственной среде. Эта инфраструктура предназначена для будущей локализации серверных сообщений.