Buscar

ATPS_Programa_O_Em_Banco_De_Dados_Marcos_Am_Rico_Teixeira_Rodrigues_RA_1299548175-16_05_2015

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 20 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

ATPS Programa O Em Banco De Dados Marcos Am Rico Teixeira Rodrigues RA 1299548175
 de vocarvalho | trabalhosfeitos.com
 UNIVERSIDADE ANHANGUERA – UNIDERP
Centro de Educação a Distância
Centro Universitário Plinio Leite – Unipli
TECNOLOGIA EM ANÁLISE DE DESENVOLVIMENTO DE SISTEMAS
ATPS
Programação em Banco de Dados
TUTOR A DISTÂNCIA JOÃO ALEXANDRE BALDOVINOTTI
 Marcos Américo Teixeira Rodrigues RA: 1299548175
ATPS
Programação em Banco de Dados
Atividade Prática Supervisionada, elaborada com o objetivo de aprovação na disciplina de Programação em Banco de Dados, do curso de Análise e desenvolvimento de sistemas, das Faculdades Integradas Anhanguera.
SUMÁRIO
Capa...................................................................................................................................1
Folha de rosto................................................................................................................... 2
Sumário..............................................................................................................................3
Introdução..........................................................................................................................4
Objetivo.............................................................................................................................5
Consultas SQL e DML......................................................................................................6
Consultas para o sistema SIG............................................................................................9
Comandos DML para as tabelas ilustradas no diagrama.................................................11
Procedures eTrigger........................................................................................................13
Otimização de Consultas e Gerenciamento de Transações..............................................20
Gerência de Transações....................................................................................................21
Banco de Dados Distribuídos e Data Warehouse.............................................................23
Armazenamento Distribuído dos Dados...........................................................................23
Características da ACID...................................................................................................25
Funções adicionais............................................................................................................26
Data Warehouse................................................................................................................26
Bibliografia.......................................................................................................................28
Introdução
A empresa de desenvolvimento de software chamada Microsys XYZ S.A. está 
Projetando um novo produto a ser lançado. Este novo software chamado SIG – Sistema 
Integrado de Gerenciamento 1.0 irá atender a diversas empresas que precisam de um 
sistema para controlar suas operações de vendas, controle de estoque, funcionários e demais 
atividades. 
As consultas e outras atividades relacionadas a Banco de Dados devem ser realizadas 
com o melhor desempenho possível, pois as empresas que utilizarão o SIG possuem grandes 
volumes de dados. A Microsys XYZ S.A. também necessita de consultoria em algumas áreas 
mais abrangentes que podem fazer parte do projeto como Banco de Dados Distribuídos e 
Data Warehouse.
Devido a essesrequisitos a Microsys XYZ S.A. está recrutando uma equipe para 
trabalhar na base de dados do SIG.
Para realizar as atividades relacionadas ao banco de dados do SIG, devem-se utilizar
as tabelas mostradas no diagrama apresentado na figura 1 a seguir:
Objetivo
Elaborar de um projeto de programação de banco de dados para o SIG, que deve 
abordar as diversas fases de documentação, geração de scripts para inserir, excluir e consulta 
de dados, otimização de consulta, geração de procedures e triggers e estudos e relatórios sobre 
Data Warehouse e Data Mining.
Consultas SQL e DML.
Fundamentos de consultas SQL
Segundo Date, C.J, um sistema de Banco de Dados é basicamente um sistema computadorizado de manutenção de registros.
A linguagem estruturada de consultas (Structured Query Language), é uma linguagem de alto nível para manipulação de dados dentro do modelo relacional. É de tal ordem sua importância para a indústria dos bancos de dados relacionais que ela acabou por se tornar o mecanismo mais popular de acesso aos grandes bancos de dados cliente/servidor .
Um sistema de dados, por si só, pode ser considerado como um armário de arquivamento, ou seja ele é um repositório ou um recipiente.
Os usuários de um sistema podem solicitar que o sistema realize diversas operações envolvendo arquivos como por exemplo: acrescentar novos arquivos ao banco de dados; inserir dados em arquivos existentes; buscar dados de arquivos existentes; excluir dados de arquivos existentes; alterar dados em arquivos existentes; remover arquivos existentes dobanco de dados.
È costume tratar a SQL como proposta de subconjuntos de comandos, linguagens para a execução de diferentes tarefas, tal como a DAO aSQL suporta tanto uma linguagem de definição de dados (DDL) para a criação e alteração de tabelas e índices quanto uma linguagem de manipulação de dado (DML) para a seleção e atualização dos dados armazenados nas tabelas.
DML - Linguagem de Manipulação de Dados
O primeiro grupo é a DML (Data Manipulation Language - Linguagem de manipulação de dados). DML é um subconjunto da linguagem SQL que é utilizado para realizar inclusões, consultas, alterações e exclusões de dados presentes em registros. Estas tarefas podem ser executadas em vários registros de diversas tabelas ao mesmo tempo. Os comandos que realizam respectivamente as funções acima referidas são Insert, Select, Update e Delete
Linguagem de Manipulação de Dados (ou DML, de Data Manipulation Language) é uma 
família de linguagens de computador utilizadas para a recuperação, inclusão, remoção e modificação de informações em bancos de dados. Pode ser procedural, que especifica como os dados devem ser obtidos do banco; pode também ser declarativa (não procedural), em que os usuários não necessitam especificar o caminho de acesso, isto é, como os dados serão obtidos. O padrão SQL é não procedural. DMLs foram utilizadas inicialmente apenas por programas de computador, porém (com o surgimento da SQL) também têm sido utilizadas por pessoas.
As DMLs têm suacapacidade funcional organizada pela palavra inicial em uma declaração, a qual é quase sempre um verbo. No caso da SQL, estes verbos são:
• Select
• Insert
• Update
• Delete
Cada declaração SQL é um comando declarativo. As declarações individuais da SQL são declarativas, em oposição às imperativas, na qual descrevem o quê o programa deveria realizar, em vez de descrever como ele deveria realizar.Muitas implementações de banco de dados SQL estendem suas capacidades SQL fornecendo linguagens imperativas, isto é, procedurais. Exemplos destas implementações são o PL/SQL, da Oracle, e o SQL PL, da DB2. As linguagens de manipulação de dados tendem a ter muitos tipos diferentes e capacidades entre distribuidores de banco de dados. Há um padrão estabelecido para a SQL pela ANSI, porém os distribuidores ainda fornecem suas próprias extensões ao padrão enquanto não implementam o padrão por completo.
Há dois tipos de DMLs:
• Procedural
• Declarativa
SELECT é uma declaração SQL que retorna umconjunto de resultados de registros de uma ou mais tabelas. Ela recupera zero ou mais linhas de uma ou mais tabelas-base, tabelas temporárias ou visões em um banco de dados. Na maioria das aplicações, SELECT é o comando de Linguagem de Manipulação de Dados (DML) mais utilizado. Como SQL é uma linguagem não procedural, consultas SELECT especificam um conjunto de resultados, mas não especificam como calculá-los, ou seja, a consulta em um "plano de consulta" é deixada para osistema de banco de dados, mais especificamente para o otimizador de consulta.
Declarações INSERT têm a seguinte forma:
• INSERT INTO tabela (coluna1, [coluna2, ...]) VALUES (valor1, [valor2, ...])
O número de colunas e valores devem ser o mesmo. Se uma coluna não for especificada, o valor padrão é usado. Os valores especificados (ou incluídos) pela declaração INSERT devem satisfazer todas as restrições aplicáveis (tais como chaves primárias, restrições CHECK e restrições NOT NULL). Se ocorrer um erro de sintaxe ou se algumas das restrições forem violadas, a nova linha não é adicionada à tabela e um erro é retornado.
Update é uma instruçãoda linguagem SQL que altera os dados de um ou mais registros em uma tabela. Nem todas as linhas podem ser atualizadas, ou um subconjunto pode ser escolhido utilizando uma condição.
Delete é linguagem de consulta de banco de dados estruturada SQL a instrução que remove um ou mais registros de uma tabela. Um subconjunto pode ser definido para exclusão usando uma condição, caso contrário, todos os registros são removidos.
Consultas para o sistema SIG
Consulta Clientes
select nome, cidade, uf, extract(year from age(cliente.datanascimento)) ,genero
from cliente
order by nome
Consulta Funcionários
select nome, cargo, extract(year from age(datanascimento)), dataadmissao, camissao 
from funcionario
order by cargo
Consulta Vendas por Funcionário
select b.nome, a.valortotal
from venda a 
left join funcionario b ON(a.funcionario_venda = b.idfuncionario)
order by a.valortotal desc
Consulta Vendas por Produtos
select a.descricao, a.precovenda, sum(b.valortotal)
from produto a
inner join itemvenda b on(a.idproduto = b.produto_itemvenda)
group by a.descricao, a.precovenda
order by sum(b.valortotal) desc
Consulta Vendas por Cliente2
select c.nome, c.cidade, count(v.cliente_venda), sum(v.valortotal)
from cliente c, venda v
where c.idcliente = v.cliente_venda
group by c.nome, c.cidade
union
select c.nome, c.cidade, 0, 0.00
from cliente c
where not exists ( select 1 from
		venda v
		where c.idcliente = v.cliente_venda)
