Firebird
software
Schermata di esempio
Schermata di esempio
GenereRelational database management system
SviluppatoreFirebird
Data prima versione22 novembre 2000
Ultima versione5.0.0 (11 gennaio 2024)
Sistema operativoMultipiattaforma
LinguaggioC++
LicenzaInterbase Public License o IDPL, Mozilla Public License
(licenza libera)
Sito webwww.firebirdsql.org/

In informatica Firebird SQL è un DB e un database management system relazionale (RDBMS), open source distribuito sotto licenza IPL (Interbase Public License) o IDPL (simile alla Mozilla Public License).

Supporta numerosi sistemi operativi tra i quali: GNU/Linux, Windows, FreeBSD, macOS e alcuni sistemi Unix.[1]. Le principali caratteristiche sono l'alto livello di conformità con gli standard SQL, la completa integrazione con molti linguaggi di programmazione e la facile installazione e manutenzione del software. Le ultime versioni distribuite portano grandi miglioramenti riguardo alla resistenza del software ai crash esterni, la velocità d'esecuzione dei comandi SQL e la gestione e l'accesso ai dati del computer.

Nel 2003, una querelle[2] ha opposto la comunità di Mozilla e Firebird dopo che un derivato del browser Mozilla è stato rinominato Mozilla Firebird. Le due parti si sono alla fine accordate e il navigatore è stato rinominato Mozilla Firefox al suo passaggio nella versione 0.8, iniziata nel 2004.[3]

Storia

[modifica | modifica wikitesto]

Firebird nasce dal codice sorgente di InterBase 6.0 e quindi ne acquista tutte le sue caratteristiche principali. È necessario, quindi, parlando di Firebird raccontare un po' la storia di Interbase (il suo antenato). Già quando era un prodotto commerciale e chiuso (prima della versione 6.0) l'antenato di Firebird era molto stimato e vantava una numerosa utenza, tra cui grossi nomi come NASA, National Bank di Chicago, Nokia, Ericsson, Boeing, Filadelfia e Boston Stock Exchange[4][5] e molti altri. La bassa occupazione di memoria, sia RAM che su disco (richiede ancora oggi poco più di 4 MB di RAM e meno di 10 MB su disco per una completa installazione), la facilità d'installazione, d'utilizzo e di gestione erano (e sono) molto competitivi verso altri RDBMS con uguali ed anche inferiori qualità e funzionalità. InterBase, dal principio, fu concepito, progettato e realizzato per un'utenza professionale ed aziendale pagante, con tutte le implicazioni del caso. InterBase fu sviluppato (nell'ultima fase della sua vita) da un'azienda leader a livello mondiale nello sviluppo di software per programmatori professionisti: la Borland International.

La prima versione di Firebird fu null'altro che un InterBase riveduto e migliorato dopo che la Borland l'aveva reso opensource (la pubblicazione del codice sorgente di Interbase 6.0 avvenuta il 25 luglio 2000).[6][7] Firebird 1.0 infatti non rappresenta una rivoluzione rispetto ad InterBase 6.0, ma elimina alcuni seri problemi di sicurezza e qualche bug con l'aggiunta di poche migliorie.

Firebird 1.5, pur essendo una versione di transizione verso la nuova 2.0, rappresenta un notevole passo avanti rispetto alla versione precedente. L'intero motore del database server è stato riscritto in C++, mentre la versione precedente era scritta in C.[8] Il vantaggio di questa riscrittura è una maggior chiarezza e leggibilità del codice. Grazie a questa decisione, a lungo termine, le prossime versioni saranno più facili da estendere e da gestire.

Firebird 2.0, distribuito il 12 novembre 2006,[9] conferma tutte le precedenti funzionalità e qualità e ne aggiunge molte altre a tutti i livelli. Le più interessanti sono quelle relative al supporto per i 64 bit, alle estensioni del linguaggio SQL derivate dall'SQL 200X[10] e spianare la strada per Vulcano che sarà Firebird della prossima generazione.

La precedente release era la 2.1.4, che aggiunse funzionalità tipo trigger procedurali, query ricorsive e il supporto per l'istruzione SQL:2003 MERGE.[11]

Firebird 2.5 "stable release" aggiunge nuove funzionalità che includono un miglioramento del multithreading, le espressioni regolari e la possibilità di interrogare un database remoto.[12]

