Главная | IT | Выпуск СУБД Firebird 5.0

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

После двух с половиной лет разработки представлен релиз реляционной СУБД 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;

 

Источник


Теги: