Sie sind auf Seite 1von 52

Unidade 1

Introdução

Engenharia de Computação / Engenharia de Produção


Banco de Dados
Prof. Maria das Graças da Silva Teixeira

Material base: Banco de Dados, 2009.2, prof. Otacílio José Pereira


Contexto na Disciplina
• 1 – Introdução
• 2 – Modelo Relacional
• 3 – SQL
• 4 – Projeto de Banco de Dados
• 5 – Armazenamento e Indexação
• 6 – Processamento e Otimização de Consultas
• 7 – Gerenciamento de Transações
• 8 – Controle de Concorrência
• 9 – Recuperação de Falhas
• 10 – Segurança de Banco de Dados
• 11 – Tópicos Avançados
Reflexões Preliminares

• O que você sabe sobre Banco de Dados?

• Cite alguns exemplos de aplicações que utilizam


banco de dados;

• Você conhece algum Sistema Gerenciador de


Banco de Dados?
Roteiro

– Contexto Histórico
– Definição e objetivos
– Estrutura interna, estrutura de arquivos e
de armazenamento
– Sistemas de Banco de Dados:
Centralizados, Cliente-Servidor e
Distribuídos
– Modelos de Banco de Dados: Relacional,
Rede e Hierárquico
Contexto Histórico
• Relembrando a programação
– Em programação e no desenvolvimento de sistemas, os
programas precisam manipular informações;

– Qual seria uma primeira forma para tornar as informações


persistentes?
(Persistente: a informação permanece entre execuções do sistema)
Uma primeira saída seria utilizar ARQUIVOS para armazenar
as informações do sistema.

• Para vislumbrarmos melhor este cenário, vamos


imaginar:
– Como seria implementar um sistema para gerenciar as Contas a
Pagar e a Receber de uma empresa?
– Imaginemos que esta implementação deve ser feita por meio de
Sistemas de Arquivos em uma linguagem qualquer, em C por
exemplo;
– Este é um cenário típico usado antigamente.
Contexto Histórico
• Avaliando a alternativa de implementação em
arquivos.
– Quais problemas encontraríamos nesta
implementação?

• Problemas / Desvantagens
– Redundância e inconsistência dos dados;
– Dificuldade de acesso a dados;
– Isolamento dos dados;
– Problemas de integridade;
– Atomicidade das operações;
– Acesso concorrente;
– Segurança.
Contexto Histórico
• Problemas no armazenamento em arquivos
– Redundância e inconsistência dos dados
• Múltiplos formatos de arquivo;
• Duplicação de informações em diferentes arquivos;

• Vários pequenos programas/funções implementados por


diferentes programadores;
• Grande possibilidade de se tratar os mesmos dados em
aplicações diferentes e com inconsistência entre eles;
• Exemplo: Vendas é tratada em um módulo de vendas e
Contas a Receber em outro sem integração entre eles,
mesmo que compartilhem informações.
Contexto Histórico
• Problemas no armazenamento em
arquivos
– Dificuldade de Acesso a Dados
• Imagine que o gerente da loja precise de um novo
relatório de vendas com informações diferentes de
um relatório já concebido;
• Neste caso, para gerar o relatório, uma nova
rotina, com os diversos loops e possivelmente com
acesso a arquivos diferentes, deve ser
implementada;
• Isso pode demorar muito tempo, o que
compromete o atendimento à demanda do cliente
e o custo também é maior.
Contexto Histórico
• Problemas no armazenamento em arquivos
– Isolamento dos Dados (vários arquivos e formatos).
• Como os dados são mais difíceis de acessar, a tendência é que
eles tornem-se cada vez menos acessados e isso provoque seu
isolamento, sua baixa utilização;

– Problemas de integridade.
• Como estabelecer regras sobre as informações no banco de
dados?
• Cada regra deve ser codificada no programa. É uma maneira mais
complexa e sujeita a erros;
• Difícil de acrescentar novas restrições ou modificar as existentes.

