Firebird SQL: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Wisbot (discussione | contributi)
m Bot:Sostituisco virgolette
appena appena una spolveratina...
Riga 1:
{{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)}}
{{Infobox Software |
'''Firebird''' è un potente software [[RDBMS]] (Relational database management system) adatto a numerosi [[sistema operativo|sistemi operativi]] tra i quali:
xx_screenshot = [[Image:Firebird logo.png]] |
xx_didascalia = Logo Firebird |
nome = Firebird |
sviluppatore = [[Firebird]] |
versione_ultimo_rilascio = 2.0.1 |
data_ultimo_rilascio = [[21 marzo]] [[2007]] |
sistema_operativo = [[Multipiattaforma]] |
genere = [[RDBMS]] |
licenza = [[IPL]] |
sito_web = http://www.firebirdsql.org/
}}
'''Firebird SQL''' è un [[RDBMS|relational database management system]] (RDBMS) [[opensource]] distribuito sotto licenza IPL (Interbase Public License).
 
Supporta numerosi [[sistema operativo|sistemi operativi]] tra i quali:
*[[Windows]],
*[[FreeBSD]],
Line 6 ⟶ 20:
*[[Linux]]
*Sistemi [[Unix]].
 
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.
 
Line 13 ⟶ 28:
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.
 
==Storia==
'''PERCHE’ FIREBIRD ?'''
 
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).
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
Line 53 ⟶ 67:
(Nell’ultimo capitolo vedremo i vantaggi/svantaggi rispetto a SqlServer.)
 
===Le tappe del progetto===
'''STORIA DI FIREBIRD'''
*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 2000 Nasce il Progetto Firebird
*22 / 11 / 2000 Primo Kit d’installazione per Firebird
*14 / 11 /2001 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
 
 
'''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
 
'''CHI LO USA'''
*Motorola
*Nokia
*Boeing
*Boston Stock Exchange
*Nasa
''' Specifiche==Caratteristiche tecniche '''==
*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.
 
*Implementa le specifiche A.C.I.D.; cioè il concetto di atomicità, consistenza, isolamento e durabilità.
-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
*Integrità referenziale dei dati con possibilità di riferire una chiave primaria con una o più chiavi esterne mantenendo collegamenti tra attributi di diverse relazioni.
l’SQL3 come le stored procedure e i trigger e anche altre dell’SQL200X. E’ Possibile
*Architettura multigenerazionale. Il server, in base alle esigenze, mantiene una copia dei vecchi record da ripristinare nel caso in cui una transazione fallisca.
accedere contemporaneamente ad un database Firebird da più applicazioni permettendo a
*Supporta le transazioni. Una funzionalità indispensabile per garantire la correttezza e il buo esito di operazioni di inserimento, aggiornamento o cancellazione di dati.
più client di lavorare con gli stessi dati in conformità al modello client/server.
*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
-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 buo 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 maniere locale.
 
*Tre archittetture diverse a seconda del tipo della macchina e di come si vuole utilizzare il DBMS.
-Protocollo XNET usato per accedere ai dati in maniere locale.
*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.
-Tre archittetture diverse a seconda del tipo della macchina e di come si vuole utilizzare il DBMS.
*Viste aggiornabili in seguito ad eventi stabiliti.
 
*Stored procedure. Sono delle applicazioni SQL che vengono memorizzate all’interno del
-OSD(On-Disk Structure) 10.1 per firebird 1.5 e OSD 11 per Firebird 2.0
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;
-Ottimizzazione delle query a livello di server o manualmente dall’utente. Quando viene
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 ad una azione specifica.
scritto del codice SQL, Firebird, prima di eseguirlo, cerca di ottimizzarlo grazie al suo optimizer interno.
*Un’applicazione può accedere contemporaneamente a più database.
 
*Gestione del tipo di dato BLOB con possibilità di memorizzare dati di qualsiasi genere
-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 ad una 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
-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.
-Collegamento tra diverse relazioni con possibilità di eseguire su di esse delle query anche
*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.
molto complesse. La lettura dei dati non è bloccante. Tutti i client possono leggere contemporaneamente gli stessi record.
*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
-Possibilità di richiamare le API di Firebird tramite codice SQL/DSQL (Dynamic SQL) in modo del tutto trasparente.
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
 
-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==
-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'''
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:''===
E’ la prima architettura utilizzata dall’antenato di Firebird, Interbase, tra la fine degli anni ’80 e ’90, 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).
Line 172 ⟶ 142:
Lato client ogni richiesta di un nuovo processo occupa circa 2 MB in Ram.
 
''===Superserver:''===
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.
Line 183 ⟶ 153:
Questa architettura è quella consigliata per i sistemi Microsoft dove la versione classic server per adesso è solo a livello "sperimentale", non ancora affidabile.
 
''===Embedded server:''===
E’ 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.
 
==Struttura del database==
'''STRUTTURA DEL DATABASE'''
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