Firebird Bellavista Mella Silm1112

  • Published on
    18-Dec-2014

  • View
    213

  • Download
    2

Embed Size (px)

DESCRIPTION

 

Transcript

  • 1. Firebird DBMS Daniele Bellavista, Luca Mella Universit di Bologna December 5, 2011Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 1 / 49
  • 2. Outline I 1 Introduction 2 Architettura Interna Client-Server Pagine e File Tipi di Dato Indici Transazioni 3 Firebird Structured Query Language Stored Procedure Trigger Cursori Eccezioni 4 Security Utenti Ruoli 5 ConcorrenzaDaniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 2 / 49
  • 3. Outline II Firebird Support MVCC Locking 6 Fault Tollerance Replicazione Hot Backup 7 Ottimizzazione Piani di accesso Benchmark 8 ReferencesDaniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 3 / 49
  • 4. Una breve introduzione a Firebird I Un DBMS Open Source Disponibile per Windows, Linux, Apple Macintosh OS/X, FreeBSD e altre piattaforme UNIX-based. Lo sviluppo di Firebird supportato dalla Firebird Foundation. Codice sorgente disponibile sotto licenza InterBase Public License ( possibile costruire software a sua volta sotto licenza IPL utilizzando e modicando liberamente il codice). Sono disponibili vari tools (gratuiti e non) prodotti da terzi (es: GUI manager, Replication support). Sono disponibili vari connectors: ODBC, JDBC, Python, .NET e Delphi driver.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 4 / 49
  • 5. Una breve introduzione a Firebird II Firebird: le origini Firebird nacque dal codice sorgente di InterBase 6.0 Open Edition della Borland, rilasciato sotto licenza IPL nel Giugno 2000. Lultima release di Firebird la 2.5.51, scritta in C++. Il codice sorgente disponibile su Sourceforge. Firebird web-site link: http://www.rebirdsql.org/. Sourceforge project link: http://sourceforge.net/projects/rebird/.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 5 / 49
  • 6. Architettura Server e Client Server SuperServer: multithreading (un thread per ogni connessione). Ogni thread utilizza lo stesso database cache buer (il page buer). Classic Server: ogni connessione gestita da un processo con il proprio db cache buer. Client I client si connettono al server via TCP/IP o utilizzando Windows Networking. Firebird mette a disposizione isql un client a linea di comando.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 6 / 49
  • 7. Architettura del Database I File I database di Firebird sono memorizzati in uno o pi le, creati esplicitamente dallutente. CREATE DATABASE C:dbmyDB.fdb PAGE_SIZE 8192 LENGTH 1024 FILE C:dbmyDB.fd1 LENGTH 100 FILE C:dbmyDB.fd2 Nellesempio riportato, creato un un database formato da un le primario e da due le secondari. Lultimo le riempito no ai limiti o del lesystem o di Firebird. Ogni le vincolato da Firebird ad una dimensione massima di 32 TiB.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 7 / 49
  • 8. Architettura del Database II Pagine I database di Firebird sono composti da sequenze di pagine a dimensione ssa. Ogni pagina contiene un header che contiene un identicatore del tipo di pagina, un checksum e altre informazioni necessarie al DBMS per la corretta interpretazione. Header Page pagina di header, la prima pagina del database. Nel caso di multi-le database, lheader dei rimanenti le contiene solamente la lunghezza e il nome del le successivo. Transaction Inventory Page contiene le informazioni relative ad una transizione, identicandone lo stato: committed, rolled back, limbo (una transazione a due fasi, che lavora su due database, ha committato solo la prima fase), active. Data Page pagina data associata ad ununica tabella. Contiene records e BLOB di piccole dimensioni.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 8 / 49
  • 9. Architettura del Database III Index Root Page pagina che descrive tutti gli indici di una sola tabella. Al suo interno contiene i puntatori alle radici dei B-Tree, memorizzate in pagine di tipo B-Tree Page. Blob Page pagina che memorizza i BLOB di grandi dimensioni. Contiene, se esiste, un riferimento alla pagina che ne contiene il seguito.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 9 / 49
  • 10. Architettura del Database IV Limiti A causa della dimensione ssa delle pagine, nascono delle limitazioni su vari aspetti: Numero massimo di tabelle: 32K Dimensione massima di una tabella: 32 TiB Numero massimo di record per tabella: 16G Dimensione massima di un record: 64 KiB In ogni caso, grazie alla possibilit di avere un multi-le database, la dimensione massima di un DB arbitrariamente espandibile.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 10 / 49
  • 11. Architettura del Database V Alter Support Firebird permette di eettuare lalter a vari livelli; ad esempio possibile alterare il database introducendo nuovi le. ALTER DATABASE ADD FILE lepath [STARTING [AT [PAGE]] pagenum] [LENGTH [=] num [PAGE[S]] possibile alterare una tabella aggiungendo o rimuovendo una colonna, modicandone il tipo, aggiungendo constraints come chiave pimaria e indici, ma non possibile imporre il NOT NULL ad un campo gi creato.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 11 / 49
  • 12. Architettura del Database - Data Type I Data Types Standard data types Char, Smallint, Integer, BigInt, Float, Double. Date and Time Timestamp (64 bit), Date (32 bit), Time (32 bit a 4 decimali - picosecondi - ) Binary Large OBject BLOB memorizzati in pagine separate, con una dimensione massima di 32 GiB.Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 12 / 49
  • 13. Architettura del Database - Data Type II Custom Data Types possibile denire dei domini, ovvero un tipo di dato che un tipo di dato primitivo con laggiunta di un valore di default e delle check condition. CREATE DOMAIN domain_name AS datatype [CHARACTER SET ] DEFAULT {literal | NULL | USER} [NOT NULL] [CHECK ()] [COLLATE ]; Custom Data Types: Esempio - String Enum Type CREATE DOMAIN db_enum AS varchar(20) CHECK (value IS NULL OR value IN (Firebird,MySQL,MSSQL));Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 13 / 49
  • 14. Architettura del Database - Indici I Indici Firebird utilizza indici rappresentati come B-Tree. Supporta indici primary e secondary, indici multi-attributo, ascending o descending. In rebird il costo di accesso ad un indice clustered o unclustered identico: durante laccesso agli indici, raccolta una bitmap di record locaters, riferimenti ai record. Una volta terminata la ricerca, si accede alle Data Page in un certo ordine evitando caricamenti ripetuti della stessa pagina. Sempre utilizzando la bitmap, Firebird in grado di utilizzare campi presenti in indici diversi per ottimizzare la ricerca.Daniele Bellavist