Banco de Dados
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
.
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
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.
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