L in u x
Da y
2 00 4
FirebirdSQL: Il DataBase
open e affidabile
Alessandro Carichini
alexsoft@riminilug.it
Rimini 27 Novembre
Palazzo della Provincia
Firebird: chi era costui?
L in u x
Da y
2 00 4
25-07-2000: Borland rilascia sotto licenza
open Interbase 6.0
31-07-2000: Nasce il Progetto Firebird
22-11-2000: Primo kit d'installazione per Firebird
18-12-2000: Scoperta backdoor di Borland
14-11-2001: Firebird 1.0
23-02-2004: Firebird 1.5 riscritto in C++
13-07-2004: Firebird 1.5.1
Breve Storia di Interbase
L in u x
Da y
2 00 4
1984: Jim Starkey progetta Interbase per la
Groton Database System (.gdb) rilevata poi da
Ashton-Tate (dBase)
1991: Borland rileva Ashton-Tate ed Interbase3
1991: Jim Starkey lascia Borland e fonda IBPhoenix (tools x DBA e sviluppatori Delphi)
2000: Interbase 6,0 diventa open
2002: Interbase 6,5 ritorna closed
2003: Interbase 7,1 sempre più closed
Mercato dei DB
Open Source
Firebird
PostgreSQL
MySQL
Ingres (da novembre 2004)
Commerciali
L in u x
Da y
2 00 4
Oracle
DB2 IBM
Microsoft SQL
Interbase Borland
Suddivisione del Mercato
Altro 14,90%
IBM DB2 33,80%
L in u x
Da y
2 00 4
Microsoft SQLServer 18,70%
Oracle 32,60%
Fonte Gartner: http://www.01net.it/01NET/HP/0,1254,1_ART_52224,00.html
Altro 14,9 %
Informix IBM 1,9 %
NCR Teradata 2,8 %
Altro 10,2 %
L in u x
Da y
2 00 4
Cosa rappresenta?
Sybase ?
Ingres ?
OpenSource ?
Piattaforma Linux
Default: Configurazione LAMP
Linux
Apache
MySQL
Php/Perl/Python
Variante: PostgreSQL
L in u x
Da y
2 00 4
Quando aumentano i volumi
Outsider: Firebird
Se siete dei “temerari”
Perchè è poco conosciuto?
L in u x
Da y
2 00 4
Integrato in Delphi (Win32) e Kylix (Linux)
non si è imposto come ci si aspettava
Borland non sa valorizzare i propri prodotti
Poca manualistica
Non integrato nelle distro di Linux
Molti tools ma per Windows (Delphi)
Non viene implementato come MySQL
Mozilla ha dovuto cambiare il nome al proprio
browser (FireFox)
Caratteristiche di un RDBMS
Relational Data Base Management System
Motore per la gestione di DB relazionali
DB come insieme di tabelle con relazioni:
Campi (colonne) e Records (righe)
Linguaggio SQL
2 00 4
Da y
L in u x
Standard per l'interrogazione dei dati
Architettura Client / Server
Scalabilità
Protezione dei dati
Distribuzione delle funzioni
Caratteristiche di Firebird
Multipiattaforma
Linux, Windows, MacOSX, FreeBSD,
Solaris
Transactions
Architettura Multigenerazionale
Integrità Referenziale (foreign keys)
Conforme ACID (Atomicity, Consistency, Isolation, Durability)
Standard SQL-2 (Ansi92 Entry)
L in u x
Da y
2 00 4
Subquery, Inner e Outer Join
Store Procedures, Triggers, Viste, UDF, SavePoints (SQL-3)
Caratteristiche di Firebird
Tanti Linguaggi/AS/Drivers supportati:
Java, Jboss, Tomcat, Php, Python, Perl,
FreePascal, Delphi, .Net, ODBC
FootPrint minimo (1,5 MB)
L in u x
Da y
2 00 4
Query Optimizer
Sicurezza
Accounts, Grant/Revoke e Alias
Facilità di installazione ed Amministrazione
Licenza IDPL (tipo Mozilla)
Initial Developer's Public License
L in u x
Da y
2 00 4
Comparazione con altri DB
Caratteristiche
Firebird
Interbase
MySQL
Oracle
PostgreSQL
MS SQL
Versione
1,5
7,1
4,1
10g
7,4
2000
Licenza
IDPL OpenSource
Commeciale
GPL OpenSouce /
Commerciale
Commerciale
BSD OpenSource
Commerciale
Hardware*
Pentium
Pentium
Pentium
Pentium 166
Pentium
PII / K6
Piattaforma
Linux/Win32/
Solaris/ OsX /
FreeBSD
Linux/Win32/
Solaris
Linux /
Win32
Linux/WinNT/
Solaris/AIX
Unix /
Win32*
WinNT
Linguaggio
SQL92 Entry*
SQL92 Entry*
SQL92
Intermedio
SQL99
SQL92 Full*
SQL99
Store Procedures
SI
SI
NO
SI
SI
SI
Triggers
SI
SI
NO
SI
SI
SI
Views
SI
SI
NO
SI
SI
SI
Transactions
ACID
ACID
SI*
ACID
ACID
ACID
SMP / 64Bit
SI*
SI
NO
SI
SI
SI
* Hardware (S.O. Stabile)
* SQL92 con funzionalità SQL99
*Transactions: solo con Table InnoDB
Firebird è il meglio di tutti?
Sicuramente è meglio di “certi”
MySQL
MS SQL
Può competere con “qualcuno”
L in u x
Da y
2 00 4
PostgreSQL
Può ambire a rimpiazzare delle applicazioni
commerciali
Oracle
Progetto Fyracle www.janus-software.com/fb_fyracle.html
Chi sta dietro a Firebird?
Jim Starkey
Creatore della prima versione e massimo
esperto di DBMS
Firebird Foundation
Raccoglie fondi, organizza conferenze e ne
promuove l'utilizzo
IBPhoenix
L in u x
Da y
2 00 4
Software House tools per DBA e DEV
Gruppi di sviluppatori in tutto il mondo
L in u x
Da y
2 00 4
Chi lo usa?
Motorola
Nokia
Boeing
Boston Stock Exchange
NASA
“IO”
L in u x
Da y
2 00 4
Cominciamo ad usarlo!
Installazione
Amministrazione
OpenOffice
Programmazione
Perl
PHP
Installazione
Architettura
ClassicServer (CS)
1 processo x connessione
SuperServer (SS)
Unico processo con + thread
Package
L in u x
Da y
2 00 4
RPM, Tarball, Repository (debian/portage)
Lancio e verifica
firebird start
netstat -an | grep 3050
tcp
0
0 0.0.0.0:3050
0.0.0.0:*
LISTEN
Amministrazione
Tools linea di comando (bin)
2 00 4
L in u x
Da y
Interactive SQL (isql)
Interazione col DB
Database Backup e Restore (gbak)
Hot Backup (crontab)
Security DB (gsec)
Gestione Utenti DB
Manutenzione del DB (gfix)
Integrità DB, transazioni sospese, alloca
la cache dei client
Tools di Amministrazione
PHP
IbaseAdmin pkedu.fbt.eitn.wau.nl/ibaseadmin/index.html
IbWebAdmin sourceforge.net/projects/ibwebadmin
GUI LINUX
2 00 4
Da y
L in u x
IBAdmin4Linux www.sqlly.com/download.asp
IBConsole (Borland)
JAVA
SQuirreL SQL squirrel-sql.sourceforge.net
VARI
www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_admin_tools
Integrazione OpenOffice
Requisiti:
Firebird (locale o server)
Java2 installato (1.3 o 1.4)
OpenOffice 1.1.1 con Java2 abilitato
JayBird, driver JDBC di firebird
Configurazione OpenOffice:
L in u x
Da y
2 00 4
Strumenti-Opzioni-Sicurezza
Files .jar in ClassPath
Classe Driver JDBC: org.firebirdsql.jdbc.FBDriver
L in u x
Da y
2 00 4
Integrazione OpenOffice
L in u x
Da y
2 00 4
Integrazione OpenOffice
L in u x
Da y
2 00 4
Integrazione OpenOffice
Programming: PERL
Utilizzando driver DBI
Installando il modulo per Interbase
DBD::Interbase
#!/usr/bin/perl
L in u x
Da y
2 00 4
use DBI;
my
my
my
my
$myHost =
$myFileIB
$myUser =
$myPasswd
“localhost”;
= “prova.fdb”;
“SYSDBA”;
= “masterkey”;
$dbh = DBI->Connect
(“DBI:Interbase:database=$myFileIB;host=$myHost;ib_dialect=3”,$myUser,$myPasswd) or
die(“$DBI::errstr”;
$sth = $dbh->Prepare(“INSERT INTO MYTABLE (NOME) VALUES('ALESSANDRO')”);
if ($sth->Execute() < 0);
{
print “ERROR EXECUTE”;
}
Programming: PHP
Installare il modulo Interbase in PHP
with-interbase=/opt/firebird
$db = ibase_connect(MYDB,USERNAME,PASSWORD) or die("Errore Connessione DataBase!!! ");
$query = "SELECT * FROM USERS";
L in u x
Da y
2 00 4
$result = ibase_query($db,$query);
if (!$result)
{
while ($row = ibase_fetch_row($result))
{
$COD_USER = $row[0];
}
}else
{
printf("Errore %s",ibase_errmsg());
}
Links Utili
Sito Ufficiale
www.firebirdsql.org
Sito Italiano
L in u x
Da y
2 00 4
www.firebirdsql.it
IBPhoenix
www.ibphoenix.com
Tools di migrazione
www.ibphoenix.com/main.nfs?a=ibphoenix&page=ibp_mig_tools
L in u x
Da y
2 00 4
Domande ?
L in u x
Da y
2 00 4
Grazie per l'attenzione
Alessandro Carichini
alexsoft@riminilug.it