Firebird 3.0 "stable release" è uscita il 19 aprile 2016. Vi è previsto il supporto alle stored procedure nei linguaggi come Java e C++, e funzioni window SQL (SELECT) che restringono i risultati delle query. Una seconda versione alpha era stata distribuita in gennaio 2014.[13]. Gli obiettivi principali di questa versione sono l'unificazione delle architetture server e il miglioramento del supporto ai sistemi multiprocessore simmetrico (SMP) e ai processori multi-core.[14].

Descrizione

[modifica | modifica wikitesto]

Organizzazione del progetto

[modifica | modifica wikitesto]

Integrazione in Libre Office

[modifica | modifica wikitesto]

Col lavoro del Google Summer of Code 2013 è cominciata l'integrazione di Firebird come sostituto di HSQLDB in LibreOffice, nel modulo Base.[15][16]

Libre Office sino alla versione 5.2 poteva usare Firebird 2.5; dalla release Libre Office 5.3 può essere incorporato Firebird, release 3.0. o successive.

Interfacce grafiche di amministrazione

[modifica | modifica wikitesto]

Esistono molte interfacce grafiche di amministrazione per creare database con Firebird, con diverse licenze, scaricabili dal sito [17] Le principali sono:

Fyracle

[modifica | modifica wikitesto]

Fyracle[18] è una versione modificata di Firebird SQL che consente il suo utilizzo in sostituzione di Oracle. Inoltre la sintassi del linguaggio SQL di Oracle potrà essere utilizzata per effettuare delle query su database Firebird.

Una delle applicazioni più utili di questa versione è quella di permettere l'impiego di Firebird con l'ERP Compiere, che è progettato per utilizzare Oracle.

Caratteristiche

[modifica | modifica wikitesto]

Struttura

[modifica | modifica wikitesto]

Il database utilizzato da Firebird è normalmente un file con estensione .fdb, Tuttavia il database può essere suddivido anche in più file (sempre .fdb) con una dimensione precisa. Questo è stato fatto per risolvere il limite strutturale di certi sistemi operativi che non possono gestire file più grandi di una certa dimensione. L'estensione predefinita è .fdb ma firebird è compatibile anche con database creati precedentemente anche dal suo antenato, Interbase, e quindi file con estensione .gdb

Il database essendo contenuto normalmente in un file ha il vantaggio di essere portato da un pc all'altro, anche con sistemi operativi diversi, in maniera molto veloce e senza bisogno di particolari meccanismi per essere ripristinato. Può essere portato anche con un semplice copia-incolla oppure comprimendo e decomprimendo il file. Queste due operazioni però vengono sconsigliate perché non controllano se il db è corrotto anzi potrebbero peggiorare la situazione. Per quanto riguarda il backup/restore esiste un'eseguibile dedicato (gbak) che sarà descritto in dettaglio in seguito. Il programma di backup ha numerose funzionalità: chiudere le transazioni aperte, controllare e riparare nei casi che il db sia corrotto, ricreare gli indici ed eliminare record obsoleti creati dalla architettura multigenerazionale (che vedremo successivamente). La O.S.D. (structure on disk) del database è cambiata dalla 10.0 di firebird 1.0. alla 10.1 di firebird 1.5 fino ad arrivare alla 11.0 di firebird 2.0. Naturalmente Firebird 2.0. può leggere qualsiasi struttura di database precedente alla 11.0, infatti nel momento che viene aperto viene in automatico convertito alla 11.0. (è sempre comunque consigliato utilizzare Gbak per far cambiare la struttura al db, in questa maniera viene fatto anche un controllo di errori del database). Sempre parlando del discorso della compatibilità con le vecchie versioni bisogna spiegare anche l'argomento dei cosiddetti "dialetti di Firebird".

Specifiche

[modifica | modifica wikitesto]

Questa sezione illustra i limiti strutturali di Firebird (molti di essi sono dovuti all'hardware e al sistema operativo usato):

La dimensione massima di un segmento per il campo BLOB è di 32 KB.

N.B. Le caratteristiche citate di Firebird 2.0 che, in certe circostanze, sembrano delle pesanti limitazioni sono prevalentemente delle conseguenze dei sistemi operativi utilizzati. Con la diffusione di sistemi operativi a 64 bit e con l'annunciata versione di Firebird per tali sistemi, versione già esistente con l'avvento di Firebird 2.0 che può girare su sistemi a 64 bit) molti di questi limiti saranno definitivamente ed ampiamente superati.

Dialetti

[modifica | modifica wikitesto]