– Segurança
• Para implementar segurança, funções especializadas devem
ser implementadas para garantir que usuários específicos
acessem os dados.
Contexto Histórico
• Problemas no armazenamento em arquivos
(cont)
– Atomicidade das operações.
• Falhas podem deixar o banco de dados em um estado
inconsistente com atualizações parciais realizadas;
• Exemplo: A transferência de fundos de uma conta para outra
deve ser completa ou não deve ocorrer (retirar de uma E
inserir em outra).

– Acesso concorrente por vários usuários.


• Acesso concorrente necessário para o desempenho
• Acessos concorrentes não controlados podem levar a
inconsistências
Exemplo: Duas pessoas lendo um saldo e atualizando-o ao
mesmo tempo.
Contexto Histórico
• Cenário atual
– Os problemas citados serviram de motivação para a
criação de um software especializado no tratamento
de dados;

– De forma que, atualmente é difícil pensarmos em


softwares ou sistemas, sobretudo os empresariais,
sem a existência de um Sistema Gerenciador de
Banco de Dados;

– Pare um pouco e pense?


• Quais aplicações você utiliza hoje que envolve dados?
• Como você imagina que as informações manipuladas são tratadas
pelo sistema?
Contexto Histórico
• Aplicações de banco de dados:
– Banco: todas as transações
– Linhas aéreas: reservas, horários
– Universidades: matrículas, registros, notas
– Vendas: clientes, produtos, compras
– Revendedores on-line: acompanhamento de pedidos,
recomendações personalizadas
– Indústria: produção, estoque, pedidos, cadeia de suprimento
– Recursos humanos: registros de empregados, salários,
deduções de impostos

• Os bancos de dados tocam todos os aspectos das


nossas vidas.
Contexto Histórico
• Conforme destaca Silberschatz:
“Embora as interfaces de usuário ocultem
detalhes do acesso a um banco de dados, e a
maioria das pessoas nem mesmo tenha
consciência de estar lidando com um banco de
dados, acessar bancos de dados é uma parte
essencial da vida de quase todo mundo hoje”
Contexto Histórico

• Cenário Atual
– Imaginemos um sistema de vendas em uma loja
Definição e Objetivos
• Conforme Silberchatz:
– Um Sistema de Gerenciamento de Banco de Dados é
uma coleção de dados inter-relacionados E um
conjunto de programas para acessar esses dados;

• O gerenciamento de dados envolve:


– Definir estruturas para armazenamento de informação;
– Fornecer mecanismos para a manipulação de
informações;

• Aspecto interessante da definição:


– Coleção de Dados + Programas para acesso.
Definição e Objetivos
• Reflexão interessante
– Em que outras situações de computação encontramos o par
“Dados” + “Programas”?
Alguns exemplos:

Exemplo Dados Processamento

Programas Variáveis Fluxo de Controle


OO Atributos Métodos
TAD Estrutura Operações
Hardware Memória Instruções
Empresas Documentos Atividades
Definição e Objetivos

• Diante dos problemas levantados é possível


identificar os objetivos de Sistemas
Gerenciadores de Banco de Dados (SGBD);

• Objetivo principal:
– Fornecer uma maneira de recuperar informações de
banco de dados que seja tanto conveniente como
eficiente.
Definição e Objetivos

• Outros Objetivos:
– Disponibilizar dados integrados para usuários e aplicações
através de interfaces amigáveis;

– Garantir a privacidade dos dados através de medidas de


segurança como permissões, senhas de acesso e criptografia;

– Permitir compartilhamento dos dados de forma organizada,


mediando a comunicação entre aplicações e banco de dados,
administrando acessos concorrentes;

– Possibilitar independência dos dados e com isso poupar o


usuário da necessidade de conhecer detalhes de
implementação interna.
Estrutura da Disciplina
• Como aprender Banco de Dados?
• Vale explorar alguns conceitos:
– Níveis de Abstração
– Instâncias e Esquemas
– Arquiteturas
– Modelo Relacional
– Linguagem SQL
– Projeto de BD
– SGBD
• Armazenamento
• Indexação
• Proc. Consultas

Acessa
• Bancos de Dados
– Tópicos Avançados
• Data Warehouse

os
d

Arm Disco
ra
• Business Intelligence

nad
tu
tru

aze
Es

em
• BD Geográficos
• Outros
Níveis de Abstração
• Nível fí
físico: descreve como um registro (por exemplo, cliente) é
armazenado..

