Fundamentos de Banco de Dados
- Modelagem
- Normalização
- Álgebra e cálculo relacional
- SQL: aulas
- SQL: exercícios resolvidos
- SQL: execução dos exercícios resolvidos direto no navegador
Banco de Dados II
Banco de Dados III
- Banco de dados orientado à objetos: aulas
- Banco de dados orientado à objetos: exercícios
- Bancos de Dados Temporais: aulas
- Bancos de Dados Temporais: exercícios
- Bancos de Dados Geográficos: aulas
- Bancos de Dados Geográficos: exercícios
- Bancos de Dados XML: aulas
- Bancos de Dados XML: exercícios
- Not only (NoSQL)
- New SQL
Noções Básicas
Linguagens SQL
- DDL (Linguagem de Definição de Dados), que lida com esquemas e descrições de banco de dados.
- DML (Linguagem de Manipulação de Dados), que lida com a manipulação de dados e inclui instruções SQL mais comuns, como SELECT, INSERT, UPDATE, DELETE etc.
- DCL (Linguagem de Controle de Dados), que inclui comandos como GRANT, e principalmente relacionado com direitos, permissões e outros controles do sistema de banco de dados.
Tipos de Dados
Transações
Transação em banco de dados é uma coleção de várias operações ex: SELECT
, UPDATE
, DELETE
ou INSERT
como uma única unidade de trabalho.
Podemos definir onde a transação começará e quando terminará. Para iniciar a transação, usamos a sintaxe BEGIN
.
Se as consultas em uma transação foram executadas com sucesso, salvamos as alterações usando a sintaxe COMMIT
. Se as consultas em uma transação falharem na execução, então reverteremos as alterações antes da execução da transação usando a sintaxe ROLLBACK
.
![](images/transaction.jpeg)
Ex:
SELECT BALANCE FROM ACCOUNT WHERE ID = 1
UPDATE ACCOUNT SET BALANCE = BALANCE - 100 WHERE ID = 1
UPDATE ACCOUNT SET BALANCE = BALANCE + 100 WHERE ID = 2
![](images/commit.png)
![](images/rollback.png)
Propriedades das Trasações
Todo banco de dados RELACIONAL deve possuir as propriedades ACID:
- ATOMICIDADE: todas as operações de uma transação são realizadas. Isso significa que em caso de sucesso deve ser executada totalmente e em casos de erros ou falhas deve ser abortada por completo.
- CONSISTENCIA: leva o DB de um estado consistente para outro estado consistente.
- INDEPENDENCIA: o processamento de transações não deve interferir em outras transações.
- DURABILIDADE: resultados de operações confirmadas não devem interferir em outras transações.
Controle de transações
Controle de transações serve para garantir as caracteristicas fundamentais de uma transação (ACID).
Protocolo 2phase commit
- Preparação: um dos participantes é eleito coordenador e envia a cada nodo uma solicitação para preparar para o commit.
- Commit: se todos os nodos participantes estão prontos, o coordenador envia um sinal de commit para cada participante e depois executa
- Se um nodo falhar na preparação do coomit, o coordenador manda um sinal de rollback para todos.
- Se o nodo coordenador cair: haverá um backup que será eleito. Em seguida por broadcast, os outros nodos são avisados da mundança.
Deadlocks
Lock é quando uma ação está sendo tomada em um banco de dados e para evitar a concorrência de 2 comandos em cima do mesmo registro ou tabela, um lock (travamento) é executado. Quando um lock é ativo a transação por sua vez aguarda o unlock (destravamento) da tarefa que estava a sua frente para assim poder ser executada.
Já o DeadLock, é um caso que ocorre nos bancos de dados quando são feitos muitos lock’s que dependem de outros lock’s para prosseguirem, causando uma fila eterna de bloqueio.
![](images/deadlock.png)
Isso causa um ciclo de dependências (dependência cíclica) e assim impedindo que qualquer tarefa possa ser executada. Geralmente em casos assim, os SGBD’s cancelam ambas as transações para que as próximas possam ser realizadas.
Otimização de Consultas
É sempre necessário levar em conta:
- replicação dos dados
- reconstrução das relações a partir de fragmentos
- tempo de recuperação
- tempo de processamento
- transmissão pela rede
Fragmentação de Dados
Um dado ou relação será fragmentado e armazenado em diferentes nodos.
A fragmentação pode ser de 2 formas:
- Horizontal: os fragmentos são definidos por SELEÇÃO
- Vertical: os fragmentos são definidos por PROJEÇÃO
Livros de Referência
- Sistemas de Banco de Dados - Elmasri e Navathe - 6ª Edicao
- Sistemas de Gerenciamento de Banco de Dados - Ramakrishnan e Gehrke - 6ª Edicao
- Use a cabeca - SQL