Firebird DBMS

49
Firebird DBMS Daniele Bellavista, Luca Mella Università di Bologna December 5, 2011 Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 1 / 49

description

An overview of Firebird DBMS

Transcript of Firebird DBMS

Page 1: Firebird DBMS

Firebird DBMS

Daniele Bellavista, Luca Mella

Università di Bologna

December 5, 2011

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 1 / 49

Page 2: Firebird DBMS

Outline I1 Introduction

2 Architettura InternaClient-ServerPagine e FileTipi di DatoIndiciTransazioni

3 Firebird Structured Query LanguageStored ProcedureTriggerCursoriEccezioni

4 SecurityUtentiRuoli

5 ConcorrenzaDaniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 2 / 49

Page 3: Firebird DBMS

Outline IIFirebird SupportMVCCLocking

6 Fault TolleranceReplicazioneHot Backup

7 OttimizzazionePiani di accessoBenchmark

8 References

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 3 / 49

Page 4: Firebird DBMS

Una breve introduzione a Firebird I

Un DBMS Open SourceDisponibile per Windows, Linux, Apple Macintosh OS/X, FreeBSD ealtre 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 emodificando liberamente il codice).Sono disponibili vari tools (gratuiti e non) prodotti da terzi (es: GUImanager, Replication support).Sono disponibili vari connectors: ODBC, JDBC, Python, .NET eDelphi driver.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 4 / 49

Page 5: Firebird DBMS

Una breve introduzione a Firebird II

Firebird: le originiFirebird nacque dal codice sorgente di InterBase 6.0 Open Editiondella Borland, rilasciato sotto licenza IPL nel Giugno 2000.L’ultima release di Firebird è la 2.5.51, scritta in C++. Il codicesorgente è disponibile su Sourceforge.Firebird web-site link: http://www.firebirdsql.org/.Sourceforge project link: http://sourceforge.net/projects/firebird/.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 5 / 49

Page 6: Firebird DBMS

Architettura Server e Client

ServerSuperServer: multithreading (un thread per ogni connessione). Ogni thread

utilizza lo stesso database cache buffer (il page buffer).Classic Server: ogni connessione è gestita da un processo con il proprio db

cache buffer.

ClientI client si connettono al server via TCP/IP o utilizzando WindowsNetworking. Firebird mette a disposizione “isql” un client a linea dicomando.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 6 / 49

Page 7: Firebird DBMS

Architettura del Database I

FileI database di Firebird sono memorizzati in uno o più file, creatiesplicitamente dall’utente.

CREATE DATABASE ’C:\db\myDB.fdb’PAGE_SIZE 8192LENGTH 1024FILE ’C:\db\myDB.fd1’LENGTH 100FILE ’C:\db\myDB.fd2’

Nell’esempio riportato, è creato un un database formato da un fileprimario e da due file secondari. L’ultimo file è riempito fino ai limiti odel filesystem o di Firebird.Ogni file è vincolato da Firebird ad una dimensione massima di 32 TiB.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 7 / 49

Page 8: Firebird DBMS

Architettura del Database II

PagineI database di Firebird sono composti da sequenze di pagine adimensione fissa. Ogni pagina contiene un header che contiene unidentificatore del tipo di pagina, un checksum e altre informazioninecessarie al DBMS per la corretta interpretazione.

Header Page pagina di header, la prima pagina del database. Nel caso dimulti-file database, l’header dei rimanenti file contienesolamente la lunghezza e il nome del file successivo.

Transaction Inventory Page contiene le informazioni relative ad unatransizione, identificandone lo stato: committed, rolled back,limbo (una transazione a due fasi, che lavora su duedatabase, ha committato solo la prima fase), active.

Data Page pagina data associata ad un’unica tabella. Contiene records eBLOB di piccole dimensioni.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 8 / 49

Page 9: Firebird DBMS

Architettura del Database III

Index Root Page pagina che descrive tutti gli indici di una sola tabella. Alsuo 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 contieneil seguito.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 9 / 49

Page 10: Firebird DBMS

Architettura del Database IV

