Nakon dvije i pol godine razvoja, objavljeno je izdanje relacijskog DBMS-a Firebird 5.0. Firebird nastavlja razvoj koda DBMS-a InterBase 6.0, otvorenog 2000. godine od strane tvrtke Borland. Firebird se distribuira pod slobodnom licencom MPL i podržava standarde ANSI SQL, uključujući mogućnosti poput okidača, spremanih procedura i replikacije. Binarne verzije su pripremljene za Linux, Windows, macOS i Android.
Ključne novine:
- Implementirana je mogućnost izvođenja operacija u višedretvenom režimu. Paralelizacija u više dretvi primjenjuje se prilikom stvaranja indeksa, sakupljanja smeća (automatske i ručne operacije sweep), izrade sigurnosnih kopija i vraćanja iz njih. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Dodana podrška za parcijalne indekse, koji uključuju samo odabrane zapise koji odgovaraju uvjetima navedenim prilikom stvaranja indeksa. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- U izrazima SELECT WITH LOCK, UPDATE i DELETE implementirana je sintaksa „SKIP LOCKED“, koja omogućava isključivanje zapisa za koje je u trenutku slanja upita postavljena blokada (na primjer, kako ne bi trebalo čekati oslobađanje blokade prilikom preklapanja s drugom transakcijom).
- Dodana mogućnost ažuriranja baze podataka na aktualnu međusposobnu verziju skladišta (ODS — On-Disk-Structure) u hodu (inline update) bez stvaranja i vraćanja iz sigurnosne kopije. Na primjer, sada je moguće u hodu pretvoriti bazu podataka u formatu Firebird 4.0 (ODS 13.0) u format Firebird 5.0 (ODS 13.1).
- Implementiran je predmemorijski sustav za kompilirane SQL izraze, koji se automatski održava ( zastarjeli zapisi se brišu po potrebi). Veličina predmemorije se postavlja putem parametra MaxStatementCacheSize u firebird.conf.
- Dodano je sučelje za profiliranje SQL-a i PSQL-a, koje omogućava procjenu vremena izvođenja svakog upita, akumuliranje statistike o broju upita i prepoznavanje problema s performansama.
- U izraz MERGE dodana je podrška za uvjetni blok „WHEN NOT MATCHED BY SOURCE“, koji se aktivira kada izvorni zapis ne odgovara nijednom zapisu u ciljnom skupu. 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
- Omogućeno je vraćanje više redaka putem izraza RETURNING, ako zadani DML izraz obuhvaća više redaka (ranije je u sličnim situacijama prikazana greška „multiple rows in singleton select“).
- Dodane su nove ugrađene funkcije: UNICODE_CHAR za vraćanje unicode simbola koji odgovara zadanom kodu, i UNICODE_VAL za vraćanje koda za zadani simbol. U funkcije EXTRACT, FIRST_DAY i LAST_DAY dodan je parametar QUARTER za određivanje broja kvartala.
- Dodani je novi sistemski paket RDB$BLOB_UTIL s nizom operacija za BLOB-ove za PSQL module.
- Poboljšan je algoritam za kompresiju zapisa, koji sada primjenjuje broj njezine dužine za učinkovitije pakiranje ponavljajućih sekvenci podataka. Optimizacija je značajno povećala razinu kompresije nepotpuno popunjenih dugih VARCHAR polja s podacima u UTF-8 kodiranju.
- Dodana je mogućnost rada s dvosmjernim pokazivačima (scrollable) prilikom udaljenog mrežnog pristupa bazi podataka.
- Provedena je optimizacija performansi kopiranja blobova.
- Dodana je potpuna podrška za sintaksu definiranja nizova opisanu u SQL standardu. Na primjer, nizovi se sada mogu prekidati komentarima ili razmacima: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;
Izvor: opennet.ru
