Firebird SQL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
+Controllare
m annullamento massivo malfunzionamento bot
Etichetta: Rollback
 
(201 versioni intermedie di 87 utenti non mostrate)
Riga 1:
{{Software
{{C|grossa aggiunta da una tesi di laurea, potrebbe includere info non enciclopediche ed espressioni POV. Eventualmente da wikificare|informatica|settembre 2007|<small>[[Discussioni_utente:Elitre|Elitre]]</small> 13:27, 11 set 2007 (CEST)}}
|Nome = Firebird
'''Firebird''' è un potente software [[RDBMS]] (Relational database management system) adatto a numerosi [[sistema operativo|sistemi operativi]] tra i quali:
|Screenshot = Turbobird screenshot.png
*[[Windows]],
|Didascalia =
*[[FreeBSD]],
|Sviluppatore = Firebird
*[[Mac OS X]],
|Ultima versione =
*[[Linux]]
|UltimaVersioneBeta =
*Sistemi [[Unix]].
|DataUltimaVersioneBeta =
Le principali caratteristiche di questo RDBMS 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.
|SistemaOperativo = Multipiattaforma
|Genere = RDBMS
|Licenza = [[Interbase Public License]] o IDPL, [[Mozilla Public License]]
|SoftwareLibero = sì
|Lingua =
|SitoWeb =
}}
In [[informatica]] '''Firebird SQL''' è un DB e un [[RDBMS|database management system relazionale]] (RDBMS), [[open source]] distribuito sotto [[licenza (informatica)|licenza]] IPL ([[Interbase Public License]]) o [[IDPL]] (simile alla [[Mozilla Public License]]).
 