La prima versione di Firebird (Firebird 1.0) aveva introdotto diverse novità che hanno avuto come conseguenza l'alterazione di alcuni meccanismi interni del motore del database. Quindi, bisognava introdurre qualche artificio per poter ancora utilizzare vecchi database ed applicazioni create con le precedenti versioni. La soluzione è stata nell'introduzione dei dialetti che hanno il compito di controllare l'appartenenza o meno di un'estensione a una determinata versione.

Il tipo di dialetto viene salvato nel database e quindi non dipende dal server.

Funzionalità nella versione 2.0

[modifica | modifica wikitesto]

Architetture

[modifica | modifica wikitesto]

Firebird ha 3 tipi di architetture che lavorano in maniera diversa, ma non per questo una è migliore o peggiore dell'altra. Il motivo di questa differenziazione è stata la diversità di sistemi operativi, di risorse hardware e anche di possibili utilizzi del database. Tutti questi fattori permettono di scegliere di volta in volta quella più adatta.

Classic Server

[modifica | modifica wikitesto]

È la prima architettura utilizzata dall'antenato di Firebird, Interbase, tra la fine degli anni ottanta e novanta, a quel tempo le risorse dei server erano scarse e i programmi richiedevano meno memoria. Questa architettura è usata ancora oggi per i sistemi operativi che hanno una gestione molto limitata dei thread. (Negli altri viene usata la versione SuperServer). In pratica per ogni connessione client, Firebird, apre sul server un processo dedicato con una memoria dedicata dove far elaborare le richieste del client, la cache di ogni processo non viene vista dagli altri (questo non permette lo scambio di informazioni già lette tra i vari processi). Normalmente la cache di ogni processo è per default di 75 pagine. In questa maniera si utilizzano più processi a seconda delle connessioni dei client, questa architettura è indicata nel caso il nostro server abbia più microprocessori, infatti ogni microprocessore si prenderà carico di uno o più processi (Firebird permette un'uguale distribuzione fra le varie CPU dei processi sia a seconda del numero sia a seconda della grandezza). Questa architettura rimane la migliore opzione nei casi dove c'è bisogno di alte performance e le risorse del sistema sono adeguate ad aumentare in maniera proporzionale alle richieste di nuove connessioni da parte dei client, ad esempio nel caso non ci siano connessioni sul server, non viene utilizzata per niente la memoria. Questa architettura è ideale, soprattutto, per i sistemi che si basano su elaborazioni complesse dove c'è poco input interattivo da parte degli utenti. Normalmente viene utilizzata con sistemi operativi GNU/Linux e Unix, mentre per Microsoft esiste una specifica versione di Firebird ma viene sconsigliata soprattutto in presenza di più processori. Questa architettura è l'unica che supporta SMP (la memoria condivisa tra i vari processori) e l'Hyper-Threading anche se i vantaggi dipendono fortemente dal sistema operativo e dalle caratteristiche tecniche stesse del computer, soprattutto della memoria. Lato client ogni richiesta di un nuovo processo occupa circa 2 MB in RAM.

Superserver

[modifica | modifica wikitesto]

Dal 1996 e più precisamente dall'uscita di Interbase 4.1, fu introdotta l'architettura Superserver. Questa architettura andava incontro alle nuove caratteristiche tecniche di Windows, più precisamente all'architettura a 32 bit utilizzata per la prima volta con Windows 95. Il vantaggio della versione Superserver è che si possono utilizzare i thread e allocare dinamicamente memoria cache condivisa dove poter andare a leggere le informazioni in comune; i thread possono girare all'interno di un singolo processo o più processi. La memoria condivisa (cache) per questo tipo di architettura è per default di 2.048 pagine. Questa caratteristica è sicuramente un notevole vantaggio rispetto alla versione Classic server dove ogni processo ha un proprio spazio di memoria specifico e non condiviso. Questa proprietà rende indicata la versione Superserver, soprattutto, sia nei casi di un numero di operazioni interattive di scrittura e lettura molto elevate sia anche dove le risorse del computer sono limitate. Infatti avendo una memoria condivisa, tra i vari thread, c'è meno spreco di RAM. Normalmente all'avvio di Firebird la versione superserver anche se non c'è nessuna connessione con i client occupa (a differenza della versione classic server) un po' di memoria per mettersi in ascolto delle richieste, circa 2 MB. Da Firebird 1.0. la versione superserver è disponibile anche per altri sistemi operativi come GNU/Linux. Questa architettura è quella consigliata per i sistemi Microsoft dove la versione classic server per adesso è solo a livello "sperimentale", non ancora affidabile.

