Po dveh letih in pol razvoja je bila predstavljena izdaja relacijske SDB Firebird 5.0. Firebird nadaljuje razvoj kode SDB InterBase 6.0, ki jo je leta 2000 odprla družba Borland. Firebird se širi pod odprto licenco MPL in podpira standarde ANSI SQL, vključno s funkcijami, kot so sprožilci, shranjene procedure in replikacija. Binarne zbirke so pripravljenje za Linux, Windows, macOS in Android.
Ključne novosti:
- Omogočeno je izvajanje operacij v večnitnem načinu. Paralelizacija v več nitih se uporablja pri ustvarjanju indeksov, zbiranja smeti (samodejne in ročne operacije sweep), ustvarjanju varnostnih kopij in obnovitvah iz njih. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Dodana je podpora za delne indekse, ki vključujejo le izbrane zapise, ki ustrezajo pogojem, določenim pri ustvarjanju indeksa. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- V izrazih SELECT WITH LOCK, UPDATE in DELETE je bil realiziran sintaktični zapis „SKIP LOCKED“, ki omogoča izključitev zapisov, za katere je ob oddaji poizvedbe nastavljena blokada (na primer, da se ne čaka na sprostitev blokade pri prečkanju z drugo transakcijo).
- Dodana je možnost posodabljanja DB na aktualno prehodno različico skladišča (ODS — On-Disk-Structure) v živo (inline update) brez ustvarjanja in obnavljanja iz varnostne kopije. Na primer, zdaj lahko v živo pretvorite DB v formatu Firebird 4.0 (ODS 13.0) v format Firebird 5.0 (ODS 13.1).
- Uveden je predpomnilnik prevedenih SQL izrazov, ki ga samodejno upravlja (stari zapisi se čistijo po potrebi). Velikost predpomnilnika se določi preko parametra MaxStatementCacheSize v firebird.conf.
- Dodano je vmesnik za profiliranje SQL in PSQL, ki omogoča ocenjevanje časa izvajanja vsake poizvedbe, zbiranje statistike o številu poizvedb in prepoznavanje težav z zmogljivostjo.
- V izraz MERGE je dodana podpora za pogojni blok „WHEN NOT MATCHED BY SOURCE“, ki se aktivira, kadar izvorni zapis ne ustreza nobenemu zapisu v ciljnem naboru. 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
- Omogočeno je vračanje več vrstic z izrazom RETURNING, če DML izraz pokriva več vrstic (prej je v takih primerih prišlo do napake 'multiple rows in singleton select').
- Dodane so nove vgrajene funkcije: UNICODE_CHAR za vračanje unicode znaka, ki ustreza določenemu kodu, ter UNICODE_VAL za vračanje kode za določen znak. V funkcijah EXTRACT, FIRST_DAY in LAST_DAY je dodan parameter QUARTER za določitev številke četrtletja.
- Dodana je nova sistemska paketa RDB$BLOB_UTIL z naborom operacij s BLOB-i za module PSQL.
- Izboljšan je algoritem za stiskanje zapisov, ki sedaj uporablja števec spremenljive dolžine za učinkovitejše pakiranje ponavljajočih se zaporedij podatkov. Optimizacija je omogočila bistveno povečanje stopnje stiskanja nepopolnih dolgih polj VARCHAR s podatki v kodiranju UTF-8.
- Dodana je možnost dela z dvosmernimi kurzorji (scrollable) pri oddaljenem omrežnem dostopu do baze podatkov.
- Izvedena je optimizacija učinkovitosti kopiranja blobov.
- Dodana je polna podpora za sintakso določanja vrstic, opisano v standardu SQL. Na primer, vrstice lahko zdaj vsebujejo komentarje ali presledke: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;
Izvor: opennet.ru
