Цю сторінку перекладено машинним перекладом. Читайте англійський оригінал. English

Бібліотека IBSurgeon

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). Файли локалі виготовлено, але ще не заповнено перекладами, і механізм ще не активовано у виробництві. Ця інфраструктура призначена для майбутньої локалізації серверних повідомлень.