Sides (transacções)

Propaganda
TRANSACÇÕES
HSQL - Hypersonic SQL
TECNOLOGIA DE BASES DE DADOS
M6714 - Fernando Forte
2005
INTRODUÇÃO
• Modos de inicializar a HSQLDB
– Server Modes
* Hsqldb Server
» java -cp ../lib/hsqldb.jar org.hsqldb.Server -database.0 mydatabase dbname.0 xdb
* Hsqldb Webserver (só ligação JDBC, protocolo HTTP)
» java -cp ../lib/hsqldb.jar org.hsqldb.WebServer -database.0
mydatabase -dbname.0 xdb
* Hsqldb Servlet (instalado no AppServer Tomcat liga à BD)
– In-Process (Stand Alone) Mode
* usada por uma aplicação
– Memory-Only Databases
* nenhuma informação é escrita em disco.
• Tipos de Tabelas
– TEMP (não é escrita no disco), MEMORY, CACHED e TEXT
M6714 - Fernando Forte
TBD 2005
2
SISTEMA DE FICHEIROS (1)
• Ficheiros da Base de Dados (2 a 5 +1)
– nomeBD.properties
* modified= yes, no
– nomeBD.script
* snapshot último checkpoint (comandos SQL antes de
committed), recria memory tables no arranque da BD.
– nomeBD.data
* para tabelas CACHED (pode ficar corrompido se os dados não
foram escritos totalmente da memória - usar .backup)
– nomeBD.backup
* ficheiro comprimido do .data que corresponde ao .script
– nomeBD.log
* comandos SQL que modificaram a BD depois do último
checkpoint.
* se SHUTDOWN ok não há .log
– nomeBD.lck (LockFile.java - para saber se a BD está activa)
M6714 - Fernando Forte
TBD 2005
3
SISTEMA DE FICHEIROS (2)
Log
.properties:
.script:
modified=no
version=1.3
readonly=false
CREATE TABLE ...
INSERT INTO ...
INSERT INTO ...
INSERT INTO ...
.backup:
.data:
Cache
Data
(array)
M6714 - Fernando Forte
[contains the binary
records and empty
blocks]
Row
TBD 2005
[contains a
compressed backup of
old .data file]
4
TRANSACÇÕES
• Efectuadas assegurando integridade da BD
– propriedades ACID (Atomicity, Consistency, Isolation,
Durability)
– usa um SCN (System Change Number) para identificar e
ordenar as Ti (um por cada linha)
• Nível de consistência da BD
– read uncommitted (permite dirty reads - registos uncommitted
podem ser lidos)
* não é levantada nenhuma excepção se Ti e Tj commit a menos
que se use:
» SET PROPERTY "sql.tx_no_multi_rewrite" TRUE
M6714 - Fernando Forte
TBD 2005
5
GESTÃO DE TRANSACÇÕES
• O canal de ligação rastreia as Tis uncommitted.
– Todos os objectos de cada Ti têm uma referência para os
objectos dos dados antigos.
• Os rollbacks são executados por ordem inversa de
entrada.
– não é possível fazer roolback a Ti se Tj fizer ALTER TABLE ou
INSERT COLUMN ou DROP COLUMN da mesma tabela pois
estes comandos fazem logo commit
M6714 - Fernando Forte
TBD 2005
6
RECUPERAÇÃO
• Baseada em log
* o .log contêm as modificações feitas à BD quando da execução
da transacção (commit).
– Checkpoints
* Tis executadas em série.
* depois de um checkpoint podem existir Tis uncommitted,
committed ou rollback.
* se não houver um SHUTDOWN adequado estas Tis são
parcialmente committed (no estado do último checkpoint).
* ao reiniciar é lido o ficheiro .log para recuperação das Tis
committed depois do último checkpoint.
M6714 - Fernando Forte
TBD 2005
7
CÓDIGO JAVA
* Database.java
¤ (inicializa a BD e lê o sistema de ficheiros)
* ScriptReaderBase.java
¤ (prog base para os leitores de scripts, verifica DDLs)
* ScriptRunner.java
¤ (lê .log e verifica se rollbacks)
* Log.java
¤ (gere o sistema de ficheiros da BD quando SHUTDOWN, volta ao
estado do último checkpoint, apaga ficheiros .old e .new de Tis não
terminadas)
* Logger.java
¤ (assegura ACID - verifica o estado da BD, regista e rescreve as
entradas de .log DDL e DML apenas necessários)
* PersistentStore.java
¤ (gere os objectos das tabelas cached)
* Transaction.java , TransactionManager.java
¤ (gerem cada registo - commit, rollback das Tis)
M6714 - Fernando Forte
TBD 2005
8
FUTURAMENTE
• Melhorar mecanismos de log e estatísticas.
• Possibilidade de criar novos níveis de isolamento
nas transacções.
• Capacidade de suportar concorrência na execução
de comandos SQL.
M6714 - Fernando Forte
TBD 2005
9
REFERÊNCIAS BIBLIOGRÁFICAS
• Silberschatz, Abraham; Korth, Henry; Sudarshan “Database System Concepts 5th Edition”. United
States of America: McGraw Hill Companies Inc.,
2006. ISBN 007-124476-X. p609-719.
• http://hsqldb.org
• Simpson, Blaine; Toussi, Fred - “Hsqldb User
Guide”. Julho 2005. 145p.
M6714 - Fernando Forte
TBD 2005
10
Download