Supporta numerosi [[sistema operativo|sistemi operativi]] tra i quali: [[GNU/Linux]], [[Windows]], [[FreeBSD]], [[macOS]] e alcuni sistemi [[Unix]].<ref>{{en}} [http://www.firebirdsql.org/en/downloads/#Platforms Supported Platforms]</ref> 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 rilasciatedistribuite 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]].
Tutte queste caratteristiche sono state migliorate prendendo come punto di partenza la precedente versione di Firebird, [[Interbase]] (Firebird è nato dalla pubblicazione del codice sorgente d’Interbase 6.0 avvenuta nel [[2000]]).
Infine Firebird è un software [[open source|Opensource]] regolato dalla [[Mozilla|Mozilla Public License v. 1.1]] e che quindi può essere usato gratuitamente sia per uso privato sia per applicazioni commerciali.
Firebird è completamente privo di registrazione, licenza o donazioni per la distribuzione su scala e download. Può essere distribuito liberamente per l'utilizzo con qualsiasi software di terze parti, siano esse commerciali o no.
 
Nel [[2003]], una querelle<ref>[http://www.mozillazine.org/talkback.html?article=3082 Reports on Phoenix/Minotaur Renaming Focus on Firebird Database Protest]</ref> 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]].<ref>{{cita web |url=https://www.mozilla.org/projects/firefox/firefox-name-faq.html |titolo=Mozilla Firefox - Brand Name Frequently Asked Questions |cognome=Garrity |nome=Steven |coautori=Markham, Gervase; Goodger, Ben; Decrem, Bart; et al. |sito=mozilla.org |editore=Mozilla Foundation |accesso=3 aprile 2011 |urlmorto=sì |urlarchivio=https://web.archive.org/web/20120228204829/http://www.mozilla.org/projects/firefox/firefox-name-faq.html |dataarchivio=28 febbraio 2012 }}</ref>
'''PERCHE’ FIREBIRD ?'''
 
== Storia ==
Firebird nasce dal codice sorgente di Interbase 6.0 equindi ne acquista tutte le sue caratteristiche principali. E’ più facile capire,quindi, il motivo per cui scegliere Firebird se prima parliamo del motivo per cui una volta si sceglieva Interbase (il suo antenato).
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 e grossi nomi come la NASA, la National Bank di
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<ref>{{Cita pubblicazione |cognome=Babcock |nome=Charles |titolo=Preassembled Client/Server |rivista=[[Computerworld (blog)|Computerworld]] |data=28 febbraio 1994 |volume=28 |numero=9 |url=https://books.google.it/books?id=CENB4wa_QxUC&pg=PA6&lpg=PA6&dq=interbase+Boston+Stock+Exchange&source=bl&ots=YuoCJtqj2D&sig=bkPdA1m0WQcSg6DIusaHK7eC53A&hl=it&sa=X&ved=0ahUKEwj5j67J8LzRAhXmK8AKHeNPAroQ6AEIITAA#v=onepage&q=interbase%20Boston%20Stock%20Exchange&f=false |accesso=9 novembre 2019 |lingua=en |p=6}}</ref><ref>{{Cita web |autore=Khaldi, Jilani |titolo=Firebird SQL |sito=Google books 1/3/2015 vol. 1 pp 8 |url=https://books.google.it/books?id=czreBgAAQBAJ&pg=PA8&lpg=PA8&dq=Firebird+sql+NASA&source=bl&ots=3buySvDLQa&sig=dWOF0prH_3bMObM0j52Ur33bx-A&hl=it&sa=X&ved=0ahUKEwimwMyY9LzRAhWJMFAKHctHAlkQ6AEINDAD#v=onepage&q=Firebird%20sql%20NASA&f=false |accesso=12 gennaio 2017 |urlarchivio=https://web.archive.org/web/20170113163445/https://books.google.it/books?id=czreBgAAQBAJ&pg=PA8&lpg=PA8&dq=Firebird+sql+NASA&source=bl&ots=3buySvDLQa&sig=dWOF0prH_3bMObM0j52Ur33bx-A&hl=it&sa=X&ved=0ahUKEwimwMyY9LzRAhWJMFAKHctHAlkQ6AEINDAD#v=onepage&q=Firebird%20sql%20NASA&f=false |dataarchivio=13 gennaio 2017 |urlmorto=sì }}</ref> e molti altri.
Chicago, Nokia, Ericsson, Boeing, Boston Stock Exchange e molti altri.
La bassa occupazione di memoria, sia [[RAM]] che su disco (richiede ancora oggi poco più di 4 [[megabyte|MB]]
di RAM e meno di 10 MB su disco per una completa installazione), la facilità d’installazioned'installazione,
d’utilizzod'utilizzo e di gestione erano (e sono) dimolto grancompetitivi lungaverso piùaltri aRDBMS portatacon diuguali manoed dianche moltiinferiori altriqualità RDBMSe confunzionalità.
InterBase, dal principio, fu concepito, progettato e realizzato per un'utenza professionale ed aziendale pagante, con tutte le implicazioni del caso.
uguali ed anche inferiori qualità e funzionalità.
InterBase fu sviluppato (nell'ultima fase della sua vita) da un'azienda leader a livello mondiale nello sviluppo di
InterBase, dal principio, fu concepito, progettato e realizzato per un’utenza professionale ed
software per programmatori professionisti: la [[Borland|Borland International]].
aziendale pagante, con tutte le implicazioni del caso. Quindi, non si tratta di un software nato e
cresciuto in piena anarchia e senza nessuna garanzia, o di uno dei tanti software sviluppati, per
hobby o giusto per sperimentare, da dilettanti programmatori senza pretese e con know-how
limitato che, dopo tanti anni, ha raggiunto il successo.
InterBase è stato sviluppato da un’azienda seria e leader a livello mondiale nello sviluppo di
software per programmatori professionisti, la Borland International..
Firebird è null’altro che un InterBase riveduto, migliorato e reso freeware ed opensource.
Firebird 1.0 non ha rappresentato una rivoluzione rispetto ad InterBase 6.0; infatti, ha solo
eliminato alcuni seri problemi di sicurezza e qualche bug con l’aggiunta di poche migliorie.
Firebird 1.5, invece, è un grande passo avanti rispetto alla versione precedente che, anche
quando si tratta di una versione di transizione alla nuova versione 2.0, rappresenta un ulteriore
passo avanti nella prospettiva di rendere Firebird un RDBMS di altissima qualità. La grande
novità sta nel fatto che l’intero motore del database server è stato riscritto in C++, mentre la
versione precedente era scritta in C. 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 conferma tutte le precedenti funzionalità e qualità ma ne aggiunge, a tutti i livelli,
molte altre. Le più interessanti sono quelle relative alle estensioni del linguaggio SQL derivate dall’SQL 200X e spianare la strada per Vulcano che sarà Firebird della prossima generazione.
Confrontato con altri più popolari RDBMS come MySQL e Postgres, Firebird sta
completamente su un altro pianeta, soprattutto rispetto a MySQL. Infatti, MySQL è un semplice
file manager con estensioni SQL e null’altro; perciò è dovuta la sua velocità.
Firebird è un vero RDBMS con caratteristiche professionali native come l’integrità referenziale
dei dati, le stored procedure e i trigger; caratteristiche che non possono assolutamente mancare in
un RDBMS degno di questo nome. Postgres è sicuramente il più vicino a Firebird, come
caratteristiche e qualità, ma solo per chi lo utilizza sotto UNIX. Infatti, sotto Windows, Postgres
gira sotto emulazione dell’ambiente UNIX che lo rende notevolmente pesante e poco adatto per
un utilizzo serio. Solo le ultime versioni di Postgres sono state compilate nativamente per
Windows che rimane comunque più pesante e richiede maggior risorse di Firebird Super Server.
(Nell’ultimo capitolo vedremo i vantaggi/svantaggi rispetto a SqlServer.)
 
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).<ref>{{cita news | titolo=Inprise/Borland Introduces InterBase 6.0 Now Free and Open Source on Linux, Windows, and Solaris | data=16 luglio 2000 | url=http://www.borland.com/news/press_releases/2000/07_16_00_ib6.html | urlarchivio=https://web.archive.org/web/20041206174134/http://www.borland.com/news/press_releases/2000/07_16_00_ib6.html | dataarchivio=6 dicembre 2004 | accesso=29 gennaio 2009 | urlmorto=sì }}</ref><ref>{{cita web |url=http://www.linuxtoday.com/news_story.php3?ltsn=2000-07-25-004-06-PR-SV-SW |titolo=Borland.com: Inprise/Borland Introduces Interbase 6.0 Now Free and Open Source on Linux |accesso=29 gennaio 2009 |editore=Linux Today |dataarchivio=30 giugno 2009 |urlarchivio=https://web.archive.org/web/20090630215131/http://www.linuxtoday.com/news_story.php3?ltsn=2000-07-25-004-06-PR-SV-SW |urlmorto=sì }}</ref>
'''STORIA DI FIREBIRD'''
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.
1984 Jim Starkey progetta Interbase per la Groton Database System (.gdb)
25 / 07 / 2000 Borland rilascia sotto licenza open “Initial Developer’s Public License (IDPL)” Interbase 6.0.
31 / 07 / 2000 Nasce il Progetto Firebird
22 / 11 / 2000 Primo Kit d’installazione per Firebird
14 / 11 / 2001 Firebird 1.0.
23 / 02 / 2004 Firebird 1.5 scritto in C++
13 / 02 / 2004 Firebird 1.5.1
10 / 11 / 2004 Firebird 2.0 Alpha
19 / 05 / 2006 Firebird 2.0. Release Candidate 2
 
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 [[Linguaggio C|C]].<ref>{{cita web | url=http://firebirdsql.org/rlsnotesh/rlsnotes15.html#intro-gen-notes |titolo=Firebird 1.5.5 Release Notes |accesso=29 settembre 2009}} Firebird 1.5.5 General Notes for rewriting it from C to C++ language</ref> 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,<ref>{{cita web |url=http://www.firebirdsql.org/index.php?op=devjournal&id=djarchive&no_rss=1#00022.jnl |titolo=Firebird 2.0 Final Release Launches in Prague |autore=Dmitry Yemanov |accesso=5 febbraio 2009}}</ref> 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<ref>{{cita web |url=http://www.firebirdsql.org/rlsnotesh/rlsnotes207.html |titolo=Firebird 2.0.7 Release Notes |autore=Helen Borrie |data=5 aprile 2012 |accesso=10 giugno 2012}}</ref> e spianare la strada per Vulcano che sarà Firebird della prossima generazione.
'''CHI STA DIETRO A FIREBIRD'''
Jim Starkey Creatore della prima versione e massimo esperto in Firebird
Firebird Foundation Raccoglie fondi, organizza conferenze e ne promuove l’utilizzo
IBPhoenix Software house tools per DBA
Gruppo di sviluppatori in tutto il mondo
 
La precedente release era la 2.1.4, che aggiunse funzionalità tipo [[Trigger (basi di dati)|trigger procedurali]], [[query]] ricorsive e il supporto per l'istruzione SQL:2003 [[Merge (database)|MERGE]].<ref>{{cita web |url=http://firebirdsql.org/rlsnotesh/rlsnotes210.html#rnfb210-new-feat |titolo=Firebird 2.1 Release Notes |autore=Helen Borrie |data=7 marzo 2012 |accesso=10 giugno 2012}}</ref>
'''CHI LO USA'''
Motorola
Nokia
Boeing
Boston Stock Exchange
Nasa
''' Specifiche tecniche '''
 
Firebird 2.5 "stable release" aggiunge nuove funzionalità che includono un miglioramento del [[Thread (informatica)|multithreading]], le [[Espressione regolare|espressioni regolari]] e la possibilità di interrogare un database remoto.<ref>{{cita web |url=http://www.firebirdsql.org/file/documentation/release_notes/html/rlsnotes252.html |titolo=Firebird 2.5.2 Release Notes |autore=Helen Borrie|data=7 novembre 2012 |accesso=7 novembre 2012}}</ref>
-E’ 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. E’ 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.
 
Firebird 3.0 "stable release" è uscita il 19 aprile 2016. Vi è previsto il supporto alle [[stored procedure]] nei linguaggi come [[Java (linguaggio di programmazione)|Java]] e [[C++]], e [[SQL#DML: Manipolazione dei dati|funzioni window SQL]] (SELECT) che restringono i risultati delle query. Una seconda versione alpha era stata distribuita in gennaio 2014.<ref>{{cita web |url=http://www.firebirdsql.org/en/roadmap/|titolo=Firebird Roadmap |data=marzo 2014 }}</ref> Gli obiettivi principali di questa versione sono l'unificazione delle architetture server e il miglioramento del supporto ai [[Sistema multiprocessore simmetrico|sistemi multiprocessore simmetrico]] (SMP) e ai processori [[multi-core]].<ref>[http://web.firebirdsql.org/download/prerelease/rlsnotes/Firebird-3.0.0_RC1-ReleaseNotes.pdf ''Release Notes Version 3.0 RC 1''.] {{Webarchive|url=https://web.archive.org/web/20151225062433/http://web.firebirdsql.org/download/prerelease/rlsnotes/Firebird-3.0.0_RC1-ReleaseNotes.pdf |data=25 dicembre 2015 }} (PDF) firebirdsql.org; accesso il 9 novembre 2015.</ref>
-Implementa le specifiche A.C.I.D.; cioè il concetto di atomicità, consistenza, isolamento e durabilità.
 
== Descrizione ==
-Integrità referenziale dei dati con possibilità di riferire una chiave primaria con una o più
=== Organizzazione del progetto ===
chiavi esterne mantenendo collegamenti tra attributi di diverse relazioni.
* [[Firebird Foundation]] - Raccoglie fondi, organizza conferenze e ne promuove l'utilizzo
* Gruppo di sviluppatori in tutto il mondo
 
=== Integrazione in Libre Office ===
-Architettura multigenerazionale. Il server, in base alle esigenze, mantiene una copia
Col lavoro del [[Google Summer of Code]] 2013 è cominciata l'integrazione di Firebird come sostituto di [[HSQLDB]] in [[LibreOffice]], nel modulo [[LibreOffice Base|Base]].<ref>{{Cita web|url=http://www.firebirdnews.org/?p=6610|titolo=Firebird Embedded and LibreOffice is the killer combination to scale from a single file application to a client/server approach|data=14 febbraio 2012|autore=mariuz|editore=Firebirdnews.org|accesso=8 luglio 2013}}</ref><ref>{{Cita web|url=http://www.ahunt.org/2013/05/gsoc-2013-libreoffice-firebird-sql-connector/|accesso=8 luglio 2013|titolo=GSOC 2013: LibreOffice Firebird SQL Connector|data=28 maggio 2013|autore=ahunt}}</ref>
dei vecchi record da ripristinare nel caso in cui una transazione fallisca.
 
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.
-Supporta le transazioni. Una funzionalità indispensabile per garantire la correttezza e il buo esito di operazioni di inserimento, aggiornamento o cancellazione di dati.
 
=== Interfacce grafiche di amministrazione ===
-Gestione dei lock a livello del singolo record anziché
Esistono molte interfacce grafiche di amministrazione per creare database con Firebird, con diverse licenze, scaricabili dal sito <ref>{{cita web|1=https://www.ibphoenix.com/download/tools/admin/|2=Sito di Ibphoenix|lingua=en|accesso=16 maggio 2016|urlarchivio=https://web.archive.org/web/20160313200850/http://ibphoenix.com/download/tools/admin|dataarchivio=13 marzo 2016|urlmorto=sì}}</ref>
dell’intera pagina. In questo modo gli altri record sono manipolabili liberamente da altri client.
Le principali sono:
* [[LibreOffice Base]] dalla versione 5.3
* {{cita web|1=http://code.sd/products/turbobird/|2=TurboBird|lingua=en|accesso=18 novembre 2016|urlarchivio=https://web.archive.org/web/20161118223909/http://code.sd/products/turbobird/|dataarchivio=18 novembre 2016|urlmorto=sì}}
* {{cita web|https://sourceforge.net/projects/flamerobin|FlameRobin|lingua=en}}
* {{cita web|http://firebirdsql.org/en/third-party-tools/|elenco sul sito Firebird|lingua=en}}
 
=== Fyracle ===
-Supporta il protocollo di rete TCP/IP su tutte le piattaforme garantendo l’utilizzo
[[Fyracle]]<ref>{{Cita web |url=http://www.janus-software.com/fb_fyracle.html |titolo=Janus Software<!-- Titolo generato automaticamente --> |accesso=23 giugno 2014 |dataarchivio=6 aprile 2010 |urlarchivio=https://web.archive.org/web/20100406080752/http://www.janus-software.com/fb_fyracle.html |urlmorto=sì }}</ref> è una versione modificata di Firebird SQL che consente il suo utilizzo in sostituzione di [[Oracle Database|Oracle]]. Inoltre la sintassi del linguaggio SQL di Oracle potrà essere utilizzata per effettuare delle query su database Firebird.
di Firebird come SQL server sia nelle applicazioni client/server sia in quelle web con
completa trasparenza.
 
Una delle applicazioni più utili di questa versione è quella di permettere l'impiego di Firebird con l'[[Enterprise resource planning|ERP]] [[Compiere]], che è progettato per utilizzare Oracle.
-Protocollo XNET usato per accedere ai dati in maniere locale.
 
== Caratteristiche ==
-Tre archittetture diverse a seconda del tipo della macchina e di come si vuole utilizzare il DBMS.
* È 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 [[ACID|A.C.I.D.]]; cioè il concetto di atomicità, consistenza, isolamento e durabilità.
* [[Vincolo di integrità|Integrità referenziale]] dei dati con possibilità di riferire una [[chiave primaria]] con una o più chiavi esterne mantenendo collegamenti tra [[Attributo (basi di dati)|attributi]] di diverse [[Modello relazionale|relazioni]].
* [[Architettura (computer)|Architettura]] multigenerazionale. Il [[server]], in base alle esigenze, mantiene una copia dei vecchi [[record (database)|record]] da ripristinare nel caso in cui una transazione fallisca.
* Supporta le [[Transazione (basi di dati)|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.
* [[Vista (basi di dati)|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 (basi di dati)|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 (basi di dati)|tipo di dato]] [[Binary large object|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 [[Application programming interface|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 (linguaggio)|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 ===
-OSD(On-Disk Structure) 10.1 per firebird 1.5 e OSD 11 per Firebird 2.0
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.
-Ottimizzazione delle query a livello di server o manualmente dall’utente. Quando viene
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).
scritto del codice SQL, Firebird, prima di eseguirlo, cerca di ottimizzarlo grazie al suo optimizer interno.
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 ===
-Viste aggiornabili in seguito ad eventi stabiliti.
Questa sezione illustra i limiti strutturali di Firebird (molti di essi sono dovuti all'[[hardware]] e al [[sistema operativo]] usato):
* Massimo numero di client connessi al server. Il numero di client che possono contemporaneamente collegarsi al server è teoricamente illimitato. Ma è ovvio che tale numero dipende strettamente dal sistema operativo e dall'hardware in uso. In linea di massima, un server basato su un Pentium 150&nbsp;MHz e 64 MiB di RAM potrebbe reggere comodamente l'accesso contemporaneo di 150 client. Queste considerazioni si riferiscono ad un'applicazione client media che esegue delle normali query sul database. È evidente che se l'applicazione interagisce in modo intensivo col database il numero di accessi sopraindicato deve essere di conseguenza ridotto.
* Dimensione massima di un database. La massima dimensione consentita ad un database è 2 GB sui sistemi operativi Windows 95/98 e di 4 GB sui sistemi Windows NT/2000 ed alcuni sistemi Unix. Occorre documentarsi sul sistema operativo in uso e controllare la dimensione massima di un file che tale sistema può gestire. Comunque, Firebird permette di suddividere un singolo database in più file e quindi sarà possibile gestire un database che abbia una dimensione limitata solo dalla capienza fisica dell'hard disk.
* Numero massimo di file per un database. Da progetto, il numero massimo di file che costituiscono un database Firebird è fissato a 65536 (2<sup>16</sup>) perché i file vengono identificati da un intero a 16 bit. Comunque la maggior parte dei sistemi operativi attuali non supporta un numero così elevato di file aperti. Anzi, il numero reale di file mantenuti contemporaneamente aperti è molto minore di 65536. Conviene comunque documentarsi sul sistema operativo in uso e sul numero massimo di file mantenuti aperti contemporaneamente dal sistema e cercare di aumentare quel valore in maniera da rispondere alle vostre esigenze.
* Numero massimo di tabelle in un database. Anche il numero delle tabelle in un singolo database è stato fissato da progetto a 65536 (2<sup>16</sup>) perché il numero delle tabelle viene identificato da un intero a 16 bit.
* Dimensione massima di una linea. È stata fissata a 64 KB. Ogni campo BLOB o array contribuisce con 8 byte a questo valore. Le tabelle di sistema (tabelle mantenute automaticamente dal motore database per contenere i propri dati) hanno il limite di 128 KB per linea.
* Numero massimo di linee e di colonne per tabella. Da progetto il numero delle linee è fissato a 4.294.967.296. Questo è dovuto al fatto che il numero di una linea viene identificato da un intero a 32 bit. Il numero delle colonne dipende strettamente dal numero delle linee. Una linea potrebbe essere di 64 KB al massimo. Si possono definire in questo caso 16384 colonne di interi (4 byte ciascuno) per costituire una singola tabella di dimensione massima.
* Numero massimo di indici per database. Anche questo numero è stato fissato da progetto a 65536 perché gli indici di un database vengono identificati da un intero a 16 bit.
* Numero massimo di indici per tabella. Questo numero è stato fissato da progetto a 256. In Interbase al massimo erano 64 indici per tabella.
* Dimensione massima di una chiave indice. Una regola pratica per determinare questo valore è la seguente: iniziare con 256 byte per una chiave per una singola colonna e con 200 byte per una chiave per più colonne e sottrarre 4 byte per ogni colonna aggiuntiva. Esempio: una chiave CHAR per una singola colonna può occupare 256 - 4 = 252 byte; la stessa chiave per 3 colonne occuperà 188 byte. È da sottolineare che nel conteggio occorre tenere in considerazione il numero effettivo di byte e non di caratteri.
* Numero massimo di eventi per una stored procedure: Il programma di Firebird non ha stabilito un limite per queste azioni, ma bisogna controllare le dimensioni di una stored procedure e il trigger.
* Dimensione massima di stored procedure e di trigger: Il limite stabilito è di 48 KB per l'BLR (codice compilato bytecode di una stored procedure o un trigger).
* Dimensione max. di un campo BLOB. La dimensione massima di un campo BLOB dipende dalla dimensione di pagina del database:
** dimensione pagina = 1 KB - 64 MB per il campo BLOB
** dimensione pagina = 2 KB - 512 MB per il campo BLOB
** dimensione pagina = 4 KB - 4 GB per il campo BLOB
** dimensione pagina = 8 KB - 32 GB per il campo BLOB
:La dimensione massima di un segmento per il campo BLOB è di 32 KB.
* Numero max. di tabelle collegate con JOIN. Da progetto, non esiste nessun limite a tale valore. Il carico di lavoro del sistema cresce in maniera esponenziale al crescere del numero delle tabelle da collegare con JOIN. Non è consigliabile superare il numero di 16 tabelle in una singola query.
* Numero max. di query annidate. Non esiste un limite stabilito da progetto perché dipende strettamente dalla complessità delle query e dal risultato che l'utente vuole ottenere.
* Numero max. di colonne per un indice composito: 16.
* Numero max. di stored procedure e trigger annidati: 750 per tutti i sistemi Windows e 1000 per i sistemi Unix.
* Dimensione max. di una chiave in operazione di SORT: 32 KB.
* Limite di una data. Una data deve variare tra 1º gennaio 100 d.C. e il 29 febbraio 32768 d.C.
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 ===
-Stored procedure. Sono delle applicazioni SQL che vengono memorizzate all’interno del
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.
database e vengono eseguite a livello di server. Offrono una grande flessibilità e potenza per
Quindi, bisognava introdurre qualche artificio per poter ancora utilizzare vecchi database ed applicazioni create con le precedenti versioni.
svolgere i compiti più impensabili e bilanciare il carico di lavoro tra il client ed il server.
La soluzione è stata nell'introduzione dei dialetti che hanno il compito di controllare l'appartenenza o meno di un'estensione a una determinata versione.
 
* Dialetto 1: corrisponde alle notazioni e funzionalità della versione precedente InterBase 5.6.
-Trigger. Sono simili alle stored procedure ma non vengono mai eseguiti esplicitamente;
* Dialetto 2: serve solo nel caso di debugging; viene segnalato un errore nel caso in cui viene usata una funzione oppure un comando con implementazione diversa da quella precedente. Per esempio, la variabile DATE nella nuova versione è di tipo diverso da quella della precedente.
svolgono le loro azioni in seguito a modifiche apportate alle tabelle (inserimento, modifica o
* Dialetto 3: rappresenta le nuove funzionalità e le estensioni relative solo all'ultima versione (ad esempio una nuova funzione Timestamp, possibilità di usare contatori a 64 bit e anche tools particolari come la possibilità di replicare il database) e si avvicina di più allo standard ANSI SQL.
eliminazione di un dato). Sono utili quando si cerca di ottenere un determinato risultato in
seguito ad una azione specifica.
 
Il tipo di dialetto viene salvato nel database e quindi non dipende dal server.
-Un’applicazione può accedere contemporaneamente a più database.
 
=== Funzionalità nella versione 2.0 ===
-Gestione del tipo di dato BLOB con possibilità di memorizzare dati di qualsiasi genere
* Accurata revisione dei meccanismi di indicizzazione per incrementare le prestazioni e minimizzare i colli di bottiglia durante le ricerche e le selezioni.
(immagini, suoni, animazioni, testi...).
* Varie limitazioni ereditate dal codice originario sono state rimosse, per es. il limite di 252-byte sulla lunghezza degli indici e il limite di 30Gb sulla dimensione delle tabelle.
 
* Una nuova interfaccia per agganciare set di caratteri internazionali, che include il supporto per [[Unicode]].
-Messaggi di allerta che informano un’applicazione delle modifiche avvenute nel database ed
* Supporto per le piattaforme a 64-bit grazie ai binari distribuiti per [[AMD64]] e [[Intel]] [[EM64T]]. I binari per Windows 64-bit sono in fase di testing e verranno distribuiti in seguito.
in seguito alle quali l’applicazione è chiamata a svolgere delle specifiche azioni.
* Un'intensa attività di verifica della sicurezza del server, che include una più robusta cifratura delle password e una protezione integrata contro gli attacchi a [[Brute force|forza bruta]].
 
* Supporto per le tabelle derivate in SQL200x, che include l'annidamento a più livelli e il joning di subquery.
-UDF (User Defined Functions), ossia, funzioni definite dall’utente che permettono di
* Sintassi EXECUTE BLOCK per il supporto di blocchi di SQL procedurale (PSQL), che può essere eseguito in statement SQL.
scrivere programmi esterni che possono essere eseguite da codice SQL dall’interno del
* [[Cursore (basi di dati)|Cursori]] espliciti in PSQL, disponibili anche in statement EXECUTE BLOCK.
database.
* Timeout opzionale WAIT per la risoluzione dei conflitti di locking, disponibile come argomento di una SET TRANSACTION oppure come parametro di una transazione via [[Application programming interface|API]].
 
* Funzionalità di backup incrementale completamente rinnovate.
-Collegamento tra diverse relazioni con possibilità di eseguire su di esse delle query anche
* Ridefinizione dell'architettura in modalità "serverless" (per connessioni locali) su Windows, per eliminare l'intrinseca instabilità del protocollo IPServer originario.
molto complesse. La lettura dei dati non è bloccante. Tutti i client possono leggere contemporaneamente gli stessi record.
* Implementazione delle Services API completata su tutte le piattaforme.
 
-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 linea 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. E’ 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.
 
== Architetture ==
'''ARCHITETTURE'''
Firebird ha 3 tipi di architetture che lavorano in maniera diversa, ma non per questo una è migliore o peggiore dell’altradell'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:'' ===
E’È la prima architettura utilizzata dall’antenatodall'antenato di Firebird, Interbase, tra la fine degli [[anni ’801980|anni ottanta]] e ’90[[anni 1990|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’ugualeun'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’è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’è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’unical'unica che supporta [[Multiprocessore simmetrico|SMP]] (la memoria condivisa tra i vari processori) e l’hiperthreadingl'[[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 RamRAM.
 
''=== Superserver:'' ===
Dal 1996 e più precisamente dall’uscitadall'uscita di Interbase 4.1, fu introdotta l’architettural'architettura Superserver.
Questa architettura andava incontro alle nuove caratteristiche tecniche di Windows, più precisamente all’architetturaall'architettura a 32 Bitbit 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’internoall'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 grossonotevole 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’èc'è meno spreco di RamRAM.
Normalmente all’avvioall'avvio di Firebird la versione superserver anche se non c’èc'è nessuna connessione con i client occupa ( a differenza della versione classic server) un po’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”"sperimentale", non ancora affidabile.
 
''=== Embedded server:'' ===
E’È l’ultimal'ultima nata come architettura, sviluppata dalla versione 1.5 di Firebird in poi.
Questo modello non è altro che una versione compatta dell’architetturadell'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’utilizzol'utilizzo di una sola connessione per volta. Normalmente questa architettura viene utilizzata per quei database che girano su un solo pcPC, come ad esempio i portatili oppure per un database in sola lettura ad esempio su [[CD-RomROM]]. Le risorse richieste da questa architettura sono minime, e può pertanto essere installata su qualsiasi client. L’interfacciaL'interfaccia per la gestione del DBMS è identica a quella della versione SuperServer.
 
== Note ==
'''STRUTTURA DEL DATABASE'''
<references/>
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 strutturare 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
 
== Altri progetti ==
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 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.
{{interprogetto}}
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”.
Dialetti di Firebird
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 una estensione ad una determinata versione. In questo modo si
garantisce una certa compatibilità tra le diverse versioni.
In poche parole, il dialetto 1 corrisponde alle notazioni e funzionalità della versione precedente
InterBase 5.6. Il dialetto 2, invece, serve solo nel caso di debugging. Cioè, viene segnalato un
errore nel caso in cui viene usata una funzione oppure un comando con implementazione diversa
da quella precedente. Per esempio, la variabile DATE nella nuova versione è di tipo diverso da
quella della precedente.
Il dialetto 3, infine, rappresenta le nuove funzionalità e le estensioni relative solo all’ultima versione, attraverso questo ultimo dialetto di possono usare delle nuove funzionalità di Firebird ad esempio una nuova funzione Timestamp, possibilità di usare contatori a 64 bit e anche tools particolari come la possibilità di replicare il database che richiede obbligatoriamente il dialetto 3.
Il dialetto 3 per le sue nuove caratteristiche si avvicina di più allo standard ANSI SQL.
Il tipo di dialetto viene salvato nel database e quindi non dipende dal server.
 
==Spefiche di Firebird==
Questa sezione illustra i limiti strutturali di Firebird (molti di essi sono dovuti all'[[hardware]] e al [[sistema operativo]] usato):
*Massimo numero di client connessi al server. Il numero di client che possono
contemporaneamente collegarsi al server è teoricamente illimitato. Ma è ovvio che tale
numero dipende strettamente dal sistema operativo e dall’ hardware in uso. In linea di
massima, un server basato su un Pentium 150 MHZ e 64 MB di RAM potrebbe reggere
comodamente l’accesso contemporaneo di 150 client. Queste considerazioni si riferiscono ad
un’applicazione client media che esegue delle normali query sul database. E’ evidente che se
l’applicazione interagisce in modo intensivo col database il numero di accessi sopraindicato
deve essere di conseguenza ridotto.
*Dimensione massima di un database. La massima dimensione consentita ad un database è
2GB sui sistemi operativi Windows 95/98 e di 4 GB sui sistemi Windows NT/2000 ed
alcuni sistemi Unix. Occorre documentarsi sul sistema operativo in uso e controllare la
dimensione massima di un file che tale sistema può gestire.
Comunque, Firebird permette di suddividere un singolo database in più file e quindi sarà possibile
gestire un database che abbia una dimensione limitata solo dalla capienza fisica dell’ hard disk.
*Numero massimo di file per un database. Da progetto, il numero massimo di file che
costituiscono un database Firebird è fissato a 65636 (2*16) perché i file vengono
identificati da un intero a 16 bit. Comunque la maggior parte dei sistemi operativi attuali
non supporta un numero così elevato di file aperti. Anzi, il numero reale di file mantenuti
contemporaneamente aperti è molto minore di 65536. Conviene comunque documentarsi sul
sistema operativo in uso e sul numero massimo di file mantenuti aperti
contemporaneamente dal sistema e cercare di aumentare quel valore in maniera da
rispondere alle vostre esigenze.
*Numero massimo di tabelle in un database. Anche il numero delle tabelle in un singolo
database è stato fissato da progetto a 65536 (2**16) perché il numero delle tabelle viene
identificato da un intero a 16 bit.
*Dimensione massima di una linea. E’ stata fissata a 64 KB. Ogni campo BLOB o array
contribuisce con 8 byte a questo valore. Le tabelle di sistema (tabelle mantenute
automaticamente dal motore database per contenere i propri dati) hanno il limite di 128
KB per linea.
*Numero massimo di linee e di colonne per tabella. Da progetto il numero delle linee è
fissato a 4.294.967.296. Questo è dovuto al fatto che il numero di una linea viene identificato
da un intero a 32 bit. Il numero delle colonne dipende strettamente dal numero delle linee.
Una linea potrebbe essere di 64 KB al massimo. Si possono definire in questo caso 16384
colonne di interi (4 byte ciascuno) per costituire una singola tabella di dimensione massima.
*Numero massimo di indici per database. Anche questo numero è stato fissato da progetto a
65536 perché gli indici di un database vengono identificati da un intero a 16 bit.
*Numero massimo di indici per tabella. Questo numero è stato fissato da progetto a 256.
In Interbase al massimo erano 64 indici per tabella.
*Dimensione massima di una chiave indice. Una regola pratica per determinare questo valore
è la seguente: iniziare con 256 byte per una chiave per una singola colonna e con 200 byte
per una chiave per più colonne e sottrarre 4 byte per ogni colonna aggiuntiva. Esempio:
una chiave CHAR per una singola colonna può occupare 256 - 4 = 252 byte; la stessa chiave
per 3 colonne occuperà 188 byte. E’ da sottolineare che nel conteggio occorre tenere in
considerazione il numero effettivo di byte e non di caratteri.
*Numero massimo di eventi per una stored procedure:
##Il programma di Firebord non ha stabilito un limito per queste azioni, ma bisogna controllare le dimensioni di una stored procedure e il trigger.
*Dimensione massima di stored procedure e di trigger:
## Il limite stabilito è di 48 KB per l'BLR(codice compilato bytecode di una stored procedure o un trigger).
*Dimensione max. di un campo BLOB . La dimensione massima di un campo BLOB
dipende dalla dimensione di pagina del database:
##dimensione pagina = 1 KB - 64 MB per il campo BLOB
##dimensione pagina = 2 KB - 512 MB per il campo BLOB
##dimensione pagina = 4 KB - 4 GB per il campo BLOB
##dimensione pagina = 8 KB - 32 GB per il campo BLOB
La dimensione massima di un segmento per il campo BLOB è di 32 KB.
*Numero max. di tabelle collegate con JOIN. Da progetto, non esiste nessun limite a tale
valore. Il carico di lavoro del sistema cresce in maniera esponenziale al crescere del numero
delle tabelle da collegare con JOIN. Non è consigliabile superare il numero di 16 tabelle in
una singola query.
*Numero max. di query annidate. Non esiste un limite stabilito da progetto
perché dipende strettamente dalla complessità delle query e dal risultato che l’utente vuole ottenere.
*Numero max. di colonne per un indice composito. 16.
*Numero max. di stored procedure e trigger annidati. 750 per tutti i sistemi Windows e
1000 per i sistemi Unix.
*Dimensione max. di una chiave in operazione di SORT. 32 KB.
*Limite di una data. Una data deve variare tra 1 gennaio 100 d.c. e il 29 febbraio 32768 d.c.
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.
 
== Funzionalità incluse nella versione 2.0 ==
* Accurata revisione dei meccanismi di indicizzazione per incrementare le prestazioni e minimizzare i colli di bottiglia durante le ricerche e le selezioni.
* Varie limitazioni ereditate dal codice originario sono state rimosse, per es. il limite di 252-byte sulla lunghezza degli indici e il limite di 30Gb sulla dimensione delle tabelle.
* Una nuova interfaccia per agganciare set di caratteri internazionali, che include il supporto per [[Unicode]].
* Supporto per le piattaforme a 64-bit grazie ai binari rilasciati per [[AMD64]] e [[Intel]] [[EM64T]]. I binari per Windows 64-bit sono in fase di testing e verranno rilasciati in seguito.
* Un'intensa attività di verifica della sicurezza del server, che include una più robusta cifratura delle password ed una protezione integrata contro gli attacchi a forza bruta.
* Supporto per le tabelle derivate in SQL200x, che include l'annidamento a più livelli e il joning di subquery.
* Sintassi EXECUTE BLOCK per il supporto di blocchi di SQL procedurale (PSQL), che può essere eseguito in statement SQL.
* Cursori espliciti in PSQL, disponibili anche in statement EXECUTE BLOCK.
* Timeout opzionale WAIT per la risoluzione dei conflitti di locking, disponibile come argomento di una SET TRANSACTION oppure come parametro di una transazione via [[API]].
* Funzionalità di backup incrementale completamente rinnovate.
* Ridefinizione dell'architettura in modalità "serverless" (per connesioni locali) su Windows, per eliminare l'intrinseca instabilità del protocollo IPServer originario.
* Implementazione delle Services API completata su tutte le piattaforme.
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
*{{en}}[http://www.firebirdsql.org/ Sito ufficiale di Firebird SQL]
* {{cita web|http://www.settorezero.com/wordpress/firebird-un-database-management-system-open-source-primi-passi-nellutilizzo/|guida rapida introduttiva Firebird italiano}}
*{{it}}[http://www.firebird.it/ Firebird Italia]
* {{cita web|http://www.firebirdsql.org/manual/it/qsg2-it.html|guida rapida introduttiva Firebird 2 italiano}}
* {{cita web|http://docplayer.it/2659129-Guida-rapida-introduttiva-a-firebird-2.html|guida rapida introduttiva Firebird 2 italiano}}
* {{cita web | 1 = http://www.firebirdconference.net/ | 2 = 6a International Conference - Bergamo - Italia | accesso = 25 settembre 2008 | urlarchivio = https://web.archive.org/web/20080913024525/http://www.firebirdconference.net/ | dataarchivio = 13 settembre 2008 | urlmorto = sì }}
* {{cita web|http://www.firebirdnews.org/|Sito di news su Firebird SQL|lingua=en}}
* {{cita web | 1 = http://www.nucleonsoftware.com | 2 = Database Master - FireBird Management Software | accesso = 7 maggio 2020 | urlarchivio = https://web.archive.org/web/20200122085236/http://nucleonsoftware.com/ | dataarchivio = 22 gennaio 2020 | urlmorto = sì }}
 
{{Database management system}}
[[Categoria:Database]]
 
{{Portale|SoftwareInformatica|software libero}}
[[Categoria:Software libero per base dati]]
[[Categoria:Software per base dati]]
[[da:Firebird (database server)]]
[[de:Firebird (Datenbank)]]
[[en:Firebird (database server)]]
[[es:Firebird]]
[[fi:Firebird]]
[[fr:FirebirdSQL]]
[[he:Firebird]]
[[id:Firebird]]
[[ja:Firebird]]
[[ko:파이어버드 (데이터베이스)]]
[[nl:Firebird (database)]]
[[pl:Firebird]]
[[pt:Firebird (servidor de base de dados)]]
[[ro:Pasăre de Foc]]
[[ru:Firebird]]
[[tr:Firebird]]
[[uk:Firebird]]
[[zh:Firebird (数据库)]]