Выпуск СУБД Firebird 5.0

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 3254
Зарегистрирован: 20.08.2022

#

Выпуск СУБД Firebird 5.0
Дата публикации:Sat, 13 Jan 2024 10:55:06 +0300




После двух с половиной лет разработки представлен релиз реляционной СУБД Firebird 5.0. Firebird продолжает развитие кода СУБД InterBase 6.0, открытого в 2000 году компанией Borland. Firebird распространяется под свободной лицензией MPL и поддерживает стандарты ANSI SQL, в том числе такие возможности, как триггеры, хранимые процедуры и репликацию. Бинарные сборки подготовлены для Linux, Windows, macOS и Android.



Ключевые новшества:
  • Реализована возможность выполнения операций в многопоточном режиме. Распараллеливание в несколько потоков применимо при создании индексов, сборке мусора (автоматические и ручные операции sweep), создании резервных копий и восстановлении из них.

    gfix -sweep -parallel 4 dbname
    gbak -b -par 4 -user username -pass password dbname backupname


    Добавлена поддержка частичных индексов, включающих только выборочные записи, соответствующие указанным при создании индекса условиям.

    CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;


    В выражениях SELECT WITH LOCK, UPDATE и DELETE реализован синтаксис "SKIP LOCKED", позволяющий исключить записи, для которых на момент отправки запроса выставлена блокировка (например, чтобы не ждать освобождения блокировки при пересечении с другой транзакцией).

    Добавлена возможность обновления БД до актуальной промежуточной версии хранилища (ODS - On-Disk-Structure) на лету (inline update) без создания и восстановления из резервной копии. Например, теперь можно на лету преобразовать БД в формате Firebird 4.0 (ODS 13.0) в формат Firebird 5.0 (ODS 13.1).

    Реализован кэш скомпилированных SQL-выражений, обслуживаемый автоматически (устаревающие записи очищаются по мере необходимости). Размер кэша задаётся через параметр MaxStatementCacheSize в firebird.conf.

    Добавлен интерфейс для профилирования SQL и PSQL, позволяющий оценивать время выполнения каждого запроса, накапливать статистику о числе запросов и выявлять проблемы с производительностью.


    В выражение MERGE добавлена поддержка условного блока "WHEN NOT MATCHED BY SOURCE", срабатывающего когда исходная запись не соответствует ни одной записи в целевом наборе.

    MERGE INTO customers c USING new_customers nc ON (c.id = nc.id)
    WHEN MATCHED THEN
    UPDATE SET name = nc.name
    WHEN NOT MATCHED BY SOURCE THEN
    DELETE


    Обеспечена возможность возвращения нескольких строк выражением RETURNING, если заданное DML-выражение охватывает несколько строк (ранее в подобных ситуациях выводилась ошибка "multiple rows in singleton select").

    Добавлены новые встроенные функции: UNICODE_CHAR для возвращения unicode-символа, соответствующего заданному коду, и UNICODE_VAL для возвращения кода для заданного символа. В функции EXTRACT, FIRST_DAY и LAST_DAY добавлен параметр QUARTER для определения номера квартала.

    Добавлен новый системный пакет RDB$BLOB_UTIL с подборкой операций с BLOB-ами для модулей PSQL.


    Улучшен алгоритм сжатия записей, который теперь применяет счётчик переменной длины для более эффективной упаковки повторяющихся последовательностей данных. Оптимизация позволила значительно повысить степень сжатия не полностью заполненных длинных полей VARCHAR с данными в кодировке UTF-8.

    Добавлена возможность работы с двунаправленными курсорами (scrollable) при удалённом сетевом обращении к БД.

    Проведена оптимизация производительности копирования блобов.
    Добавлена полная поддержка синтаксиса определения строк, описанного в стандарте SQL. Например, строки теперь могут разрываться комментариями или пробелами:

    select 'ab' /* comment */ 'cd' from RDB$DATABASE;
    select 'ab' 'cd' from RDB$DATABASE;


Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60430

Жизнь за Нер'зула!

Ответить