Comandos DML para as tabelas ilustradas no diagrama 
Para tal, usamos os comandos de manipulação de dados que chamamos de DML.
São eles: Insert, Update, Delete e Select.
Comando INSERT
Abaixo é um exemplo do comando para inserir produtos na tabela PRODUTOS.
insert into produto(id_produto, nome_produto, marca)
values ( 'coca_lata_350ml', 'coca-cola');
Obs: Note que não foi inserido a ID do PRODUTO, pois a mesma já é incrementada automaticamente, para isso, foi criado uma sequência para cada tabela.
No caso da de PRUDUTOS ficou assim:
CREATE SEQUENCE PRODUTOS_ID_PRODUTO_seq START 103;
Comando UPDATE
Abaixo é um exemplo do comando para inserir produtos na tabela CLIENTE.
update CLIENTE
set sexo = 'M'
where nome = ‘Juan’;
Comando DELETE
Abaixo é um exemplo do comando para delete na tabela CLIENTE.
DELETE FROM cliente
 WHERE idcliente = 2
Comando SELECT
Abaixo é um exemplo do comando para select na tabela CLIENTE com a condição WHERE para listar somente os cliente que moram no município de Niterói.
select *
from cliente
where cidade = 'niteroi'
Procedures e Trigger
Procedures
Stored Procedures não trazem desvantagens para uma aplicação com banco de Dados, pelo contrário só trazem melhoramentos na performance e desempenho na execução de uma aplicação. Porém existem algumas limitações, sendo mencionado primeiramente o programador, é preciso que ele saiba passar corretamente informações para as procedures, por exemplo, quais serão os parâmetros de entrada quais as variáveis etc. Como segunda limitação está a linguagem usada para programação, pois, pode ser ineficiente para operações muito complexas, por exemplo, quando se usa mais de um banco de dados.Existem comandos da Linguagem SQL que podem e que não podem ser usados em Stored Procedures:
Os comandos da SQL DML como SELECT, INSERT, UPDATE E DELETE podem ser usados em todas as procedures desde que para eles, sejam usadasvariáveis locais, também a palavra INTO quando se usa select, para serem ?guardadosos valores de saídas (retorno)?. Os que não podem ser usados fazem parte da SQL DDL, por exemplo, CREATE, ALTER, DROP, SET, GRANT, REVOKE, COMMIT E ROLLBACK.
Triggers
Uma trigger pode ser executada antes de atualizar um registro no banco, através do comando BEFORE UPDATE, após efetivar uma atualização para que ela seja garantida através do comando AFTER UPDATE. Antes de uma inclusão para testar valores, restringindo a inclusão se não são de acordo com as regras da empresa, pois as triggers são feitas baseadas nestas, para isso se usa o comando BEFORE INSERT e para garantir uma inclusão, por meio do comando AFTER INSERT. Também pode ser utilizada antes de uma exclusão, para que se possa confirmar a exclusão de um registro ou bloquear a mesma, através do comando BEFORE DELETE e depois de uma exclusão, com o comando AFTER DELETE, para garantir que o registro realmente foi excluído.
Os cinco pontos que podem ser chamados de benefícios são:
1. Reduzir o tráfego na rede;
2. Criar regras de negócios adaptadas a aplicação cliente,
3. Criar rotinas comuns que podem ser utilizadas para toda a empresa, reduzindo o tempo de desenvolvimento e manutenção.
4. Centralizar o processamento no servidor e reduzir os requisitos de hardware na estação cliente.
5. Aumentar a performance das aplicações.
Procedures
A procedure tem a finalidade de armazenar e realizardiversos procedimentos SQL a serem realizados pelo banco de dados de acordo com os comandos neles inseridos.
• Procedure ret_comissao_funcionario: calcula o valor da comissão dos funcionários baseado no valor de vendas e na porcentagem de comissão (campo comissão da tabela funcionário). A procedure deve calcular a comissão de todos os funcionários domês informado se o parâmetro código funcionário for igual a zero ou caso informado o código do funcionário, calcular apenas a comissão do funcionário informado. 
Parâmetros: 
o Mês: o número referente ao mês a ser consultado. 
o Ano: ano a ser consultado. 
o Código do funcionário: “0” para todos os funcionários ou o código do funcionário. 
Campos Exibidos: 
o nome funcionário, valor da comissão. 
create or replace ret_comissao_funcionario( p_codigo in number,
p_mes in number,
p_ano in number
)
is
curso c_comi(cp_codigo in nunber) in 
select f.nome,
f.comicao,
v.valortotal
from funcionario f,
venda v
where f.id_funcionario = v.funcionario_venda
and to_char(v.date,'mm/yyyy') = to_char(p_mes)||'/'to_char(p_ano)
and f.id_funcionario = nvl(cp_codigo,f.id_funcionario); 
v_comicao number; 
begin
if p_codigo = 0 then
for r_comi in c_comi(null)
loop
v_comicao := r_comi.valortotal * comicao;
dbms_output.put_line('Nome: '||r_comi||' Comissão:'||v_comicao);
end loop;
else
for r_comi in c_comi(p_codigo )
loop
v_comicao := r_comi.valortotal * comicao;
dbms_output.put_line('Nome: '||r_comi||' Comissão: '||v_comicao);
end loop;
end if;
end;
• Procedure inc_item_venda. Insere o item de venda nobanco de dados, calculando valor total do item baseado em seu preço unitário, quantidade e desconto. A procedure deve calcular o valor do desconto conforme o tipo informado como parâmetro (porcentagem ou valor). 
Parâmetros: 
o Código venda: código da venda que o item faz parte. 
o Código produto: código do produto. 
o Quantidade: quantidade do produto a ser vendido. 
o Valor Unitário: preço de venda do produto. 
o Tipo do desconto: “p” para porcentagem ou “v” para valor. 
o Valor do desconto: zero para nenhumdesconto ou valor. 
create or replace procedure inc_item_venda(p_cod_venda number,
p_cod_produto number,
p_qtd number,
p_valor_uni number,
p_tipo_desconto VARCHAR2,
p_valor_desconto number) is
v_valor number;
v_valor_desconto number;
begin
if p_tipo_desconto = 'v' then
v_valor := (p_valor_uni * p_qtd) - p_valor_desconto;
v_valor_desconto := p_valor_desconto;
elsif p_tipo_desconto = 'P' thenv_valor_desconto := (p_valor_uni * p_qtd) * (p_valor_desconto / 100);
v_valor := (p_valor_uni * p_qtd) - v_valor_desconto;
else
raise_appication_error(-20100, 'Valor inesistente');
end if;
begin
insert into itemvenda
(iditemvenda,
venda_itemvenda,
produto_itemvenda,
qtd,
valorunitario,
valordesconto,
valortotal)
values
(seq_itemvenda.nextvall,
p_cod_venda,
p_cod_produto,
p_qtd,
p_valor_uni,
v_valor_desconto,
v_valor);
exception
when others then
raise_appication_error(-20100, 'Erro ao inserir item de venda');
end;
commit;
end;
Triggers
Um TRIGGER ou gatilho é um objeto de banco de dados, associado a uma tabela, definido para ser disparado, respondendo a um evento em particular. Tais eventos são os comandos da DML (Data Manipulation Language): INSERT, REPLACE, DELETE ou UPDATE. Podemos definir inúmeros TRIGGERS em uma base de dados baseados diretamente em qual dos 
comandos acima irá dispará-lo, sendo que, para cada um, podemos definir apenas um TRIGGER. OsTRIGGERS poderão ser disparados para trabalharem antes ou depois do evento.
Trigger atualiza_valor_venda: Após a inclusão, alteração ou exclusão de um item de venda a trigger deve somar os valores totais de todos os itens da venda que ela pertence e atualizar o campo valortotal da tabela de venda. 
create or replace triggertg_atualiza_valor_venda
BEFORE DELETE OR INSERT OR UPDATE ON itemvenda
for each row
declare
total number;
begin
select sum(totalvalor) into total 
from itemvenda;
if inserting then
update venda set valortotal = total;
elsif inserting then
update venda set valortotal = total;
elsif deliting then
update venda set valortotal = total;end if;
end;
Otimização de Consultas e Gerenciamento de Transações
Aula-tema:Processamento e otimização de consulta, Gerenciamento de transações.
A otimização ou Tanning de banco dados é sempre indicado, pois como o próprio nome sugere, Tanning é o melhoramento de algo, e no caso do banco de dados é o aumento da velocidade de resposta que se espera de uma consulta.Para que esse melhoramento sege feito, primeiramente deve-se analisar em quais operações do banco de dados, tem um tempo de resposta muito maior do que o necessário. Feito isso se verifica a instrução SQL, pois muitas vezes por uma má elaboração da instrução a performance é afetada bruscamente.
Agora será mostrado algumas dicas para otimizar uma consulta no banco de dados.
Evitar o uso de seleção total da tabela usando * .Quando você usa, o banco de dados interpreta o asterisco como a junção de todas as colunas da tabela,realizando uma conversão. E sem mencionar que com isso, o banco irá selecionar todas as colunas da tabela sem necessidade.
Usar o DISTINCT apenas em casos estritamente necessários, pois para a elaboração desta clausula é muito custoso, em questão de processamento para o banco de dados, e quando utilizar o DISTINCT verifique de usar clausula WHERE.
Tomar cuidado com o ORDER BY, pois a ordenação de registro de uma tabela é um recurso importante, mas também deve ser utilizada com cautela. Imagine umatabela com milhares de registros e a seguinte instrução SQL:
SELECT Nome, Telefone FROM CLIENTES ORDER BY Nome
Ao rodar essa instrução, o banco de dados terá que ler todos os nomes dos clientes da tabela e ordenar por ordem alfabética para mostrar o resultado. O tempo de resposta dessa instrução, ira demorar muito para selecionar todos os dados e depois ordenados na ordem desejada. 
Usar JOIN em excesso pode atrapalhar no desempenhoporque, uma vez que o banco de dados irá traçar todo um plano de execução para associar todas as tabelas. Para cada JOIN, o banco de dados precisa “armazenar” a informação das chaves do relacionamento para garantir o retorno esperado.
Evitar cálculos desnecessários no banco ajuda no desempenho, pois se imaginarmos uma situação em que temos uma tabela de vendas onde é são armazenados os seguintes dados. ID_VENDA, QUANTIDADE e PRECO_UNITARIO: 
Quantidade: 5
Preço unitário: 20,00
Total: 100,00
Nosso objetivo é obter o total da venda, para isso podemos realizar um calculo direto no banco com o comando:
SELECT IDVENDA,QTDE, PRECOUNITARIO * QTDE AS TOTAL FROM VENDA;
A instrução que irá ter uma retorno mais rápido será a que já tem esse dado gravado no banco, por que não foi preciso realizar o calculo.
Foi analisado todas as instruções da etapa 1 e etapa 2 e não foi considerado necessário a otimização desses comando para o desempenho do banco de dados.
Gerência de Transações
A transação é uma unidade de execução de programa que acessa e,possivelmente, atualiza vários itens de dados. Geralmente, é o resultado da execução de um programa escrito em uma linguagem de manipulação de dados de alto nível como o C, JAVA, C#,PHP,etc. 
É chamada transação toda execução de um programa queacessa ou modifica um banco de dados. Quando uma ou mais transações são submetidas a um SGBD, o mesmo deve garantir que todas as transações sejam completadas com sucesso e que as transações não tenham efeito direto no banco de dados e em outras transações.
Para que o SGBD consiga assegurar a integridade do banco ele segue as regra da ACDI que são:
Atomicidade: A execução de uma transação deve ser atômica, ou todas as ações são executadas, ou nenhuma é;
Consistência: Cada transação executada isoladamente deve preservar a consistência do banco de dados; 
Isolamento: Cada transação deve ser isolada dos efeitos da execução concorrente de outras transações;
Durabilidade: Toda transação que for finalizada de forma bem-sucedida deve persistir seus resultados em banco mesmo na presença de falhas no sistema.
A consistência dentro do SGBD é muito importante para que não o corra modificações de forma desordenada, Exemplo:
Uma transferência de fundos entre contas não alteram a quantia total de dinheiro nas contas. 
O isolamento deve garantir que duas transações, executadas concorrentemente, devem ter o mesmo resultado se executado em ordem serial.
Exemplo: T1 concorrente com T2 
Serializada: T1, T2 ou T2, T1. 
Atomicidade é uma questão muito importante dentro do SGBD, pois uma transação interrompida no meio da execução pode causar inconsistência no banco. Para evitar essas falhas o SGBD usa um sistemas de escalonamento, que nada mais é do que uma lista de ações que devem ser seguidas.Existem alguns tipos de escalonamento:
Escalonamento completo: O escalonamento insere, para todas as transações, as ações de abort ou commit; 
Escalonamento serial: O escalonamento não intercala as ações de transaçõesdiferentes; 
Escalonamento equivalente: Para qualquer estado da base de dados, o efeito de executar um primeiro escalonamento é idêntico ao efeito de executar um segundo escalonamento;
Escalonamentoserializável: Escalonamento equivalente a alguma execução serial das transações. 
No caso de haver falha na transação o SGBD deve manter o log do erro, contendo todas as ações executadas pelo usuário, para que essas posam ser desfeitas. O log também é usado para a durabilidade, por exemplo, se haver uma que do sistema antes que todas as mudanças sejam feitas em disco, o SGBD usa esse log para restaurar o banco quando o sistema for reiniciado.
Banco de Dados Distribuídos e Data Warehouse.
Um sistema de banco de dados distribuído (BDD) consiste em um relação de nós, cada qual podendo participar na execução de transações que acessam dados em um ou mais nós. Em um sistema de banco de dados distribuído, o banco de dados é armazenadoem diversos 
computadores(nós). Os computadores, em um sistema distribuído, comunicam-se uns com os outros por intermédio de vários meios de comunicação, tais como: redes de alta velocidade, redes sem fio ou linhas telefônicas, eles não compartilham a memória principal e o relógio.
A diferença principal entre sistemas de banco de dados centralizados e distribuídos é que no primeiro os dados estão localizados em um único lugar, enquanto que no outro os dados residem em diversos locais. Esta distribuição de dados é motivo de muitas preocupações e dificuldades.
Os processadores em um sistema distribuído podem variar em tamanho e função, podendo incluir microcomputadores, estações de trabalho, minicomputadores e sistemas de computadores de uso em geral. Estes processadores são geralmentechamados de nós, dependendo do contexto no qual eles estejam mencionados. Usa-se principalmente o termo nó (lugar, posição), a fim de enfatizar a distribuição física destes sistemas
Armazenamento Distribuído dos Dados
Uma relação r (ou tabela) possui diversos enfoques para o armazenamento em um banco de dados distribuído (BDD):
Replicação: o sistema mantém réplicas idênticas da relação, onde cada réplica é armazenada em sites diferentes, resultando na replicação dos dados
Fragmentação: a relação é particionada em vários fragmentos, onde cada fragmento é 
armazenado em um site diferente
Replicação e fragmentação: a relação é particionada em vários segmentos, e o sistema mantém diversas réplicas decada fragmento
Replicação de dados
A replicação de dados significa que um determinado objeto de dados logico pode possuir diversos representantes armazenados, em nós. O grau de suporte para a replicação é um pre-requisito para atingir o verdadeiro potencial de um sistema distribuído.
Fragmentação de dados
Uma relação é dividida em fragmentos, onde cada fragmento contem informação suficiente para permitir a reconstrução da relação original.
Existem duas formas de fazer a fragmentação:
Fragmentação Horizontal: divide a relação separando as tuplas de r em dois ou mais fragmentos.
Fragmentação Vertical: divide a relação pela decomposição do esquema R da relação r.
Fragmentação e Replicação de Dados
As técnicas de fragmentação e replicação podem ser aplicadas sucessivamente a uma mesma relação.Um fragmento pode ser replicado, e as réplicas podem ser fragmentadas novamente e assim por diante.
Processamento de consultas distribuídas
A transparência para leitura é mais fácil de se conseguir e manter do quea transparência para atualização. O maior problema para a atualização é garantir que todas as réplicas e fragmentos sejam atualizados, após uma atualização em uma das réplicas ou fragmentos. A atualização deve ser prolongada para todas as cópias (réplicas e fragmentos) existentes no sistema.
Um dos fatores mais importantes no desempenho de uma consulta, em uma base centralizada, 
é a quantidade de acesso a disco necessária para atingir oresultado. Em um banco distribuído os problemas aumentam, pois existe também a preocupação com a transmissão de dados na 
rede. Um fator interessante para a consulta realizada em uma base distribuída é que para os diversos sites podem processar partes da consulta em paralelo.
Na realização de uma consulta simples (trivial), como consultar todas as tuplas da relação CONTA, pode caracterizar um processamento não tão trivial, pois CONTA pode estar fragmentada, replicada ou ambas.
Transações
O acesso a diversos itens de dados em um sistema distribuído é normalmente acompanhado de transações que têm de preservar as propriedades ACID:
A: Atomicidade
C: Consistência
I: Isolamento
D: Durabilidade
Caracteristicas da ACID
Atomicidade: Todas as operações da transação são refletidas corretamente no BD ou nenhuma será.
Consistência: A execução de uma transação isolada preserva a consistência do banco de dados.
Isolamento: Cada transação não toma conhecimento de outras transações concorrentes.
Durabilidade: Depois da transação completar-se com sucesso, as mudanças que ela faz no banco de dados persistem.
Tipos de transação
Locais: mantém acesso e atualizam somente a base de dados local.
Globais: mantém acesso e atualizam diversas bases de dados locais.
Funçõesadicionais
Rastreamento de dados.
Processamento de consultas distribuídas.
Gerenciamento de transações distribuídas.
Gerenciamento de dados replicados.
Recuperação de banco de dadosdistribuído.
Segurança.
Gerenciamento do diretório distribuído
Vantagens
Gerenciamento de dados distribuído com níveis diferentes de transparência. 
Transparência de distribuição ou de rede.
Transparência de replicação.
Transparência de fragmentação.
Melhoria da confiabilidade e na disponibilidade.
Melhoria no desempenho.
Expansão mais fácil.
Data Warehouse
Data Warehouse, ou armazém de dados, é um repositório de dados, um servidor onde informações coletadas dos diversos sistemas da empresa são tratadas e armazenadas, com o fim específico de serem utilizados para extração e tomada de decisões. É um servidor de dados estratégicos. 
Data Mining, ou mineração de dados, é o processo de "mineração" ou extração de dados do 
data warehouse, ou seja, o próprio processo de coleta de dados para elaboração de relatórios para tomada de decisão. A mineração de dados consiste em buscar padrões e combinações de dados que ajudem a melhorar os negócios. Exemplo: Extraindo-se os dados de vendas de supermercado descobriu-se que a venda de cervejas aumenta quando se aumenta a venda de fraldas descartáveis. Motivo: quando os papais vão ao supermercado comprar fraldas aproveitam para comprar uma geladinha. A partir daí o gerente do supermercado decidiu colocar uma "ilha" de cerveja no corredor de acesso as fraldas, e aumentou ainda mais as vendas dos dois produtos. Esse é um exemplo de data mining de sucesso.
Bibliografia
http://corporate.canaltech.com.br/
http://www.devmedia.com.br
http://www.postgresql.org

Outros materiais