LimitiA causa della dimensione fissa delle pagine, nascono delle limitazioni su variaspetti:Numero massimo di tabelle: 32KDimensione massima di una tabella: 32 TiBNumero massimo di record per tabella: 16GDimensione massima di un record: 64 KiBIn ogni caso, grazie alla possibilità di avere un multi-file database, ladimensione massima di un DB è arbitrariamente espandibile.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 10 / 49

Page 11: Firebird DBMS

Architettura del Database V

Alter SupportFirebird permette di effettuare l’alter a vari livelli; ad esempio èpossibile alterare il database introducendo nuovi file.

ALTER DATABASE ADD FILE filepath[STARTING [AT [PAGE]] pagenum] [LENGTH [=] num [PAGE[S]]

È possibile alterare una tabella aggiungendo o rimuovendo unacolonna, modificandone il tipo, aggiungendo constraints come chiavepimaria e indici, ma non è possibile imporre il NOT NULL ad uncampo già creato.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 11 / 49

Page 12: Firebird DBMS

Architettura del Database - Data Type I

Data TypesStandard 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

Page 13: Firebird DBMS

Architettura del Database - Data Type IICustom Data TypesÈ possibile definire dei domini, ovvero un tipo di dato che è un tipo di datoprimitivo con l’aggiunta di un valore di default e delle check condition.CREATE DOMAIN domain_nameAS datatype [CHARACTER SET <charset>]DEFAULT {literal | NULL | USER}[NOT NULL][CHECK (<dom_check_condition>)][COLLATE <collation>];

Custom Data Types: Esempio - String Enum TypeCREATE DOMAIN db_enumAS varchar(20) CHECK (value IS NULL OR value IN(’Firebird’,’MySQL’,’MSSQL’));

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 13 / 49

Page 14: Firebird DBMS

Architettura del Database - Indici I

IndiciFirebird utilizza indici rappresentati come B-Tree. Supporta indiciprimary e secondary, indici multi-attributo, ascending o descending.In firebird il costo di accesso ad un indice clustered o unclustered èidentico: durante l’accesso agli indici, è raccolta una bitmap di recordlocaters, riferimenti ai record. Una volta terminata la ricerca, si accedealle Data Page in un certo ordine evitando caricamenti ripetuti dellastessa pagina.Sempre utilizzando la bitmap, Firebird è in grado di utilizzare campipresenti in indici diversi per ottimizzare la ricerca.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 14 / 49

Page 15: Firebird DBMS

Architettura del Database - Indici II

Indici - Esempio Combinazione di IndiciData una tabella FILM(ID, Titolo, Regista, Anno, Distribuzione) e treindici su Regista, Anno e Distribuzione e la querySELECT titolo FROM FILMWHERE Regista=’Neill Blomkamp’ AND Anno=2009 ANDDistribuzione=’Sony Pictures’L’ottimizzatore potrebbe avvalersi dei tre indici separati per effettuarela ricerca.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 15 / 49

Page 16: Firebird DBMS

Architettura del Database - Indici III

Indici - Side-Effect del versioningIn particolari query come count(*), o di lettura del dato indicizzato, unottimizzatore potrebbe decidere di utilizzare le informazioni ricavatedalla struttura dati dell’indice piuttosto che accedere alle pagine dati.Come spiegato più avanti, Firebird gestisce transazioni concorrenti“versionando” i dati. Una transazione può utilizzare dati che sonocaratterizzati da una data versione, ma questa informazione non èreplicata nelle pagine del B-Tree.Di conseguenza Firebird deve accedere in ogni caso alle pagine datiper ottenere la versione del dato.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 16 / 49

Page 17: Firebird DBMS

Architettura del Database - Transazioni

TransazioniACIDNo-autocommit modeOgni query inizia implicitamente una transazione, da terminare con unCOMMIT o un ROLLBACKPer iniziare una transazione si utilizza lo statement STARTTRANSACTIONÈ possibile creare dei savepoints con lo statement SAVEPOINT eeffettuare dei RELEASE o dei ROLLBACK sul savepoint.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 17 / 49

Page 18: Firebird DBMS

Firebird SQL

Dialetti SQLFirebird è conforme allo standard SQL-92, inoltre implementa alcunefeature come stored procedure, triggers, role ed eccezioni.Firebird utilizza tre dialetti di SQL:Extended-SQL e Dynamic-SQL Linguaggi utilizzati in tutte le query

che non siano stored procedure.Procedural-SQL Linguaggio utilizzato nelle stored procedure

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 18 / 49

Page 19: Firebird DBMS

Firebird SQL - Stored Procedures I

Stored ProcedureUna stored procedure è un modulo richiamabile da client, altre storedprocedure o trigger.Le stored procedure eseguono codice PSQL e la loro creazione avvienetramite ESQL e DSQL, quindi non è possibile per una storedprocedure creare una stored procedure.All’interno del codice PSQL è possibile utilizzare lo statementSUSPEND che ritorna una row composta dai valori di ritorno alchiamante.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 19 / 49

Page 20: Firebird DBMS

Firebird SQL - Stored Procedures II

Stored Procedure - EsempioSET TERM #;CREATE PROCEDURE mul (N INTEGER)RETURNS (Res INTEGER)AS

DECLARE C int;

DECLARE Tmp INTEGER;

BEGINRes = 0;C = 1;WHILE (C <= N) DObegin

SELECT n.Numb FROM Numbers n WHERE n.ID = :C INTO :Tmp;Res = Tmp + Res;C = C + 1;

end;

SUSPEND;

END#

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 20 / 49

Page 21: Firebird DBMS

Firebird SQL - Stored Procedures III

Esecuzione di una Stored ProcedurePer eseguire una stored procedure si utilizza lo StatementEXECUTE PROCEDURE procname [in_item {, in_item }][RETURNING_VALUES out_item , out_item]Oppure, se si è incluso lo statement suspend, si può utilizzare:SELECT * FROM procnameL’utilizzo della SELECT comporta la possibilità di creare viste da unastored procedure.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 21 / 49

Page 22: Firebird DBMS

Firebird SQL - Stored Procedures IV

Limitazioni di PSQLEssenzialmente PSQL non permette di effettuare le seguentioperazioni:

1 CREATE / ALTER / DROP (database, tabelle, eccezioni, storedprocedure, . . . ).

2 Transaction Control

A differenza di SQL Server, non è disponibile una funzione di print sustandard output.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 22 / 49

Page 23: Firebird DBMS

Firebird SQL - Altri Statements PSQL I

TriggerCREATE TRIGGER Log_Price_Upd FOR ArticlesAFTER INSERT OR UPDATEAS BEGIN

IF INSERTING THENINSERT INTO PRICE_LOGS (ART_ID, ACTION, DATETIME, NEW_PRICE) VALUES(NEW.ART_ID, ’I’, current_timestamp, NEW.PRICE);

ELSEINSERT INTO PRICE_LOGS (ART_ID, ACTION, DATETIME, NEW_PRICE) VALUES(NEW.ART_ID, ’U’, current_timestamp, NEW.PRICE);

END;

CREATE TRIGGER tr_connect ON CONNECTAS BEGIN

INSERT INTO dblog (who, when, what) VALUES (current_user, current_timestamp, ’connected’);

END

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 23 / 49

Page 24: Firebird DBMS

Firebird SQL - Altri Statements PSQL II

Cursori//* PSQL block *//DECLARE cur CURSOR FOR SELECT p.num1, p.num2 FROM Prova p FOR UPDATEBEGIN

OPEN cur;

WHILE (1 = 1) DO

BEGINFETCH cur INTO n1, n2;IF (row_count = 0) THEN LEAVE;IF(n1 > n2) THEN UPDATE Prova SET n2 = n1 WHERE CURRENT OF cur;SUSPEND;

END;

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 24 / 49

Page 25: Firebird DBMS

Firebird SQL - Altri Statements PSQL III

Eccezioni//*ESQL code*//CREATE EXCEPTION My_Exception ’My Exception message’

//*PSQL code*//WHEN EXCEPTION My_Exception DO

BEGIN//*do things*//

END

WHEN ANY DO

BEGIN//*do things*//EXCEPTION; //* retrhow catched exception *//

END

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 25 / 49

Page 26: Firebird DBMS

Firebird Security I

Sicurezza in FirebirdDisponibile solo un supporto basilare di gestione utenti.Desiderata: hide del codice di Stored Procedure e Triggers da parte dialtri utenti.

I Soluzione: non esiste una soluzione efficace.Desiderata: connessione sicura al server database remoto.

I Soluzione: costruzione a mano di un tunnel ssh.Desiderata: cifratura del contenuto del database.

I Soluzione: cifratura del filesystem con tool esterni o cifratura a manodei contenuti delle tabelle.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 26 / 49

Page 27: Firebird DBMS

Firebird Security II

Livelli di protezioneDue livelli di protezione:

1 Validazione utente in fase di CONNECT al database.2 Controlli a livello di database utilizzando utenti e privilegi definiti in

SQL.

Gestione degli utentiUtente root: SYSDBA.Creazione di un utente tramite utility gsec.Possibilità di utilizzare utenti di sistema, con pattern hostname[username]. Tuttavia non è possibile utilizzare Server e Client congestione utenti incompatibili (Unix e Windows).

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 27 / 49

Page 28: Firebird DBMS

Firebird Security III

Privilegi di utentiOperatori GRANT e REVOKE su:

I INSERT, UPDATE, DELETE, SELECT (viste e tabelle).I EXECUTE ON PROCEDURE procname.I REFERENCE (permesso del server di eseguire un lookup sulle righe in

una relazione con primary/foreign key)

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 28 / 49

Page 29: Firebird DBMS

Firebird Security IV

SQL RolesUtilizzo di SQL Roles, template per utenti, insiemi di privilegi.CREATE ROLE rolenameÈ possibile fare GRANT e REVOKE su un roles.Dopo aver creato un utente gli si può fare il GRANT di un ruolo:GRANT rolename ON username;Se un utente ha più ruoli, può connettersi ad un database specificandoun ruolo: CONNECT database USER user PASSWORD passwordROLE role;Ruolo predefinito di amministratore: ADMIN.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 29 / 49

Page 30: Firebird DBMS

Concorrenza - Firebird Support I

Firebird SupportConsistency

ANSI/ISO SERIALIZABLE equivalenteConcurrencyRead Committed

rilascia r-lock appena possibilenon-repetable read possibile

Wait/No waitin caso di conflitto di scritturaattenti altra transazione o no

(fail immediately)Snapshot/No Snapshot

ANSI/ISO REPEATABLE READS equivalente

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 30 / 49

Page 31: Firebird DBMS

Concorrenza - Firebird Support II

Firebird default. . .

Concurrency, Wait, SnapshotDirty writes: No

solo l’ultima versione può essere modificataDirty reads: No

le transazioni non vedono altre versioni del dbRepeatable read: Yes

cambiamenti effettuati da transazioni concorrentisono ignorati

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 31 / 49

Page 32: Firebird DBMS

Concorrenza - MVCC IMulti Version Concurrency Control

Concetti chiaveRecord version, ogni transazione vede una certa versione.Transaction signature (aka Transaction-id).Write solo su ultima versione

Proprietà+ Read mai bloccate.- Generazione di più versioni.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 32 / 49

Page 33: Firebird DBMS

Concorrenza - MVCC IIMulti Version Concurrency Control

Quando una transazione accede ad un record. . .Il sistema controlla se la firma appartiene ad una transazioneCOMMITTED o ACTIVE.

In caso di COMMITTED T.ritorna la versione più recentedel record.

In caso di ACTIVE T. ritorna (egenera) una versione precedente.

Ok, ma. . . come??Ricordate che il Transaction Manager mantiene un log delle transazioni sonsegnate tutte le operazioni che sono state fatte?Attraverso questo log il CM (Cuncurrency Manager) è capace di ricostruirele versioni precedenti dei record.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 33 / 49

Page 34: Firebird DBMS

Concorrenza - MVCC IIIMulti Version Concurrency Control

Table: Example scenario

Time Transaction T1 Transaction T21 begin x is signed with 1202 begin3 R(x), W(x) T1 sign x with 1254 R(x) T2 reads previous version (120)5 Commit6 W(x) T2 has not the most recent version! FAIL7 Rollback

NOTASe si scambia 5 con 6, il comportamento di T2 sara quello di attendere T1, perchè in caso difallimento (e rollback) di T1 il suo update sarà consistente.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 34 / 49

Page 35: Firebird DBMS

Concorrenza - Locking

Locking Support2 Phase LockingR/W lockingLock Promotion and Demotion

I Prima richiedi lock su record, in caso di grande numero di recordscambia i lock ottenuti con un lock su tabella.

I Prima richiedi lock su tabella, in caso di accesso concorrente alla stessatabella richiedi lock su record.

GranularityDataBase lock, in caso di restore da backup (usa locking fornitodall’OS)Table lockRecord lockPredicate lock, niente phandom records (costoso)

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 35 / 49

Page 36: Firebird DBMS

Fault Tollerance - Replicazione I

Tipi di replicazione supportatiSynchronous aggiornamenti propagati a real-time

- performance (computazione online).+ consistenza.

Asynchronous aggiornamenti propagati a tempo arbitrario+ performance-saving.- meno consistenza tra le repliche.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 36 / 49

Page 37: Firebird DBMS

Fault Tollerance - Replicazione II

Realizzazione di replicazione asincronaRelativamente semplice, di base solo pochi elementi sono necessari:

CHANGELOG table,I eg.(<U|A|D>, <KEYFIELDNAME> ,

<SOURCEKEY>,<SOURCETABLE>,<USERNAME> , <Olds> , <News> )

Triggers su tabella sorgente, per riempire il CHANGELOGServizio di replicazione, che legge CHANGELOG periodicamente edeffettua i cambiamenti sulla replica.

Altre soluzioniSoluzioni e configurazioni più sofisticate possono essere realizzate usandosuite software ad-hoc come IBRreplicator, che gestisce più sorgenti e piùdestinazioni in entrambe le maniere (SYNC, ASYNC).

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 37 / 49

Page 38: Firebird DBMS

Fault Tollerance - Hot Backup I

nbackup, un tool per hot-backupFeatures:

Backup Incrementale ( -B <n>, with n>0 )Disabilitazione trigger ( -T )Locking del database file (backup manuale) ( -L,-N )

Examplenbackup -B 0 db.fdb db1-Oct-2011.nbk /*full backup*/nbackup -B 1 db.fdb db2-Oct-2011.nbk /*incremental*//*restoring incremental*/nbackup -R <db> [<backup0> [<backup1> [...] ] ]

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 38 / 49

Page 39: Firebird DBMS

Fault Tollerance - Hot Backup II

Altri tool: gbak, gstat e gfixgbak stesse feature di nbackup, ma con controllo più fine (splitting,remote backups,create/overwrite. . . )gstat toole per report statistici (analizza indici, pagine, cache. . . )gfix admin tool (start e stop del db, risolve transazioni in ’limbo’. . . )

NotaPer completare un restore con successo (specialmente in overwrite mode) èuna buona pratica spegnere il database prima di cominciare.Eg./*Shut down database, wait 60 seconds until all connections are closed*/gfix -user SYSDBA -password "masterkey" dbserver:/db/mydb.fdb -shut-attach 60

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 39 / 49

Page 40: Firebird DBMS

Ottimizzazione I

Query OptimizerOttimizzatore cost-basedDefinizione di statistiche (eg. SET STATISTICS INDEX index-name)

I Tiene traccia del fattore di carico delle pagineI Lunghezza media dei record e cardinalitàI Profondità B+treeI Fattore di clustering (sparsità dati)I numero di NULLs

Il ricalcolo delle statistiche non è pienamente automatizzato. . .E’triggerato per default quando le statistiche sono a 0.Il DBA dovrebbe scriversi qualche procedura/trigger per farlo.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 40 / 49

Page 41: Firebird DBMS

Ottimizzazione II

Table scan algorithmsCardinalità, selettività, contatori di NULL sono considerati

SEQUENTIAL SCANINDEX SCAN (vedi prima parte:))

