Efter to et halvt år med udvikling præsenteres udgivelsen af den relationelle DBMS Firebird 5.0. Firebird fortsætter udviklingen af InterBase 6.0-koden, der blev åbnet af Borland i 2000. Firebird distribueres under den frie MPL-licens og understøtter ANSI SQL-standarder, herunder funktioner som triggere, gemte procedurer og replikation. Binære versioner er tilgængelige til Linux, Windows, macOS og Android.
Nøgleinnovationer:
- Muligheden for at udføre operationer i multitrådet tilstand er blevet implementeret. Paralellisering i flere tråde gælder for oprettelse af indekser, oprydning (automatiske og manuelle sweep-operationer), oprettelse af backups og gendannelse derfra. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Støtten til partielle indekser, der kun inkluderer udvalgte poster, der opfylder betingelserne angivet ved oprettelsen af indekset, er blevet tilføjet. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- I SELECT WITH LOCK-, UPDATE- og DELETE-udtryk er syntaksen "SKIP LOCKED" blevet implementeret, hvilket gør det muligt at udelade poster, som er låst på tidspunktet for forespørgslen (for eksempel for at undgå at vente på frigivelse af låsen ved krydsning med en anden transaktion).
- Muligheden for at opdatere databasen til den aktuelle midlertidige version af lageret (ODS - On-Disk-Structure) i realtid (inline update) uden at skulle oprette og gendanne en backup er blevet tilføjet. For eksempel kan man nu i realtid konvertere en database i Firebird 4.0-format (ODS 13.0) til Firebird 5.0-format (ODS 13.1).
- Der er implementeret en cache til kompilerede SQL-udtryk, som administreres automatisk (forældede poster renses efter behov). Størrelsen af cachen angives via parameteren MaxStatementCacheSize i firebird.conf.
- Et interface til profilering af SQL og PSQL er blevet tilføjet, hvilket muliggør evaluering af udførelsestiden for hver forespørgsel, indsamling af statistik om antallet af forespørgsler og identificering af ydeevneproblemer.
- I MERGE-udtrykket er der tilføjet støtte til den betingede blok "WHEN NOT MATCHED BY SOURCE", der aktiveres, når den oprindelige post ikke matcher nogen post i det målrettede sæt. 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
- Muligheden for at returnere flere rækker med udtrykket RETURNING er blevet sikret, hvis den angivne DML-udsigt omfatter flere rækker (tidligere blev der i sådanne situationer givet en fejlmeddelelse "multiple rows in singleton select").
- Der er tilføjet nye indbyggede funktioner: UNICODE_CHAR til at returnere unicode-tegnet, der svarer til det angivne kode, og UNICODE_VAL til at returnere koden for det angivne tegn. Parameteren QUARTER er tilføjet til funktionerne EXTRACT, FIRST_DAY og LAST_DAY for at bestemme kvartalsnummeret.
- Den nye systempakke RDB$BLOB_UTIL er blevet tilføjet med en samling operationer til BLOB'er for PSQL-moduler.
- Algoritmen til komprimering af poster er blevet forbedret, så den nu anvender en variabel længde tæller for mere effektiv pakning af gentagne dataserier. Optimeringen har betydeligt øget kompressionsgraden af ikke-fuldt udfyldte lange VARCHAR-felter med data i UTF-8-kodning.
- Muligheden for at arbejde med bi-retning kursører (scrollable) ved fjernadgang til databasen er blevet tilføjet.
- Ydelsesoptimering af kopiering af blobber er blevet gennemført.
- Der er tilføjet fuld understøttelse af syntaksen til definition af strenge, som beskrevet i SQL-standarden. For eksempel kan strenge nu brydes af kommentarer eller mellemrum: select ‘ab’ /* comment */ ‘cd’ from RDB$DATABASE; select ‘ab’ ‘cd’ from RDB$DATABASE;
Kilde: opennet.ru
