Po dvou a půl letech vývoje byl uveden na trh relační SGBD Firebird 5.0. Firebird pokračuje ve vývoji kódu SGBD InterBase 6.0, který byl otevřen v roce 2000 firmou Borland. Firebird je distribuován pod svobodnou licencí MPL a podporuje standardy ANSI SQL, včetně funkcí jako jsou spouštěče, uložené procedury a replikace. Binární verze jsou připraveny pro Linux, Windows, macOS a Android.
Hlavní novinky:
- Byla implementována možnost provádět operace v multithreadovém režimu. Paralelizace v několika vláknech je použitelná při vytváření indexů, sbíraní odpadků (automatické i ruční akce sweep), vytváření záloh a obnovení z nich. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Byla přidána podpora částečných indexů, které zahrnují pouze vybrané záznamy odpovídající podmínkám uvedeným při jejich vytváření. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- V dotazech SELECT WITH LOCK, UPDATE a DELETE byl zaveden syntaktický prvek „SKIP LOCKED“, který umožňuje vyloučit záznamy, na které byla při odeslání dotazu uvalena blokace (například aby se nečekalo na uvolnění blokace při překrývání s jinou transakcí).
- Byla přidána možnost aktualizace databáze na aktuální meziverzi úložiště (ODS — On-Disk-Structure) v reálném čase (inline update) bez vytváření a obnovování ze zálohy. Například nyní je možné na místě převést databázi ve formátu Firebird 4.0 (ODS 13.0) na formát Firebird 5.0 (ODS 13.1).
- Byl zaveden cache zkompilovaných SQL výrazů, který je automaticky spravován (neplatné záznamy jsou čištění podle potřeby). Velikost cache je nastavena pomocí parametru MaxStatementCacheSize v souboru firebird.conf.
- Bylo přidáno rozhraní pro profilování SQL a PSQL, které umožňuje odhadovat dobu provádění každého dotazu, shromažďovat statistiku o počtu dotazů a odhalovat problémy s výkonností.
- Do výrazu MERGE byla přidána podpora podmínkového bloku „WHEN NOT MATCHED BY SOURCE“, který se aktivuje, když původní záznam neodpovídá žádnému záznamu v cílové sadě. 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
- Byla zajištěna možnost vrátit více řádků pomocí výrazu RETURNING, pokud zadaný DML výraz zahrnuje více řádků (dříve v podobných případech byla vyvolána chyba „multiple rows in singleton select“).
- Byly přidány nové vestavěné funkce: UNICODE_CHAR pro vrácení unicode znaku odpovídajícího zadanému kódu a UNICODE_VAL pro vrácení kódu pro zadaný znak. Do funkcí EXTRACT, FIRST_DAY a LAST_DAY byl přidán parametr QUARTER pro určení čísla kvartálu.
- Byl přidán nový systémový balíček RDB$BLOB_UTIL se sadou operací s BLOB-y pro moduly PSQL.
- Byl vylepšen algoritmus pro kompresi záznamů, který nyní používá počítadlo proměnné délky pro efektivnější balení opakujících se sekvencí dat. Optimalizace umožnila výrazně zvýšit míru komprese nedokonale vyplněných dlouhých polí VARCHAR s daty v kódování UTF-8.
- Byla přidána možnost práce s obousměrnými kurzory (scrollable) při vzdáleném síťovém přístupu k databázi.
- Byla provedena optimalizace výkonu kopírování blobů.
- Byla přidána plná podpora syntaxe pro definici řetězců, jak je popsáno v normě SQL. Například řetězce mohou nyní být přerušeny komentáři nebo mezerami: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;
Zdroj: opennet.ru