You should know them :D

Join algorithmsFirebird considera cardinalità e selettività per decidere quale algoritmousare

NESTED LOOP JOINSORT MERGE JOINHASH JOIN not yet implemented!

You should know them too :D

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 41 / 49

Page 42: Firebird DBMS

Ottimizzazione III

Group by algorithmsFirebird d considera cardinalità e selettività per decidere

SORT AggregationLegge un record in input che è stato ordinato per il campo diraggruppamentoAppena letto il record, viene comparato con il precedenteSe i campi di raggruppamento matchano, allora aggiorna ilgruppo.Altrimenti il gruppo è finito.

HASH AggregationCrea una hash table (in-memory) dei campi di raggruppamento.Come leggi un record, aggiorna il corrispondente gruppo.Computa tutti i record prima di ritornare i gruppi.Computazione dei gruppi avviene in parallelo

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 42 / 49

Page 43: Firebird DBMS

Optimization - Piani di accesso I

Visualizzare un piano d’accessoSET PLANONLY ON;SELECT a.emp, b.currency FROM a INNER JOIN b ON a.field = b.field;PLAN JOIN (A NATURAL,B INDEX (RDBPRIMARY1))/*This is the execution plan,wich means that firebird optimizator will accessto A naturally (sequentially) and to B through his primary key’s index */