Embedded server

[modifica | modifica wikitesto]

È l'ultima nata come architettura, sviluppata dalla versione 1.5 di Firebird in poi. Questo modello non è altro che una versione compatta dell'architettura Superserver, diciamo compatta perché non è altro che una libreria (fbembedd.dll) che fa il lavoro sia come parte server che client. Naturalmente permette la gestione del database solo a livello locale. Questo significa che questa architettura non si mette in ascolto di richieste di altri client ma soddisfa solo operazioni locali. Questo discorso vale anche per quei server utilizzati come terminal server, questa architettura permette l'utilizzo di una sola connessione per volta. Normalmente questa architettura viene utilizzata per quei database che girano su un solo PC, come ad esempio i portatili oppure per un database in sola lettura ad esempio su CD-ROM. Le risorse richieste da questa architettura sono minime, e può pertanto essere installata su qualsiasi client. L'interfaccia per la gestione del DBMS è identica a quella della versione SuperServer.

Note

[modifica | modifica wikitesto]
  1. ^ (EN) Supported Platforms
  2. ^ Reports on Phoenix/Minotaur Renaming Focus on Firebird Database Protest
  3. ^ Steven Garrity, Markham, Gervase; Goodger, Ben; Decrem, Bart; et al., Mozilla Firefox - Brand Name Frequently Asked Questions, su mozilla.org, Mozilla Foundation. URL consultato il 3 aprile 2011 (archiviato dall'url originale il 28 febbraio 2012).
  4. ^ (EN) Charles Babcock, Preassembled Client/Server, in Computerworld, vol. 28, n. 9, 28 febbraio 1994, p. 6. URL consultato il 9 novembre 2019.
  5. ^ Khaldi, Jilani, Firebird SQL, su Google books 1/3/2015 vol. 1 pp 8. URL consultato il 12 gennaio 2017 (archiviato dall'url originale il 13 gennaio 2017).
  6. ^ Inprise/Borland Introduces InterBase 6.0 Now Free and Open Source on Linux, Windows, and Solaris, 16 luglio 2000. URL consultato il 29 gennaio 2009 (archiviato dall'url originale il 6 dicembre 2004).
  7. ^ Borland.com: Inprise/Borland Introduces Interbase 6.0 Now Free and Open Source on Linux, su linuxtoday.com, Linux Today. URL consultato il 29 gennaio 2009 (archiviato dall'url originale il 30 giugno 2009).
  8. ^ Firebird 1.5.5 Release Notes, su firebirdsql.org. URL consultato il 29 settembre 2009. Firebird 1.5.5 General Notes for rewriting it from C to C++ language
  9. ^ Dmitry Yemanov, Firebird 2.0 Final Release Launches in Prague, su firebirdsql.org. URL consultato il 5 febbraio 2009.
  10. ^ Helen Borrie, Firebird 2.0.7 Release Notes, su firebirdsql.org, 5 aprile 2012. URL consultato il 10 giugno 2012.
  11. ^ Helen Borrie, Firebird 2.1 Release Notes, su firebirdsql.org, 7 marzo 2012. URL consultato il 10 giugno 2012.
  12. ^ Helen Borrie, Firebird 2.5.2 Release Notes, su firebirdsql.org, 7 novembre 2012. URL consultato il 7 novembre 2012.
  13. ^ Firebird Roadmap, su firebirdsql.org, marzo 2014.
  14. ^ Release Notes Version 3.0 RC 1. Archiviato il 25 dicembre 2015 in Internet Archive. (PDF) firebirdsql.org; accesso il 9 novembre 2015.
  15. ^ mariuz, Firebird Embedded and LibreOffice is the killer combination to scale from a single file application to a client/server approach, su firebirdnews.org, 14 febbraio 2012. URL consultato l'8 luglio 2013.
  16. ^ ahunt, GSOC 2013: LibreOffice Firebird SQL Connector, su ahunt.org, 28 maggio 2013. URL consultato l'8 luglio 2013.
  17. ^ (EN) Sito di Ibphoenix, su ibphoenix.com. URL consultato il 16 maggio 2016 (archiviato dall'url originale il 13 marzo 2016).
  18. ^ Janus Software, su janus-software.com. URL consultato il 23 giugno 2014 (archiviato dall'url originale il 6 aprile 2010).

Altri progetti

[modifica | modifica wikitesto]

Collegamenti esterni

[modifica | modifica wikitesto]