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 і пізніших версій (узгоджено з виправленням upstream у firebird/firebird PR #8381). - Виправлено помилки у плагіні генератора конфігурації
dg2fbcc.jarта коді його виклику.
Інсталятор і збірка
- Інсталятор для Windows оновлено з переглянутими сценаріями та логікою.
- Оновлено бінарні файли клієнтської бібліотеки.
- OpenSSL оновлено до новішої версії.
- Додано умовні гілки коду для варіантів збірки, специфічних для продукту.
- Додано підписання файлів у процес збірки інсталятора.
Інфраструктура локалізації на стороні сервера
Реалізовано механізм локалізації текстових повідомлень на стороні сервера (Java). Файли локалі виготовлено, але ще не заповнено перекладами, і механізм ще не активовано у виробництві. Ця інфраструктура призначена для майбутньої локалізації серверних повідомлень.