L in u x Da y 2 00 4 FirebirdSQL: Il DataBase open e affidabile Alessandro Carichini [email protected] 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 [email protected]