• Nível ló
lógico: descreve os dados armazenados no banco de dados e as
relações entre eles..
type cliente = registro
id_cliente : string;
nome_cliente : string;
rua_cliente : string;
cidade_cliente : string;
end;
end

• Nível de view:
view: os programas de aplicação ocultam detalhes dos tipos de dados.
As views também podem ocultar informações (como o salário de um
funcionário) por motivos de segurança.
Instâncias e Esquemas
• Semelhantes aos tipos e variáveis nas linguagens de programação;

• Esquema – a estrutura lógica do banco de dados.


• Exemplo: O banco de dados consiste nas informações sobre um conjunto de clientes
e contas e na relação entre eles;
• Análogo às informações de tipo de uma variável em um programa;
• Esquema físico: projeto de banco de dados no nível físico;
• Esquema lógico: projeto de banco de dados no nível lógico;
• Instância – o conteúdo real do banco de dados em um determinado ponto no tempo.
• Análogo ao valor de uma variável;
• Independência de dados fí
física – a capacidade de modificar o esquema físico sem
mudar o esquema lógico.
• Aplicações dependem do esquema lógico;
• Em geral, as interfaces entre os vários níveis e componentes devem ser bem
definidas de modo que as mudanças em algumas partes não influenciem seriamente
outras.
Estrutura Geral
• A estrutura geral de um SGBD envolve, basicamente, os
seguintes módulos:
– Processamento de Consultas;
– Gerenciamento de Armazenamento de Dados;

• Relembrando definição:
– SGBD = Programa + Dados;
– Programa: Responsável por receber e processar as consultas e
enviar os resultados para o solicitante;
– Banco de Dados: local onde os dados estão estruturados e
armazenados.
Processamento de Consultas
• Responsável pela realização de:
1. Análise e tradução
2. Otimização
3. Avaliação
• Maneiras alternativas de avaliar uma consulta dada:
• Expressões equivalentes;
• Diferentes algoritmos para cada operação;
• A diferença de custo entre um bom e um mau método de avaliar
uma consulta pode ser enorme;
• Necessidade de estimar o custo das operações:
• Depende profundamente das informações sobre relações
que o banco de dados precisa manter;
• Necessidade de estimar estatísticas para resultados
intermediários para calcular custo de expressões complexas.
Processamento de Consultas

• Componentes:

C F
O U
M N SGBD
P C
O I
Compilador
N O
DML
E A
N I
T S Processador Pré-compilador Interpretador
E de Consultas DML DDL
S
Processamento de Consultas

• Componentes de Processamento de Consultas:


– Compilador DML: Traduz comandos DML (inserir,
atualizar, consultar e excluir) em instruções de baixo
nível, intelegíveis ao componente de execução de
consultas;
– Pré-Compilador DML: Embutido em linguagens de
programação;
– Interpretador DDL: Interpreta comandos DDL
(criar,destruir, ...) e registra-os em tabelas de
metadados;
– Processador de Consultas: Executa instruções de
baixo nível geradas pelo compilador DML.
Gerenciamento de Armazenamento de Dados

• Gerenciador de armazenamento é um módulo de programa que


fornece a interface entre os dados de baixo nível armazenados no
banco de dados e os programas de aplicação e consultas
submetidos ao sistema;

• O gerenciador de armazenamento é responsável pelas seguintes


tarefas:
• Interagir com o gerenciador de arquivos;
• Armazenar, recuperar e atualizar dados eficientemente;
• Problemas:
• Acesso ao armazenamento;
• Organização de arquivos;
• Indexação e hashing. 26
Gerenciamento de Armazenamento de Dados
• Componentes:
C F
O U
M N
P C
O I
N O SGBD
E A
N I
Gerenciador Gerenciador
T S
de Arquivos de Buffer
E
S
Gerenciador Gerenciador de
de Transações Autorizações
S F
I I
S S Arquivo de Dicionário Índices Estatísticas
T I Dados de Dados
E C
M O
A
27
Gerenciamento de Armazenamento de Dados

– Gerenciador de Arquivos: Trata a estruturação e a


