Escolar Documentos
Profissional Documentos
Cultura Documentos
de Banco de Dados
Prof. Marcos Alexandruk
alexandruk@uninove.br
www.unilivros.com.br
Aula 1
Informações Importantes
EMENTA:
OBJETIVO:
BIBLIOGRAFIA:
Silberschatz p.4
Conceitos Gerais e Características
Silberschatz p. 2
As doze regras de Codd
Aula 2
Cenário atual
número de usuários
localização
Como são classificados os bancos de dados
quanto aos MODELOS DE DADOS?
hierárquicos
em rede
relacionais
orientados a objetos
Como são classificados os bancos de dados
quanto ao NÚMERO DE USUÁRIOS?
monousuários
multiusuários
Como são classificados os bancos de dados
quanto a sua LOCALIZAÇÃO?
centralizados
distribuídos
Principais SGBDs
Oracle Database
1977: Larry Ellison, Bob Miner e Ed Oates fundam a
SDL (Software Level Laboratories)
1978: O nome da empresa é mudado para RSI
(Rational Software Inc.)
1979: A RSI lança o primeiro produto comercial de
banco de dados relacional utilizando a linguagem
SQL
1983: Lançado o Oracle 3, o primeiro SGBD a rodar
em mainframes e em minicomputadores
Versão atual: 11g
www.oracle.com/br/index.html
SQL Server
Lançado pela Microsoft em 1988
Inicialmente era uma versão especial do
Sybase (parceria com a Microsoft, encerrada
em 1994)
SQL Server 2005: grande integração com a
plataforma .NET
Versão atual: SQL Server 2008
www.microsoft.com/sqlserver/2008/pt/br/default.aspx
DB2
Projeto começou no início dos anos 70 (Edgar
Frank Codd – IBM)
A princípio o produto foi chamado System R
Lançado em 1983 com base no SQL/DS (para
mainframe)
A partir da década de 90 inclui versões para
Windows, LINUX e PDAs
2006: Lançamento do DB2 9 Express
DB2 9 é o primeiro SGBD que, segundo a IBM
armazena XML nativo
Teradata
Teradata foi uma divisão da NCR Corporation,
adquirida em 1991
É apresentado como um sistema de Data
Warehouse que armazena e gerencia dados.
O Gartner Group, em 2011, elege a Teradata
como líder global em bancos de dados de
Data Warehouse.
www.teradata.com
MySQL
Desenvolvido a partir de 1995 por David
Axmark, Allan Larsson e Michael Widenius
Adquirida pela Sun em 2008 (US$ 1 bilhão)
2009: Oracle compra a SUN (US$ 7,8 bilhões)
Licença: GNU-GPL (General Public License)
Versões para Windows, LINUX, UNIX,
FreeBSD e Mac OS X
Muito utilizado em soluções para Web
www.mysql.com
PostgreSQL
Origem: Projeto POSTGRE, Universidade Berkeley,
Califórnia. Equipe orientada pelo Prof. Michael
Stonebraker
1988: primeira versão estável
1991: Código adquirido pela Illustra, a qual se
fundiu com a Informix (de Stonebraker), hoje
pertencente à IBM
Licença: BSD (Berkeley Software Distribution)
Versões para LINUX, UNIX, Mac OS X e Windows
www.postgresql.org/
Informix
Projetado por Roger Sippl no final dos anos 70
A Informix foi fundada em 1980 e tornou-se pública
em 1986
Na década de 90 foi o segundo banco mais popular
depois do Oracle
Em 2001 a IBM, por sugestão do Wal-Mart (O maior
usuário do Informix), adquiriu a Informix
Em meados de 2005, a IBM lançou a versão 10 do
Informix IDS
www.ibm.com/informix
Sybase
Fundada por Mark Hoffman e Bob Epstein
em 1984, em Berkeley, na Califórnia
A empresa atua em 120 países e tem mais
de 82.000 clientes.
2010: A SAP adquire a Sybase por
US$ 5,8 bilhões
www.sybase.com.br
InterBase
Lançado em 1984 pela Groton Database
Systems (Interbase, a partir de 1986, a
empresa passou a ser controlada, em 1991,
pela Borland)
Comercializado atualmente através da
Embarcadero Technologies
A versão 6.0 deu origem ao FireBird (open
source)
www.embarcadero.com/products/interbase
FireBird
A versão 6.0 deu origem ao FireBird (open
source)
Versão atual 2.5.1, lançada em outubro de
2011
www.firebirdsql.org/
Sistemas Gereciadores
de Banco de Dados
Prof. Marcos Alexandruk
alexandruk@uninove.br
www.unilivros.com.br
Aula 3
SGBDOOs
Sistemas Gerenciadores de Banco
de Dados Orientados a Objetos
SGBDOO
Os SGBDs baseados nos modelos relacional, em
rede ou hierárquico apresentam deficiências
quando é preciso desenvolver aplicações para
engenharia (CAE/CAD/CAM), para Sistemas de
Informações Geográficas, simulações científicas ou
médicas, etc.
Essas aplicações fazem uso de estruturas de dados
complexas (vídeos, imagens, áudio, textos
formatados, etc.)
Para atender a esta demanda surgiram os
SGBDOOs (Sistemas Gerenciares de Banco de
Dados Orientados a Objetos).
SGBDOO
Outro fator que impulsionou o desenvolvimento de
SGBDOOs foi a crescente popularidade de
linguagens orientadas a objetos:
Smalltalk
C++
Java
SGBDOO
Vários protótipos foram desenvolvidos, alguns
inclusive foram disponibilizados comercialmente:
GemStone (www.gemstone.com)
Objectivity (www.objectivity.com)
ObjectStore (http://web.progress.com/pt-br/objectstore/index.html)
FastObjects (http://www.versant.com/en_US/products/fastobjects)
Versant (http://www.versant.com/en_US/products/objectdatabase)
OpenODB (Hewlett-Packard)
SGBDOO
Para propor uma linguagem padrão para os bancos
de dados orientados a objetos foi formado o ODMG
(Object Database Management Group)
O grupo propôs um padrão conhecido como
ODMG-93, atualmente denominado ODMG 2.0
O padrão foi adotado mundialmente pelos
fornecedores e usuários de SGBDOOs
O ODMG é responsável também pela definição de
um padrão de linguagem para o modelo orientado a
objetos.
SGBDOO
O ODMG é responsável também pela definição de
um padrão de linguagem para o modelo orientado a
objeto:
ODL (Object Definion Language)
OQL (Object Query Language)
Nesse padrão foi estabelecido que o banco de
dados orientado a objeto deve possuir um vínculo
com alguma linguagem hospedeira orientada a
objeto (Smalltalk, C++, Java, etc.)
O padrão define também os tipos de dados e
métodos a serem suportados pelo sistema
SGBDOO
Uma das principais características dos sistemas de
banco de dados orientados a objetos é que o
desenvolvedor pode especificar não apenas a
estrutura de dados de objetos, mas também
funções que desempenham operações nesses
objetos, comumente chamados de métodos.
SGBDOO
Cada objeto armazenado no banco de dados possui
uma referência única, gerado pelo sistema quando
ele é adicionado, denominada OID (Object
Identifier). Normalmente utilizam-se números
inteiros grandes como OIDs.
Este identificador não é visível ao usuário e é
responsável pela correspondência entre um objeto
do "mundo real" e um objeto do banco de dados.
O identificador não se repete entre objetos
diferentes e quando um objeto é excluído o seu OID
não é reutilizado em um novo objeto criado no
banco de dados, nem pode ser alterado pelo
sistema.
SGBDOO
O estado de um objeto (seu valor corrente) é
determinado a partir de outros objetos ou valores
utilizando-se construtores de tipos.
Há seis construtores básicos:
atom (valores atômicos)
Aula 4
SGBDORs
Sistemas Gerenciadores de Banco
de Dados Objeto-Relacionais
SISTEMAS HÍBRIDOS
(OBJETO-RELACIONAL)
TIPO OBJETO
Podemos criar tipos de dados adicionais e depois fazer
referência a eles dentro de outros objetos.
Os tipos criados são gravados no esquema armazenado no
banco de dados. Outras declarações que acessam o banco de
dados podem fazer uso das definições desses tipos.
CREATE TYPE T_PESSOA AS OBJECT (
CODIGO_PESSOA NUMBER(5),
NOME_PESSOA VARCHAR2(50),
ENDERECO VARCHAR2(50)) NOT FINAL;
Por padrão, os tipos de objeto são FINAL. Para permitir subtipos,
deve ser obrigatoriamente adicionada a expressão NOT FINAL à
declaração do tipo do objeto.
IMPLEMENTAÇÃO OBJETO-RELACIONAL
NO ORACLE
HERANÇA
Um dos recursos mais importantes da orientação a objetos é a
herança.
A definição do tipo T_PESSOA no exemplo anterior pode
funcionar como uma super-classe. A partir dela podemos definir
outros dois tipos, T_FISICA e T_JURIDICA:
CREATE TYPE T_FISICA UNDER T_PESSOA (
CPF CHAR(11),
SEXO CHAR(1));
HERANÇA
Criação das tabelas PESSOA_FISICA e PESSOA_JURIDICA:
CREATE TABLE PESSOA_FISICA OF T_FISICA;
CREATE TABLE PESSOA JURIDICA OF T_JURIDICA;
ARRAY
3. Operação contínua
4. Independência de localização
5. Independência de fragmentação
6. Independência de replicação
9. Independência do hardware
4. Independência de localização
O usuário não precisa saber onde os dados são
armazenados e como são processados. A localização
dos dados, o formato de armazenamento e o método
de acesso devem ser transparentes ao usuário.
Bancos de Dados Distribuídos
5. Independência de fragmentação
A independência de fragmentação significa que
qualquer tabela pode ser partida em fragmentos e
armazenada em diferentes locais físicos.
A fragmentação é a chave para um SGBDD. Sem a
fragmentação os dados não podem ser distribuídos.
6. Independência de replicação
A replicação significa que um fragmento dos dados
pode ser copiado e fisicamente armazenado em vários
sites. Um fragmento localizado em Londres poderia ser
armazenado em São Paulo e um segmento localizado
em São Paulo poderia ser armazenado em Londres.
Bancos de Dados Distribuídos
7. Processamento de consultas distribuído
A decisão quanto ao modo mais eficaz de
processamento de consultas é responsabilidade do
sistema, não do usuário. O sistema é responsável pela
decisão de quais mensagens e quais dados serão
enviados entre os vários sites em que as tabelas estão
localizadas.
SOLICITAÇÃO REMOTA
SELECT NOME_CLIENTE
FROM SP_SERVER.NM_BANCO.CLIENTE
WHERE CODIGO_CLIENTE = 1005;
Bancos de Dados Distribuídos
ACESSO A DADOS DISTRIBUÍDOS
TRANSAÇÃO REMOTA
BEGIN WORK
INSERT INTO SP_SERVER.NM_BANCO.CLIENTE
(CD_CLIENTE, NOME_CLIENTE)
VALUES (1003, 'FULANO DE TAL')
INSERT INTO SP_SERVER.NM_BANCO.PEDIDO
(NR_PEDIDO, CD_CLIENTE)
VALUES (5350, 1003)
COMMIT WORK;
Bancos de Dados Distribuídos
ACESSO A DADOS DISTRIBUÍDOS
SOLICITAÇÃO DISTRIBUÍDA
BEGIN WORK
CREATE VIEW TEMP
(CD_CLIENTE, NOME_CLIENTE)
AS
SELECT CD_CLIENTE, NOME_CLIENTE
FROM SP_SERVER.NM_BANCO.CLIENTE
UNION
SELECT CD_CLIENTE, NOME_CLIENTE
FROM TQ_SERVER.NM_BANCO.CLIENTE
COMMIT WORK;
Bancos de Dados Distribuídos
PROJETO DE BANCO DE DADOS DISTRIBUÍDOS
FRAGMENTAÇÃO HORIZONTAL
FRAGMENTAÇÃO VERTICAL
REPLICAÇÃO
VIEWS (VISÕES)
-----------------------------
VISAO: FUNCIONARIO_VIEW
-----------------------------
CODCLI NOME DEPTO
-----------------------------
1001 FULANO ENGENHARIA
1002 BELTRANO MARKETING
1003 CICRANO JURÍDICO
--------------------------------
VISAO: CLIENTE_PEDIDO_VIEW
-------------------------------- SELECT UF, SUM(VALOR)
CODCLI NOME UF NR VALOR FROM CLIENTE_PEDIDO_VIEW
-------------------------------- GROUP BY UF;
1001 FULANO SP 1 4800
1002 BELTRANO RJ 2 3600
1003 CICRANO SP 3 5500
VIEWS >>> EXERCÍCIO 1 <<<
-----------------------------
VISAO: FUNCIONARIO_VIEW
-----------------------------
CODFUN NOME DEPTO
-----------------------------
1001 FULANO ENGENHARIA
1002 BELTRANO MARKETING
1003 CICRANO JURÍDICO
VIEWS >>> EXERCÍCIO 1 <<<
-----------------------------
VISAO: FUNCIONARIO_VIEW
----------------------------- CREATE VIEW FUNCIONARIO_VIEW AS
CODFUN NOME DEPTO SELECT CODFUN, NOME, DEPTO
----------------------------- FROM FUNCIONARIO
1001 FULANO ENGENHARIA WITH READ ONLY CONSTRAINT FUNC_READ_ONLY;
1002 BELTRANO MARKETING
1003 CICRANO JURÍDICO
VIEWS >>> EXERCÍCIO 2 <<<
--------------------------------
VISAO: CLIENTE_PEDIDO_VIEW
--------------------------------
CODCLI NOME UF NR VALOR
--------------------------------
1001 FULANO SP 1 4800
1002 BELTRANO RJ 2 3600
1003 CICRANO SP 3 5500
VIEWS >>> EXERCÍCIO 2 <<<
--------------------------------
VISAO: CLIENTE_PEDIDO_VIEW
-------------------------------- CREATE VIEW CLIENTE_PEDIDO_VIEW AS
CODCLI NOME UF NR VALOR SELECT C.CODCLI, C.NOME, C.UF,
-------------------------------- P.NR, P.VALOR
1001 FULANO SP 1 4800 FROM CLIENTE C
1002 BELTRANO RJ 2 3600 INNER JOIN PEDIDO P
1003 CICRANO SP 3 5500 ON C.CODCLI = P.CODCLI;
VIEWS >>> EXERCÍCIO 3 <<<
----------------
TABELA: ALUNO
----------------
RA NOME
----------------
1001 ANTONIO
1002 BEATRIZ
1003 CLAUDIO
Os logs de visões materializadas são usados para sincronização entre a tabela base
(master table) e a visão.
Antes da criação da visão materializada, a master table deve ser associada a um
um materialized view log.
Índices únicos;
Índices não únicos;
Índices de chave invertida;
Índices baseados em funções;
Índices de bitmap.
INDEXES
Índices de bitmap
Índices de bitmap
O exemplo a seguir apresenta um índice de bitmap
associado à coluna CAMPUS da tabela ALUNO:
Índices únicos;
Índices não únicos;
Índices de chave invertida;
Índices baseados em funções;
Índices de bitmap;
Tabela organizada por índice.