BD - Aula 5 - Transação

Embed Size (px)

Citation preview

  • 7/26/2019 BD - Aula 5 - Transao

    1/20

    12/09/201

    Transao

    Rodrigo Spnola

    Agenda

    Definies iniciais

    Controle de Concorrncia

    Estados de uma Transao

    Propriedades de uma Transao

    Log de Transaes

    Controle de Concorrncia

    2

    DEFINIES INICIAIS

    3

  • 7/26/2019 BD - Aula 5 - Transao

    2/20

    12/09/201

    TransaesAlgumas

    Definies

    Mecanismo para se descrever unidade lgica de

    processamento em banco de dados

    SGBDs so em geral multiusurios

    Uma transao totalmente executada ou nada dela

    (nenhum comando) realizado

    Baseado no conceito de Redundnciagarantir que qualquer

    pedao da informao possa ser reconstitudo a partir de

    outras informaes armazenadas

    4

    TransaesAlgumas

    Definies

    Para garantir o processamento de vrias

    transaes necessrio o controle de

    concorrncia

    Necessrio tambm mecanismo de

    recuperao para problemas de falhas de

    transao.

    5

    TransaesAlgumas

    Definies

    Unidade lgica de processamento em um SGBD

    Composta de uma ou mais operaes

    seus limites podem ser determinados em SQL

    De forma abstrata e simplificada, uma transao pode ser

    encarada como um conjunto de operaes de leitura e escrita

    de dados

    read(x)

    x = xi

    read(y)

    y = y * x

    write(x)

    write(y)

    Tx l o dado X do BD e oarmazena na varivel X

    grava no dado Y do BD o

    valor da varivel Y6

  • 7/26/2019 BD - Aula 5 - Transao

    3/20

    12/09/201

    TransaesAlgumas

    Definies

    Uma transao possui uma ou mais operaes ao

    banco de dados, incluindo operaes de incluso,

    excluso, modificao e recuperao

    Para especificar os limites da transao podemos

    usar begin transaction e end transaction

    Um programa pode conter vrias transaes

    O tamanho do item de dado envolvido na transao

    denomina-se granularidade, que pode ser um

    registro ou um bloco de disco.

    7

    Transaes - Gerenciamento

    Read(x)

    Encontra bloco do disco em que x est armazenado.

    Copia bloco para buffer da memria principal.

    Copia o item x do buffer para a varivel do programa.

    Write (x)

    Encontra bloco do disco em que x est armazenado.

    Copia o bloco para buffer da memria principal.

    Copia x da varivel do programa para o buffer.

    Armazena o bloco atualizado do buffer para o disco (imediatamente ou

    depois)

    A BPrograma 1

    Memria

    A

    BPrograma 2

    Memria

    A

    B

    8

    Transaes - Gerenciamento

    Controle de concorrncia

    Coordena as aes de processos que operam em

    paralelo

    acessam dados compartilhados

    potencialmente interferem uns com os outros

    Recuperao

    Assegura que falhas de software e hardware no

    corrompem dados persistentes

    9

  • 7/26/2019 BD - Aula 5 - Transao

    4/20

    12/09/201

    CONTROLE DE CONCORRNCIA

    10

    Transaes - Controle de

    concorrncia

    Transaes ocorrem de forma concorrente

    Se duas transaes acessam o mesmo item do banco

    e suas operaes so entrelaadas necessrio o

    controle da concorrncia.

    Por que o controle de concorrncia necessrio?

    Problema de perda de atualizao

    Problema da dependncia de atualizao no confirmada

    Problema de funo de agregao incorreta (sumrio

    incorreto)

    11

    Transaes - Controle de

    concorrncia

    Read (X)X = X - N

    Write (X)Read (Y)

    Y = Y + N

    Write (Y)

    Read (X)

    X = X + M

    Write (X)

    T1 T2

    tempo

    Problema da perda de atualizao

    Item Xtem um valor incorretopois sua atualizao atravs de T1

    foi pedida

    12

  • 7/26/2019 BD - Aula 5 - Transao

    5/20

    12/09/201

    Transaes - Controle de

    concorrncia

    Dependncia de uma atualizao no confirmada(Leitura de sujeiradirty read)

    Read (X)X = X - NWrite (X)

    Read (X)X = X + MWrite (X)

    T1 T2

    Read (Y)

    tempo

    FALHAA transao T1 falha e deve retornar

    o valor de Xpara seu valor originalmas T2 j leu o valor incorreto

    13

    Transaes - Controle de

    concorrncia

    tempo

    Read (X)

    X = X - N

    Write (X)

    Sum = 0

    Read (A)

    Sum = Sum + A

    T1 T2

    Read (Y)

    Y = Y + N

    Write (Y)

    Read (X)

    Sum = Sum + X

    Read (Y)

    Sum = Sum + Y

    Problema do sumrio incorreto

    T2l Xdepois que ele subtradoe l Yantes que seja adicionado.

    O resultado ser uma soma

    incorreta

    14

    Transaes - Controle de

    concorrncia

    Begin Transaction:inicia a transao de formaexplcita

    Commit Transaction:encerra a transao comsucesso e torna a atualizao permanente

    Rollback Transaction: Trmino de transaocom erro, retorna o banco para posio

    anterior transao

    15

  • 7/26/2019 BD - Aula 5 - Transao

    6/20

    12/09/201

    Transaes - Recuperao

    Se todas as operaes na transao so completadas

    com sucessotem efeito permanente no banco de

    dados

    Se uma operao falharnada ter efeito no banco

    Tipos de falhas :

    Erros de hardware, software ou rede;

    Erros de sistemas ou transao;

    Condies de exceo detectados na transao.

    16

    ESTADOS DE UMA TRANSAO

    17

    Estados de uma Transao

    Uma transao sempre monitorada pelo SGBD

    quanto ao seu estado

    que operaes j fez? concluiu suas operaes? deve

    abortar?

    Estados de uma transao

    Ativa, Em processo de efetivao, Efetivada, Em processo

    de aborto, Concluda

    Respeita um Grafo de Transio de Estados

    18

  • 7/26/2019 BD - Aula 5 - Transao

    7/20

    12/09/201

    Transio de Estados de uma

    Transao

    Ativa

    Em processo de efetivao

    Efetivada

    Em processo de aborto

    Concluda

    iniciartransao

    finalizar

    transao

    transao deve

    ser desfeita

    concluso

    da transao

    com sucesso

    encerramento

    com sucesso

    concluso

    da transao

    sem sucesso

    readse writes

    encerramento

    sem sucesso

    19

    Transio de Estados de uma

    Transao

    Ativa

    Em processo de efetivao

    Efetivada

    Em processo de aborto

    Concluda

    iniciar

    transaofinalizar

    transao

    transao deve

    ser desfeita

    concluso

    da transao

    com sucesso

    encerramento

    com sucesso

    concluso

    da transao

    sem sucesso

    readse writes

    encerramento

    sem sucesso

    Estado inicial de toda

    transao selecionada

    para execuo.

    Enquanto ativa, uma transao executa

    uma ou mais operaes read e write

    20

    Transio de Estados de uma

    Transao

    Ativa

    Em processo de efetivao

    Efetivada

    Em processo de aborto

    Concluda

    iniciar

    transaofinalizar

    transao

    transao deve

    ser desfeita

    concluso

    da transao

    com sucesso

    encerramento

    com sucesso

    concluso

    da transao

    sem sucesso

    readse writes

    encerramento

    sem sucesso

    Entra nesse estado aps

    executar sua ltima operao

    (solicitao de COMMIT).

    Neste momento, o SGBD precisa garantir

    que as suas atualizaes sejam efetivadas

    com sucesso (no sofra falhas).

    Aplicao de tcnicas de recovery.

    21

  • 7/26/2019 BD - Aula 5 - Transao

    8/20

    12/09/201

    Transio de Estados de uma

    Transao

    Ativa

    Em processo de efetivao

    Efetivada

    Em processo de aborto

    Concluda

    iniciartransao

    finalizar

    transao

    transao deve

    ser desfeita

    concluso

    da transao

    com sucesso

    encerramento

    com sucesso

    concluso

    da transao

    sem sucesso

    readse writes

    encerramento

    sem sucesso

    Entra nesse estado aps o SGBD confirmar

    que todas as modificaes da transao

    esto garantidas no BD (COMMIT OK).

    Exemplos: gravao em Log, descarga de

    todos os buffers em disco .

    22

    Transio de Estados de uma

    Transao

    Ativa

    Em processo de efetivao

    Efetivada

    Em processo de aborto

    Concluda

    iniciar

    transaofinalizar

    transao

    transao deve

    ser desfeita

    concluso

    da transao

    com sucesso

    encerramento

    com sucesso

    concluso

    da transao

    sem sucesso

    readse writes

    encerramento

    sem sucesso

    Entra nesse estado se no puder

    prosseguir a sua execuo.

    Pode passar para esse estado enquanto

    ativa ou em processo de efetivao:

    exemplo (I): violao de RIexemplo (II): pane no S.O.

    Suas aes j realizadas devem ser

    desfeitas (ROLLBACK).23

    Transio de Estados de uma

    Transao

    Ativa

    Em processo de efetivao

    Efetivada

    Em processo de aborto

    Concluda

    iniciar

    transaofinalizar

    transao

    transao deve

    ser desfeita

    concluso

    da transao

    com sucesso

    encerramento

    com sucesso

    concluso

    da transao

    sem sucesso

    readse writes

    encerramento

    sem sucesso

    Estado final de uma transao

    Indica uma transao que deixa osistema. As informaes da transao

    mantidas em catlogo podem ser

    excludas: operaes feitas, dados

    manipulados, buffers utilizados, ...

    Se a transao no concluiu com

    sucesso, ela pode ser reiniciada

    automaticamente

    24

  • 7/26/2019 BD - Aula 5 - Transao

    9/20

    12/09/201

    PROPRIEDADES DE UMATRANSAO

    25

    Propriedades de uma

    Transao

    Requisitos que sempre devem ser atendidos

    por uma transao

    Chamadas de propriedades ACID

    Atomicidade

    Consistncia

    Isolamento

    Durabilidade ou Persistncia

    26

    Atomicidade

    Princpio do Tudo ou Nada

    ou todas as operaes da transao so efetivadas

    com sucesso no BD ou nenhuma delas se efetiva

    preservar a integridade do BD

    Responsabilidade do subsistema de

    recuperao contra falhas (subsistema de

    recovery) do SGBD

    desfazer as aes de transaes parcialmente

    executadas

    27

  • 7/26/2019 BD - Aula 5 - Transao

    10/20

    12/09/201

    1

    Consistncia

    Uma transao sempreconduz o BD de umestado consistente para outro estado

    tambm consistente

    Responsabilidade conjunta do

    DBA

    definir todas as RIs para garantir estados e transies

    de estado vlidos para os dados

    exemplos: salrio > 0; salrio novo > salrio antigo

    subsistema de recovery

    desfazer as aes da transao que violou a integridade

    28

    Isolamento

    No contexto de um conjunto de transaes

    concorrentes, a execuo de uma transao Tx devefuncionar como se Tx executasse de forma isolada Tx no deve sofrer interferncias de outras transaes

    executando concorrentemente

    Responsabilidade do subsistema de controle de

    concorrncia (scheduler) do SGBD

    garantir escalonamentos sem interferncias

    29

    Isolamento

    T1 T2

    read(A)

    A = A50

    write(A)

    read(A)

    A = A+A*0.1

    write(A)

    read(B)

    B = B + 50

    write(B)

    read(B)

    B = B - A

    write(B)

    T1 T2

    read(A)

    A = A50

    read(A)

    A = A+A*0.1

    write(A)

    read(B)

    write(A)

    read(B)

    B = B + 50

    write(B)

    B = B - A

    write(B)

    escalonamento vlido escalonamento invlido

    T1interfere

    em T2

    T2interfere

    em T130

  • 7/26/2019 BD - Aula 5 - Transao

    11/20

    12/09/201

    Durabilidade ou Persistncia

    Deve-se garantir que as modificaesrealizadas por uma transao que concluiu

    com sucesso persistam no BD nenhuma falha posterior ocorrida no BD deve

    perder essas modificaes

    Responsabilidade do subsistema de recovery

    refazer transaes que executaram com sucesso

    em caso de falha no BD

    31

    Transaes - Propriedades

    (ACID)

    Atomicidade

    Consistncia

    Isolamento

    Durabilidade

    Subsistema

    de

    Recuperao

    Controle de

    Concorrncia

    Restries de

    Integridade/

    Programador

    32

    LOG DE TRANSAES

    33

  • 7/26/2019 BD - Aula 5 - Transao

    12/20

    12/09/201

    1

    Transaes - Log de

    transaes

    Para ter capacidade de se recuperar de falhas

    que afetam a transao o sistema mantm um

    log

    No log so registradas todas as operaes das

    transaes que afetam valores nos bancos de

    dados (alteraes)

    O log mantido em disco

    34

    Transaes - Registros de Log

    Seja T a idenficao de uma transao:

    [Start_transaction, T]:marca o incio da transao T

    [Write_item, T, X, old_value, new_value]:indica que atransao T alterou o valor de X no banco de dados do

    valor antigo para o novo

    [read_item, T, X]:indica que a transao T leu o valor doitem T no banco de dados

    [commit, T]: indica que a transao T foi completada comsucesso e confirma a gravao no banco de dados

    [abort, T]:indica que a transaa T foi abortada

    35

    Transaes - Log de

    transaes

    Periodicamente o log copiado para fita

    Como o log contm todos os registros das operaes

    que alteraram qualquer item do banco, possvel

    desfazer (undo) o efeito destas operaes ou refazer

    as operaes at um certo ponto

    Base para o processo de recuperaoRecovery

    36

  • 7/26/2019 BD - Aula 5 - Transao

    13/20

    12/09/201

    1

    Transaes - Modificaes no

    BD

    Modificaes Adiadas:O BD no atualizadoat que a transao alcance o commit.

    Modificaes Imediata:O BD modificadoantes de alcanar o commit. As informaes

    do log so gravadas no meio estvel a fim de

    possibilitar a recuperao.

    37

    Transaes - Check point

    Ponto de checagem

    Gravado periodicamente no log no ponto em que o SGBD

    grava no banco de dados todos os blocos que tenham sido

    modificados

    Todas as transaes commited no log no precisam mais

    ser refeitas no banco

    O gerenciador de recuperaes deve decidir em que

    intervalo realizar o checkpoint

    O intervalo pode ser mantido em termo de tempo ou em

    termo de nmero de transaes confirmadas desde o

    ltimo checkpoint

    38

    Transaes - Check point

    Suspende todas as transaes temporariamente.

    Grava os buffers modificados do BD da memria para o disco.

    Grava um registro de checkpoint no log

    Retorna as transaes em execuo

    T1

    T2

    T3

    T4

    T5

    Ponto de checagem

    (tempo, tc)

    Falha no sistem

    (tempo, tc)

    Tempo

    tc tf

    39

  • 7/26/2019 BD - Aula 5 - Transao

    14/20

    12/09/201

    1

    CONTROLE DE CONCORRNCIA

    40

    Controle de Concorrncia

    SGBD

    sistema multiusurio em geral

    diversas transaes executando simultaneamente

    Garantia de isolamento de Transaes

    1a soluo: uma transao executa por vez

    escalonamento serial de t ransaes

    soluo bastanteineficiente!

    vrias transaes podem esperar muito tempo para serem

    executadas

    CPU pode ficar muito tempo ociosa enquanto uma transao faz I/O, por exemplo, outras

    transaes poderiam ser executadas

    41

    Controle de Concorrncia

    Soluo mais eficiente

    execuo concorrente de transaes de modo a preservar o isolamento escalonamento (schedule) no-serial e ntegro

    responsabilidade do subsistema de controle de concorrncia ou scheduler

    T1 T2

    read(X)

    X = X20

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    read(X)

    X = X + 10

    write(X)

    T1

    T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    execuoserial

    execuono-serial

    ou concorrente

    42

  • 7/26/2019 BD - Aula 5 - Transao

    15/20

    12/09/201

    1

    Scheduler

    Responsvel pela definio de escalonamentos no-seriais de

    transaes

    Um escalonamento E define uma ordem de execuo dasoperaes de vrias transaes, sendo que a ordem dasoperaes de uma transao Tx em E aparece na mesmaordem na qual elas ocorrem isoladamente em Tx

    Problemas de um escalonamento no-serial mal definido

    (invlido)

    atualizao perdida (lost-update)

    leitura suja (dirty-read)

    43

    Atualizao Perdida

    Uma transao Ty grava em um dado atualizado por

    uma transao Tx

    T1 T2

    read(X)

    X = X20

    read(Z)

    X = Z + 10

    write(X)

    read(Y)

    write(X)

    Y = X + 30

    write(Y)

    a atualizao de Xpor T1 foi perdida!

    44

    Leitura Suja

    Tx atualiza um dado X, outras transaes

    posteriormente lem X, e depois Tx falha

    T1 T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    read(Y)

    abort( )

    T2 leu um valor de X que

    no ser mais vlido!

    45

  • 7/26/2019 BD - Aula 5 - Transao

    16/20

    12/09/201

    1

    Scheduler

    Deve evitar escalonamentos invlidos

    exige anlise de operaes em conflito

    operaes que pertencem a transaes diferentes transaes acessam o mesmo dado

    pelo menos uma das operaes write

    tabela de situaes de conflito de transaes

    podem gerar um estado inconsistente no BD

    Ty

    Tx

    read(X) write(X)

    read(X)

    write(X)46

    Scheduler X Recovery

    Scheduler deve cooperar com o Recovery!

    Categorias de escalonamentos considerandoo grau de cooperao com o Recovery

    recuperveisX no-recuperveis

    permitem aborto em cascata X evitam aborto emcascata

    estritosX no-estritos

    47

    Escalonamento Recupervel

    Garante que, se Tx realizou commit, Tx no ir sofrer UNDO

    o recovery espera sempre esse tipo de escalonamento!

    Um escalonamento E recupervel se nenhuma Tx em E for

    concluda at que todas as transaes que gravaram dados

    lidos por Tx tenham sido concludas

    T1 T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    commit( )

    abort( )

    escalonamentono-recupervel

    T1 T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    commit( )

    commit( )

    escalonamentorecupervel

    48

  • 7/26/2019 BD - Aula 5 - Transao

    17/20

    12/09/201

    1

    Escalonamento sem Aborto

    em Cascata

    Um escalonamento recupervel pode gerar abortos de transaes em

    cascata

    consome muito tempo de recovery!

    Um escalonamento E recupervel e evita aborto em cascata se uma Txem E s puder ler dados que tenham sido atualizados por transaes que

    j concluram

    T1

    T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    abort( ) . . .

    escalonamento

    recupervel

    com aborto emcascata

    T1 T2

    read(X)

    X = X20

    write(X)

    commit( )

    read(X)

    X = X + 10

    write(X)

    . . .

    escalonamento

    recupervel

    sem aborto emcascata

    49

    Escalonamento Estrito

    Garante que, se Tx deve sofrer UNDO, basta gravar a before image dos

    dados atualizados por ela

    Um escalonamento E recupervel, evita aborto em cascata e estrito se

    uma Tx em E s puder ler ou atualizar um dado X depois que todas as

    transaes que atualizaram X tenham sido concludas

    T1 T2

    read(X)

    X = X20

    write(X)

    read(Y)

    X = Y + 10

    write(X)

    commit( )

    abort( )

    escalonamento

    recupervel

    sem aborto emcascata e

    no-estrito

    T1 T2

    read(X)

    X = X20

    write(X)

    commit( )

    read(Y)

    X = Y + 10

    write(X)

    commit( )

    escalonamento

    recupervel

    sem aborto em

    cascata e

    estrito

    50

    Teoria da Serializabilidade

    Garantia de escalonamentos no-seriais vlidos

    Premissa um escalonamento no-serial de um conjunto de transaes deve produzir

    resultado equivalente a alguma execuo serial destas transaes

    T1 T2

    read(X)

    X = X20

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    read(X)

    X = X + 10

    write(X)

    T1 T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    execuoserial

    execuono-serial

    serializvel

    entrada:X = 50Y = 40

    entrada:X = 50Y = 40

    sada:X = 40Y = 60

    sada:X = 40Y = 60

    51

  • 7/26/2019 BD - Aula 5 - Transao

    18/20

    12/09/201

    1

    Verificao de

    Serializabilidade

    Duas principais tcnicas

    equivalncia de conflito

    equivalncia de viso

    Equivalncia de Conflito

    dado um escalonamento no-serial E para um conjunto

    de Transaes T, E serializvel em conflito se E forequivalente em conflito a algum escalonamento serial Epara T, ou seja,a ordem de quaisquer 2 operaes emconflito a mesma em E e E.

    52

    Equivalncia de Conflito -

    Exemplo

    T1 T2

    read(X)

    X = X20

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    read(X)

    X = X + 10

    write(X)

    T1

    T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    escalonamento serial E escalonamento no-serial E1

    T1 T2

    read(X)

    X = X20

    read(X)

    X = X + 10

    write(X)

    read(Y)

    write(X)

    Y = Y + 20

    write(Y)

    escalonamento no-serial E2

    E1equivale em conflito a E

    E2no equivale em conflito a nenhum escalonamento serial

    para T1 e T2

    E1 serializvel e E2no serializvel 53

    Verificao de Equivalncia

    em Conflito

    Construo de um grafo direcionado de

    precedncia

    ns so IDs de transaes

    arestas rotuladas so definidas entre 2 transaes

    T1 e T2 se existirem operaes em conflito entre

    elas

    direo indica a ordem de precedncia da operao

    origem indica onde ocorre primeiro a operao

    Um grafo com ciclos indica um escalonamento

    no-serializvel em conflito!54

  • 7/26/2019 BD - Aula 5 - Transao

    19/20

    12/09/201

    1

    Verificao de Equivalncia

    em Conflito

    Algoritmo para teste de serialidade de um plano S

    1. Para cada transao Ti participante do Plano S, criar um n rotulado

    Ti no grafo de precedncia.

    2. Para cada caso em S em que Tj executar um ler_item(X) depois que

    uma Ti executar um escrever_item(X), criar uma seta (Ti Tj ) no

    grafo de precedncia.

    3. Para cada caso em S em que Tj executar um escrever_item(X) depois

    que Ti executar um ler_item(X), criar uma seta (Ti Tj ) no grafo de

    precedncia.

    4. Para cada caso em S em que Tj executar um escrever_item(X) depois

    que Ti executar um escrever_item(X), criar uma seta (Ti Tj ) no

    grafo de precedncia.

    5. O plano S ser serializvel se, e apenas se, o grafo de precedncia

    no contiver ciclos.

    55

    Grafo de Precedncia

    T1 T2

    read(X)

    X = X20

    write(X)

    read(X)

    X = X + 10

    write(X)

    read(Y)

    Y = Y + 20

    write(Y)

    escalonamento serializvel E1

    T1 T2

    read(X)

    X = X20

    read(X)

    X = X + 10

    write(X)

    read(Y)

    write(X)

    Y = Y + 20

    write(Y)

    escalonamento no-serializvel E2

    T1 T2 T1 T2

    56

    Plano de Execuo (histrico)

    de Transaes

    Representao sequencial da execuo entrelaada de um conjunto de

    transaes concorrentes operaes consideradas

    read (r), write (w),

    commit (c), abort (a)

    Exemplo

    HE2 = r1(x) r2(x) w1(x) r1(y)w2(x) w1(y) c1 c2

    escalonamento no-serializvel E2

    T1 T2

    read(X)

    X = X20

    read(X)

    X = X + 10

    write(X)

    read(Y)

    write(X)

    Y = Y + 20

    write(Y)

    commit( )

    commit( )57

  • 7/26/2019 BD - Aula 5 - Transao

    20/20

    12/09/201

    Referncias

    Elmasri, R. e Navathe, S. Fundamentals of Database Systems,6

    Edio, Addison-Wesley, 2011.

    Captulo 21

    Abraham Silberschatz, Henry F. Korth, S. Sudarshan., Sistema

    de Banco de Dados, Editora: CAMPUS 5 Edio - 2006 808

    pg. ISBN 13: 9788535211078

    58

    Transao

    Rodrigo Spnola