Efter tvÄ och ett halvt Ärs utveckling har den relationella databashanteraren Firebird 5.0 nu slÀppts. Firebird fortsÀtter utvecklingen av databaskoden InterBase 6.0, som slÀpptes 2000 av Borland. Firebird distribueras under den fria licensen MPL och stödjer ANSI SQL-standarder, inklusive funktioner som triggers, lagrade procedurer och replikation. Binaries Àr tillgÀngliga för Linux, Windows, macOS och Android.
Nyckelinnovationer:
- Möjligheten att utföra operationer i flertrÄdat lÀge har implementerats. Parallellisering i flera trÄdar kan tillÀmpas vid skapande av index, skrÀpinsamling (automatiska och manuella sweep-operationer), skapande av sÀkerhetskopior och ÄterstÀllning frÄn dem. gfix -sweep -parallel 4 dbname gbak -b -par 4 -user username -pass password dbname backupname
- Stöd för partiella index har lagts till, vilket inkluderar endast utvalda poster som uppfyller angivna villkor vid skapande av index. CREATE INDEX IT1_COL ON T1 (COL) WHERE COL < 100;
- I SELECT WITH LOCK, UPDATE och DELETE-uttryck har syntaxen "SKIP LOCKED" implementerats, vilket möjliggör uteslutning av poster som har en lÄs vid tiden för förfrÄgan (till exempel för att undvika att vÀnta pÄ att lÄs ska slÀppas vid överlappning med en annan transaktion).
- Möjligheten att uppdatera databasen till den aktuella mellanversionen av lagringsstrukturen (ODS â On-Disk-Structure) pĂ„ flygande fot (inline update) utan att behöva skapa och Ă„terstĂ€lla frĂ„n en sĂ€kerhetskopia har tillkommit. Till exempel kan databasen nu pĂ„ flygande fot konverteras frĂ„n Firebird 4.0-format (ODS 13.0) till Firebird 5.0-format (ODS 13.1).
- En cache för kompilerade SQL-uttryck har implementerats, som hanteras automatiskt (utdaterade poster rensas efter behov). Caches storlek anges via parameter MaxStatementCacheSize i firebird.conf.
- Ett grÀnssnitt för profilering av SQL och PSQL har lagts till, vilket möjliggör uppskattning av exekveringstiden för varje förfrÄgan, insamling av statistik över antalet förfrÄgningar och identifiering av prestandaproblem.
- I MERGE-uttrycket har stöd för den villkorliga blocken "WHEN NOT MATCHED BY SOURCE" lagts till, vilket aktiveras nÀr den ursprungliga posten inte matchar nÄgon post i det mÄlsetet. 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
- Det har sÀkerstÀllts att flera rader kan returneras med RETURNING-uttrycket, om det angivna DML-uttrycket omfattar flera rader (tidigare resulterade liknande situationer i ett felmeddelande "multiple rows in singleton select").
- Nya inbyggda funktioner har lagts till: UNICODE_CHAR för att returnera unicode-tecknet motsvarande det angivna koden, och UNICODE_VAL för att returnera koden för det angivna tecknet. Parametern QUARTER har lagts till i funktionerna EXTRACT, FIRST_DAY och LAST_DAY för att bestÀmma numret pÄ kvartalet.
- En ny systempaket RDB$BLOB_UTIL har lagts till med en samling operationer för BLOB:ar för PSQL-moduler.
- Algoritmen för komprimering av poster har förbÀttrats, vilket nu anvÀnder en variabel lÀngd rÀknare för mer effektiv förpackning av upprepade datasekvenser. Optimeringen har avsevÀrt ökat komprimeringsgraden för ofullstÀndigt fyllda lÄnga VARCHAR-fÀlt med data i UTF-8-kodning.
- Möjligheten till stöd för tvÄvÀgskurvor (scrollable) har lagts till vid fjÀrranslutning till databasen.
- Prestandaoptimering av kopiering av BLOB:ar har genomförts.
- HeltĂ€ckande stöd för syntaxen för strĂ€ngdefinition, som beskrivs i SQL-standarden, har lagts till. Till exempel kan strĂ€ngar nu brytas med kommentarer eller mellanslag: select âabâ /* comment */ âcdâ from RDB$DATABASE; select âabâ âcdâ from RDB$DATABASE;
KĂ€lla: opennet.ru