forma como os dados serão acessados nos arquivos;
– Gerenciador de Buffer: Toda informação recuperada
de arquivo fica em um buffer em memória. Este buffer
é gerenciado por esta parte;
– Gerenciador de Transações: A manipulação dos
dados ocorrem por meio de transações que são
gerenciadas por esta parte;
– Gerenciador de Autorizações: Visa verificar se o
usuário que está manipulando os dados de fato tem
permissão para realizar a operação.
Gerenciamento de Armazenamento de Dados

– Arquivos de dados: Contém os dados em si;


– Dicionário de dados: Também chamado de Catálogo
de Dados, contém os metadados, isto é, as
informações a respeito dos componentes do banco de
dados: tabelas, índices, procedimentos, restrições e
outros;
– Índices: São estruturas que permitem um acesso
mais eficiente aos dados;
– Estatísticas: Representam informações sobre os
dados que permitem ao SGBD identificar a melhor
forma de acessá-los.
Gerenciamento de Transação
• Uma transação é um conjunto de operações que realiza
uma única função lógica em uma aplicação de banco de
dados;
• O componente de gerenciamento de transação garante
que o banco de dados permanece em um estado
consistente (correto) apesar de falhas do sistema (por
exemplo, interrupções de energia e falhas do sistema
operacional) e falhas de transação;
• O gerenciador de controle de concorrência controla a
interação entre as transações concorrentes para
assegurar a consistência do banco de dados.
Estrutura Geral

31
Usuários

Administrador
do Banco Dados

Os usuários são diferenciados

Acessa
pela forma como irão interagir
com o banco de dados.

• Usuário Final;

do

os
Arm Disco
ra

nad
tu
tru

aze
Es

em
• Administrador do Banco de
Dados;
• Analista / Administrador de
Dados.
Administrador de Banco de Dados (DBA)
• Coordena todas as atividades do sistema de banco de dados;
• O administrador de banco de dados tem um bom conhecimento
dos recursos e necessidades de informação da empresa;
• As responsabilidades do administrador de banco de dados
incluem:
Definição de esquema;
Estrutura de armazenamento e definição de
método de acesso;
Modificação de esquema e de organização física;
Concessão de autorização para acesso ao banco
de dados;
Especificar restrições de integridade;
Agir como ligação com os usuários;
Monitorar o desempenho e responder a
mudanças em requisições.
Arquiteturas de Sistemas

• A arquitetura de Sistemas de Banco de Dados é


influenciada por aspectos da arquitetura de
computador como redes, paralelismo e
distribuição;

• Podem ser identificadas as seguintes


arquiteturas:
– Sistemas Centralizados;
– Sistemas Cliente Servidor;
– Sistemas Paralelos (Multi-processador);
– Sistemas Distribuídos.
Arquiteturas de Sistemas
• Sistemas Centralizados
– Em geral, baseados em mainframes;

– O processamento e a interface com o usuário é processada no


sistema centralizado. A interface é enviada para um terminal
“burro” onde é visualizada pelo usuário;

– O terminal não realiza nenhum processamento, apenas


apresenta informações ao usuário. É como se fosse uma
“extensão” do monitor de vídeo plugado em um computador
central;

– O sistema gerenciador do banco de dados é instalado no


sistema central, onde tanto o processamento (back-end) como
a interface (front-end) é executada neste computador.
Arquiteturas de Sistemas
• Sistemas Cliente - Servidor
– Surgiu a partir do advento das redes;

– Neste caso existe um servidor responsável pelo processamento


das consultas e transações (back-end);

– Existe um computador-cliente (front-end) responsável por enviar


as consultas e exibir os resultados obtidos a partir do servidor;

– O computador-cliente precisa ter instalado uma parte da


tecnologia do SGBD, responsável por fazer a comunicação com
o servidor.
Arquiteturas de Sistemas
• Sistemas Paralelos
– Vale destacar dois tipos:
• Paralelismo com alguns processadores (Granularidade Grossa);
• Paralelismo com várias unidades de processamento (Granularidade Fina);

– Computadores com alguns processadores:


