Firebird SQL: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
mNessun oggetto della modifica |
m apostrofo tipografico |
||
Riga 31:
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]], Boston Stock Exchange e molti altri.{{citazione necessaria}}
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à
InterBase, dal principio, fu concepito, progettato e realizzato per
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|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).<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 = http://web.archive.org/web/20041206174134/www.borland.com/news/press_releases/2000/07_16_00_ib6.html | dataarchivio = 6 dicembre 2004 | accesso=29 gennaio 2009}}</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}}</ref>
Firebird 1.0 infatti non rappresenta una rivoluzione rispetto ad InterBase 6.0, ma elimina alcuni seri problemi di sicurezza e qualche bug con
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
Riga 56:
== Organizzazione del progetto ==
* [[Firebird Foundation]] - Raccoglie fondi, organizza conferenze e ne promuove
* Gruppo di sviluppatori in tutto il mondo
Riga 75:
* 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
* [[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.
Riga 82:
* 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
* 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
* 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]].
== Architetture ==
Firebird ha 3 tipi di architetture che lavorano in maniera diversa, ma non per questo una è migliore o peggiore
Tutti questi fattori permettono di scegliere di volta in volta quella più adatta.
Riga 99:
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
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.
Riga 106:
=== Superserver ===
Dal 1996 e più precisamente
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
La memoria condivisa (cache) per questo tipo di architettura è per default di 2.048 pagine.
Questa caratteristica è sicuramente un grosso 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
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.
Riga 118:
=== Embedded server ===
È l'ultima nata come architettura, sviluppata dalla versione 1.5 di Firebird in poi.
Questo modello non è altro che una versione compatta
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
== 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 strutturale di certi sistemi operativi che non possono gestire file più grandi di una certa dimensione.
Il database essendo contenuto normalmente in un file ha il vantaggio di essere portato da un pc
Per quanto riguarda il backup/restore esiste
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
=== Dialetti di Firebird ===
La prima versione di Firebird (Firebird 1.0) aveva introdotto diverse novità che hanno
avuto come conseguenza
Quindi, bisognava introdurre qualche artificio per poter ancora utilizzare vecchi database ed applicazioni create con le precedenti versioni.
La soluzione è stata
* Dialetto 1: corrisponde alle notazioni e funzionalità della versione precedente InterBase 5.6.
* 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.
* Dialetto 3: rappresenta le nuove funzionalità e le estensioni relative solo
Il tipo di dialetto viene salvato nel database e quindi non dipende dal server.
Riga 164:
: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
* 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.
Riga 172:
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
di questi limiti saranno definitivamente ed ampiamente superati.
|