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. 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 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.
Storia 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 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). 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. Firebird 1.5.5 General Notes for rewriting it from C to C++ language 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, 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 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.
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.
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. 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.Release Notes Version 3.0 RC 1. (PDF) firebirdsql.org; accesso il 9 novembre 2015.
Descrizione Organizzazione del progetto Firebird Foundation - Raccoglie fondi, organizza conferenze e ne promuove l'utilizzo Gruppo di sviluppatori in tutto il mondo
Integrazione in Libre Office Col lavoro del Google Summer of Code 2013 è cominciata l'integrazione di Firebird come sostituto di HSQLDB in LibreOffice, nel modulo Base.
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 Esistono molte interfacce grafiche di amministrazione per creare database con Firebird, con diverse licenze, scaricabili dal sito Le principali sono: LibreOffice Base dalla versione 5.3
Fyracle Fyracle è 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 È conforme allo SQL-92 Entry Level. Si può usare lo standard ANSI SQL per scrivere delle query portabili tra piattaforme diverse. In più Firebird ha delle estensioni che anticipano l'SQL3 come le stored procedure e i trigger e anche altre dell'SQL200X. È possibile accedere contemporaneamente ad un database Firebird da più applicazioni permettendo a più client di lavorare con gli stessi dati in conformità al modello client/server. Implementa le specifiche A.C.I.D.; cioè il concetto di atomicità, consistenza, isolamento e durabilità. Integrità referenziale dei dati con possibilità di riferire una chiave primaria con una o più chiavi esterne mantenendo collegamenti tra attributi di diverse relazioni. Architettura multigenerazionale. Il server, in base alle esigenze, mantiene una copia dei vecchi record da ripristinare nel caso in cui una transazione fallisca. Supporta le transazioni. Una funzionalità indispensabile per garantire la correttezza e il buon esito di operazioni di inserimento, aggiornamento o cancellazione di dati. Gestione dei lock a livello del singolo record anziché dell'intera pagina. In questo modo gli altri record sono manipolabili liberamente da altri client. Supporta il protocollo di rete TCP/IP su tutte le piattaforme garantendo l'utilizzo di Firebird come SQL server sia nelle applicazioni client/server sia in quelle web con completa trasparenza. Protocollo XNET usato per accedere ai dati in maniera locale. Tre architetture diverse a seconda del tipo della macchina e di come si vuole utilizzare il DBMS. OSD (On-Disk Structure) 10.1 per Firebird 1.5 e OSD 11 per Firebird 2.0 Ottimizzazione delle query a livello di server o manualmente dall'utente. Quando viene scritto del codice SQL, Firebird, prima di eseguirlo, cerca di ottimizzarlo grazie al suo optimizer interno. Viste aggiornabili in seguito ad eventi stabiliti. Stored procedure. Sono delle applicazioni SQL che vengono memorizzate all'interno del database e vengono eseguite a livello di server. Offrono una grande flessibilità e potenza per svolgere i compiti più impensabili e bilanciare il carico di lavoro tra il client ed il server. Trigger. Sono simili alle stored procedure ma non vengono mai eseguiti esplicitamente; svolgono le loro azioni in seguito a modifiche apportate alle tabelle (inserimento, modifica o eliminazione di un dato). Sono utili quando si cerca di ottenere un determinato risultato in seguito a un'azione specifica. Un'applicazione può accedere contemporaneamente a più database. Gestione del tipo di dato BLOB con possibilità di memorizzare dati di qualsiasi genere (immagini, suoni, animazioni, testi…). Messaggi di allerta che informano un'applicazione delle modifiche avvenute nel database ed in seguito alle quali l'applicazione è chiamata a svolgere delle specifiche azioni. UDF (User Defined Functions), ossia, funzioni definite dall'utente che permettono di scrivere programmi esterni che possono essere eseguite da codice SQL dall'interno del database. Collegamento tra diverse relazioni con possibilità di eseguire su di esse delle query anche molto complesse. La lettura dei dati non è bloccante. Tutti i client possono leggere contemporaneamente gli stessi record. Possibilità di richiamare le API di Firebird tramite codice SQL/DSQL (Dynamic SQL) in modo del tutto trasparente. Possibilità di gestione di Firebird tramite l'applicazione grafica windows IBOConsole. Sono garantite l'esecuzione delle query e le operazioni di backup, restore, manutenzione e gestione della sicurezza. isql, ossia Interactive SQL, è un'applicazione a riga di comando, multipiattaforma e serve per una totale gestione di Firebird. gpre, è un preprocessore per convertire codice embedded SQL/DSQL in formati leggibili da linguaggi esterni. Ciò ci permette di scrivere applicazioni esterne in altri linguaggi, in C in modo particolare, all'interno delle quali possiamo inserire del codice SQL. In questo modo possiamo ottenere un'elevata efficienza ed aggiungere alle nostre applicazioni qualsiasi altra funzionalità. Database di sola lettura. È possibile rendere un database accessibile solo per la lettura da impedire eventuali modifiche ai dati. Questa caratteristica è molto utile quando si distribuiscono programmi in CD-ROM con la versione embedded di Firebird. Oltre a queste caratteristiche native di Firebird ce ne sono altre realizzate grazie al contributo di programmi esterni che permettono a Firebird di avere altre significativi vantaggi ad esempio la ricerca full text, la possibilità di gestire la replica oppure il salvataggio dei database automatica, e il supporto per il clustering.
Struttura Il database utilizzato da Firebird è normalmente un File con estensione .fdb, Tuttavia il database può essere suddiviso 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).