• Permitem que consultas que chegam ao servidor sejam “roteadas” para cada unidade
de processamento;
• A consulta em si não é dividida, ela é realizada por um único processador;
• O que se consegue é distribuir as consultas entre os diversos processadores;
• Este é o cenário mais comum de ser encontrado;

– Computadores com várias unidades de processamento:


• Este é um cenário mais específico;
• Neste caso as consultas em pedaços de trabalho menores são paralelizadas entre os
diversos processadores;
• É empregado em bancos de dados que precisam processar grandes volumes de dados
(Terabytes);

– Fatores impactados:
• Throughput: número de transações processadas por tempo;
• Tempo de resposta: tempo entre o início e o fim do processamento de uma consulta.
Arquiteturas de Sistemas
• Sistemas Distribuídos
– Neste caso os dados são distribuídos em diversos
computadores, geralmente separados geograficamente;

– Por exemplo, imagine uma rede de lojas em que cada filial e a


matriz apresentem seus bancos de dados contendo informações
de catálogo de produtos e vendas;

– Distinção entre sistemas paralelos e sistemas distribuídos:


• No sistema distribuído, cada nó representa um conjunto separado
de “CPU+Memória+Disco”;
• Em sistemas paralelos, partes são compartilhadas entre as
unidades de processamento.
Modelos de Dados
• Um Modelo de Dados é uma coleção de mecanismos
para descrever dados, relações de dados, semântica de
dados e restrições de consistência;

• Em Bancos de Dados, alguns modelos empregados são:


– Modelo Relacional;
– Modelo de Entidade e Relacionamento;
– Modelo de Dados Baseado em Objetos;
– Modelo de Dados Semi-estruturados;

• Antigamente, estudavam-se também


– Modelo de Dados em Rede;
– Modelo de Dados Hierárquicos;

– Atualmente estes modelos não estão mais em uso.


Modelos de Dados
• Modelo de Entidade e Relacionamento:
– Empregado para mapear elementos do mundo real em um nível
mais alto;
– Representa os objetos do mundo como entidades e suas
relações;
• Entidade: uma “coisa” ou “objeto” na empresa que
é distinguível dos outros objetos. É descrito por
um conjunto de atributos;
• Relacionamento: uma associação entre várias
entidades;
• Representado graficamente por um diagrama
entidade-relacionamento;

• Modelo de Dados Relacional:


– Utiliza tabelas para representar os dados e as relações entre os
dados em que cada tabela é organizada em linhas e colunas;
Modelos de Dados
• Modelo de Dados Baseado em Objetos:
• Estendem o modelo de dados relacional incluindo orientação a objeto e
construções para lidar com tipos de dados inseridos.
• Permitem que atributos de tuplas tenham tipos complexos, incluindo
valores não atômicos como relações aninhadas.
• Preservam as fundações relacionais, em especial o acesso declarativo
aos dados, enquanto estendem a capacidade de modelagem.
• Fornecem compatibilidade com linguagens relacionais posteriores
existentes.

• Modelo de Dados Semi-estruturados:


– Permitem uma especificação de dados em que itens de dados
individuais do mesmo tipo possam ter diferentes conjuntos de atributos;
– Uso de XML.
XML: Extensible Markup Language
• Definida pelo WWW Consortium (W3C);
• Originalmente criada como uma linguagem de marcação
de documento, não como uma linguagem de banco de
dados;
• A capacidade de especificar novas tags e criar
estruturas de tag aninhadas tornaram a XML uma
excelente maneira de trocar dados, não apenas
documentos;
• A XML se tornou a base para todos os formatos de
intercâmbio de dados da nova geração;
• Uma ampla variedade de ferramentas está disponível
para análise, navegação e consulta de
dados/documentos XML.
Modelos de Dados
Exemplo de banco de Dados Relacional:
Modelos de Dados
Exemplo de Diagrama de Entidade e Relacionamentos:
Linguagem de Manipulação de Dados (DML)

• Linguagem para acessar e manipular os dados