Specificare un piano di accesso a piacereSELECT . . .. . . ORDER BY column1/* Here you can specify wich kind of join to use and how access torelations*/PLAN [JOIN] | [SORT] [MERGE] ] (<table1> NATURAL,<table2> INDEX (<indexname>));

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 43 / 49

Page 44: Firebird DBMS

Optimization - Benchmark I

TPC-BMisura il throughput in termini di numero di transazioni gesitenell’intervallo di tempo tramite l’emulazione di un tipico screnario bancario(conti, filiali, cassieri e storico).

EMP7Benchmark non standard, si basa su una query CPU intensive che coinvolgeun unica relazione (tabella) contenente solo 14 record. Join multipli sullastessa relazione garantiscono un fardello computazionale notevole.

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 44 / 49

Page 45: Firebird DBMS

Optimization - Benchmark II

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 45 / 49

Page 46: Firebird DBMS

Optimization - Benchmark III

NotaPiano d’accesso simile per entrambi i dbms. . .

Nested Loops JoinSequential access

10 records, 100 iterations in EMP7scale 10, 1000 iterations in TPCB

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 46 / 49

Page 47: Firebird DBMS

References I

Function and Design Documentationhttp://www.ibphoenix.com/resources/documents/design

Language Referencehttp://www.firebirdsql.org/file/documentation/reference_manuals/reference_material/html/langrefupd25.html

Users and Securityhttp://www.ibphoenix.com/resources/documents/search/doc_59

Async Replicationwww.ibphoenix.com/resources/documents/how_to/doc_316

Replicationwww.ibphoenix.com/products/software/ibreplicator

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 47 / 49

Page 48: Firebird DBMS

References II

MVCChttp://www.ibphoenix.com/resources/documents/articles/doc_27

Lockinghttp://www.ibphoenix.com/resources/documents/search/doc_48

Optimization Ihttp://ibexpert.net/ibe/index.php?n=Doc.Optimization

Optimization IIhttp://www.slideshare.net/ibsurgeon/firebird-costbased-optimization-and-statistics-by-dmitry-yemanov-in-english

Algorithmshttp://dcx.sybase.com/1001/en/dbugen10/ug-grouping-optimizer-queryopt.html

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 48 / 49

Page 49: Firebird DBMS

Questions

?

Daniele Bellavista, Luca Mella (Unibo) Firebird DBMS December 5, 2011 49 / 49