organizados pelo modelo de dados apropriado.
• A DML também é conhecida como Linguagem de
Consulta.
• Duas classes de linguagem:
• Procedurais – usuário especifica que dados são
necessários e como obter esses dados;
• Declarativas (não procedurais) – usuário
especifica que dados são necessários sem
especificar como obter esses dados;
• SQL é a linguagem de consulta mais utilizada.
Linguagem de Definição de Dados (DDL)
• Notação de especificação para definir o esquema de banco de dados.
– Exemplo: create table conta ( número_conta char(10),
saldo integer)
• O compilador DDL gera um conjunto de tabelas armazenado em um dicionário de
dados;

• O dicionário de dados contém metadados (ou seja, dados sobre os dados).


• Esquema de banco de dados;
• Linguagem de armazenamento e definição de dados;

• Especifica a estrutura de armazenamento e os métodos de acesso usados


• Restrições de integridade:

• Registros de domínio;

• Integridade referencial (restrição de referências na SQL);

• Afirmações/Assertivas;
• Autorização.
SQL (Structured Query Language)
• SQL: linguagem não procedural amplamente usada.
• Exemplo: encontre o nome do cliente com id_cliente 192-83-7465
select cliente.nome_cliente
from cliente
where cliente.id_cliente = ‘192-83-7465’
• Exemplo: encontre os saldos de todas as contas pertencentes ao
cliente com id_cliente 192-83-7465
select conta.saldo
from depositante, conta
where depositante.id_cliente = ‘192-83-7465’ and
depositante.número_conta = conta.número_conta
• Os programas de aplicação geralmente acessam banco de
dados através de:
• Extensões de linguagem para permitir SQL embutida;
• Interface de programa de aplicação (por exemplo, ODBC/JDBC),
que permite que consultas SQL sejam enviadas a um banco de
dados.
Projeto de Banco de Dados
O processo de projetar a estrutura geral do banco de
dados.
• Projeto Lógico – Decidir sobre o esquema de banco de dados.
O projeto de banco de dados exige encontrar uma “boa” coleção
de esquemas de relação.
• Decisão empresarial – Que atributos devemos registrar no
banco de dados?
• Decisão de ciência da computação – Que esquemas de
relação devemos ter e como os atributos devem ser
distribuídos entre os vários esquemas de relação?
• Projeto Físico – Decidir sobre o layout físico do banco de
dados.
Terminologia

• OLTP vs OLAP
– Estas são duas siglas comumente encontradas em
bancos de dados;
– On-line Transactional Processing (OLTP)
• São bancos de dados cuja ênfase é dar suporte às
transações de um determinado negócio;
• Suas estruturas de armazenamento e consulta são voltadas
para melhorar a capacidade de inserção, alteração, exclusão
e consulta dos dados;
• Em termos de negócio, são bancos que armazenam
informações de nível operacional.
Terminologia

• OLTP versus OLAP (cont)


– Online Analitical Processing (OLAP)
• São bancos de dados cuja ênfase é dar suporte às
consultas;
• Suas estruturas de armazenamento são voltadas para se
obter um excelente tempo de resposta para consulta à
grande volume de dados;
• Em termos de negócio, são bancos de dados que servem de
suporte para os níveis tático e estratégico, isto é, a alta
direção da empresa;
• Estes níveis precisam de uma análise integradas das
informações do negócio e isso é feito através destes bancos
OLAP.
Exemplos
– Linha de Software Livre
• MySQL (http://www.mysql.com/)
• PostGre SQL (http://www.postgresql.org/)
• HSQLDB (http://hsqldb.org/)
• Interbase (http://www.embarcadero.com/products/interbase-
smp)
• Firebird (http://www.firebirdsql.org/)

– Linha comercial
• Microsoft SQL Server
(http://www.microsoft.com/sqlserver/2008/pt/br/default.aspx)
• Microsoft Access (http://office.microsoft.com/pt-br/access/)
• Oracle
(http://www.oracle.com/us/products/database/index.htm)
• IBM DB2 (http://www-01.ibm.com/software/data/db2/)
• SyBase
(http://www.sybase.com/products/databasemanagement)
Para estudos

• Lista de Exercícios (disponibilizada no


site);

• Leitura:
SILBERSCHATZ, A. et.al. Sistema de banco de
dados. 5.ed. Rio de Janeiro: Elsevier, 2006.
Capítulo 1 – Introdução.

Das könnte Ihnen auch gefallen