Documente Academic
Documente Profesional
Documente Cultură
Apresentao
Ementa
Competncias e Habilidades
Segurana de Dados em S.O. Sistemas de Cpia e Recuperao Poltica de Segurana e Integridade de Banco de Dados Controle de acesso de usurio e privilgios Uso da DCL, administrao em terminal Auditoria de Sistemas Ferramentas de Administrao de banco de dados Criao e manuteno de Dados Analise comparativa dos SGBD existentes
Plano de Aula
Avaliao
Duas avaliaes da instituio valendo +-75% da nota Uma ou Duas atividades valendo +-15% da nota Frequencia podendo valer at 10% da nota
As Datas das atividades e provas dependem do calendario academico, e o plano de aula ser reajustado.
Histrico
Histrico
Pesquisa e Explanao
Projetando
Projetando
Projetando
Projetando
Projetando
Projetando
Procurar Comportamentos/Repeties/Sazonalidade
Projetando
Procurar Comportamentos/Repeties/Sazonalidade
Comprar melhor
Projetando
Projetando
Atributos Relacionamento
Dicionrio de Dados
Projetando
Padronizao do Conhecimento
Fixando
SEGURANA
15 minutos Discusso
SEGURANA
SEGURANA
A questo segurana em banco de dados vista por muitos prismas Segurana Lgica
SEGURANA
A questo segurana em banco de dados vista por muitos prismas Segurana Lgica Segurana Fsica
SEGURANA
SEGURANA
SEGURANA
Multi-Usurio/Transao
Se os usurios possurem as mesmas permisses, com certeza em algum momento, podem e vo executar tarefas que podem ser concorrentes, ou at conflitantes.
Transaes
DTL: Data Transaction Language(Linguagem de Transao de Dados) Permite criar algoritmos para a manuteno das informaes no banco(I/A/E).
Transaes
Comandos especficos:
BEGIN TRANSACTION Marca o inicio do tratamento da transao, fazendo-as pendentes. END TRANSACTION Marca o final do tratamento da transao pendente. COMMIT Efetiva as modificaes pendentes no banco. ROLLBACK Desfaz todas as modificaes pendentes.
Transaes
Para que o Banco perceba o que uma transao, necessrio explicitar onde o inicio, e tambm o seu final, de maneira simplificada, a transao sera todo e qualquer comando padro SQL, que estiver entre: BEGIN TRANSACTION/END TRANSACTION Alm disto, deve-se concluir com: COMMIT ou ROLLBACK
Transaes
Propriedades de uma Transao: (ACID) ATOMICIDADE, ou todas sero feitas ou nenhuma. CONSISTNCIA, a transao executada sempre deve deixar o banco em estado consistente. ISOLAMENTO, apesar de vrias transaes executarem simultaneamente, cada qual no pode interagir, nem afetar o resultado de outra. DURABILIDADE, aps a concluso da transao, o estado do banco deve persistir, mesmo que haja falha no SGBD depois.
Transaes
Por isto, os Banco de Dados, conseguem isolar as tarefas, de forma que sentimos que as nossas so as nicas que esto sendo executadas.
Transaes
Mas, porque?
Transaes
Baixa de 1 unidade no estoque, na tabela estoque Se abaixo, da quantidade minma, adicionar na tabela pedidos de compra Adicionar na tabela de mais comprados Etc,..
Imaginemos um sistema de mercado, desde a execuo de uma simples compra de 1 sabonete, temos:
Transaes
Transaes
Transaes
E que de repente, acaba a fora no meio da venda. E agora?, Parou aonde? Como recuperar?
Transaes
Neste caso, como a transao no foi at o final o prprio banco deve executar um ROLLBACK, desfazendo tudo at a posio anterior a BEGIN TRANSACTION
Transaes
No caso da execuo ter tido sucesso at o END TRANSACTION, devemos executar: COMMIT ROLLBACK
Transaes
FIXAO: TRANSAO
FINALIZANDO A TRANSAO
COMMIT Confirma todas as modificaes no banco, tornando-as persistentes. ROLLBACK Desfaz tudo como se nada tivesse acontecido.
Transaes
E se percebemos aps o COMMIT, que o banco esta inconsistente com relao aos valores? A no tem mais jeito de resolver com as transactions, devemos resolv-las com algum algoritmos, em sqls normais ou em stored-procedure/triggers.
Transaes
Transaes
Cpia nova
Transaes
transao
transao
Concorrncia
O sistema de Banco de Dados foi projetado para atender vrias sesses/processos simultneas, lembrando que estas sesses esto associadas a usurios ou instancias de programas, no entanto vimos que algumas das transaes podem levar o banco a um estado inconsistente, ferindo as regras de integridade..
Concorrncia
Atualizao Perdida
serial T2 READ(X) X=X+100 WRITE(X) COMMIT READ(X) X:=X-10 READ(X) X=X=100 WRITE(X) COMMIT WRITE(X) READ(Y) Y=Y+10 WRITE\9X) COMMIT execuo No serial T2
Concorrncia
Atualizao Perdida Ocorre quando uma atualizao de uma transao sobrescrita por outra, e com valores distintos, fazendo com que uma delas seja perdida.
Concorrncia
No recuperveis
T3 T4
Concorrncia
No recuperveis
T3 T4
Concorrncia
No h milagres, a execuo mais segura, a serializada, mas perde-se a concorrncia, como permitir a execuo concorrente com a maior eficincia, ou seja com a menor quantidade de serializaes
Podemos citar trs tcnicas utilizadas no mecanismo de concorrncia. TIMESTAMP(Marcas de Tempo) VERSES LOCKING(BLOQUEIOS)
Falhas
Existem alguns fatos na vida que so imprevisveis e outros podemos ter certeza que iro ocorrer; Logo o que se resta a fazer preparar, para que o impacto seja o menor possvel. Falhas por queda de energia, quebras ou falhas nos dispositivos de armazenamento, Incndios, falhas de software e at sabotagens. Tudo isto pode levar os bancos de dados a um estado inconsistente, por isso os SGBD mais modernos possuem testes e procedimentos j incorporados para o tratamento destes problemas, O componente responsvel para o correto tratamento destas falhas chamado de RECOVERY, ou simplesmente recuperador aps falhas.
Falhas
Como as falhas, no so as mesmas, at porque os motivos so diversos, o certo de que para cada falha existe uma estrategia para o seu correto tratamento. A estrategia mais simples o Backup, mas com certeza no a mais eficiente, haja visto que desejamos que o Banco de Dados esteja o mais disponvel possvel, e voltar Backup, no uma operao rpida; E uma estrategia passiva, ou seja dependente de uma rotina agendada ou disparada pelo operador. E com certeza, a melhor abordagem preparar e usar um esquema para que a indisponibilidade seja a menor possvel, retornando o Banco ao seu estado consistente.
Falhas
Curiosamente, todo o sistema de RECOVERY baseado em redundncia de informao, mas de forma controlada, e que utilizado para a reconstruo do estado consistente.
Falhas
Curiosamente, todo o sistema de RECOVERY baseado em redundncia de informao, mas de forma controlada, e que utilizado para a reconstruo do estado consistente. LOGGING, que utilizado caso esteja ativo, isto porque em casos de falha em TRIGGERS, no h como fazer o ROLLBACK.
Falhas
Curiosamente, todo o sistema de RECOVERY baseado em redundncia de informao, mas de forma controlada, e que utilizado para a reconstruo do estado consistente. LOGGING, que utilizado caso esteja ativo, isto porque em casos de falha em TRIGGERS, no h como fazer o ROLLBACK.(SW) RAID, Sistema de Discos, espelhados, que buscam manter a integridade (HD)
Falhas
Curiosamente, todo o sistema de RECOVERY baseado em redundncia de informao, mas de forma controlada, e que utilizado para a reconstruo do estado consistente. LOGGING, que utilizado caso esteja ativo, isto porque em casos de falha em TRIGGERS, no h como fazer o ROLLBACK.(SW) RAID, Sistema de Discos, espelhados, que buscam manter a integridade (HD) BACKUP`S, Normalmente em sistemas de Discos ou Fitas
Falhas
Falhas
Falhas de Transao Erro Lgico Falha Interna ,devido entrada defeituosa ou no encontrada, estouro de limites, como tempo ou recursos. Erros Sistema Falha do Sistema
Falhas
Falhas de Transao Erro Lgico Falha Interna ,devido entrada defeituosa ou no encontrada, estouro de limites, como tempo ou recursos. Erros Sistema Falha devida a concorrncia, que no pode ser relanada, etc. Falha do Sistema Falha no Hw Falha no SGBD Falha no SO Para os casos de falha do sistema, existem meios fsicos para contornar e/ou resolver as falhas.
Integridade
Ainda para tratar de segurana e confiabilidade precisamos abordar dois aspectos ainda: Integridade do Banco Integridade dos Dados
Integridade
Podemos entender que a Integridade do Banco esta relacionada ao acesso dos objetos internos. Quais so dos usurios ?
Integridade
Podemos entender que a Integridade do Banco esta relacionada ao acesso dos objetos internos. Quais so dos usurios ?
Administrador Outros
Integridade
Administrador o Possuidor do Banco, ele tem o poder supremo, a ele tudo permitido.
Integridade
Outros No possui poder nenhum, ele somente executa tarefas que foram explicitamente autorizadas. At o direito de acesso tem de ser explicitamente permitido
Integridade
Integridade
Quando o usurio criado com este complemento significa que o usurio passa a ter o poder de administrador tambm.
Integridade
Tabelas e Vises Basicamente as permisses dizem respeito as operaes de: Create Alter Drop
Integridade
Tabelas e Vises Basicamente as permisses dizem respeito as operaes de: Create Alter Drop
Integridade
Integridade
Administrando
Administrando
Administrando
Para instalaes Pequenas at d pra trabalhar assim Mas para grandes instalaes bem ruim
Papel de Coordenador de RH, alm das permisses acima, possui tambm as de excluso de funcionrios e tambm consultar e imprimir informaes restritas, mas tambm parte das informaes podem no ser vistas.
Papeis Os funcionrios vem e vo logo todo vez que um funcionrio e contratado sem o uso de papeis, haveria um esforo muito grande em dar as permisses necessrias ao seu desempenho.
Isto tambm ocorre no seu desligamento, pois todas as permisses concedidas devem ser revogadas, e no apenas excludo do cadastro. Mas com o uso de papeis, a administrao facilitada pois o usurio ganha os papeis para atuar na execuo da sua tarefa.
Integridade
Redundncia
O Problema aqui bastante simples, se existirem vrias cpias da mesma informao em algum momento, alguma cpia ser esquecida e no atualizada. Logo o problema aqui o trabalho imenso para manter o mesmo contedo em todas as cpias e o disperdcio de espao em disco. Ou a mesma informao com grafias diferentes. Ex.: Turiau, Turiasu, Turiassu. E por a vai.
Integridade
Valores
O Problema aqui outro, fica fcil imaginar os campos apenas com numricos, caracteres, data e booleanos. No entanto alguns campos ainda podem exigir valores muito especficos para serem vlidos.
Ex.: Como Determinaramos um campo caractere de uma posio que denota-se o sexo do cliente
Integridade
Valores
O Problema aqui outro, fica fcil imaginar os campos apenas com numricos, caracteres, data e booleanos. No entanto alguns campos ainda podem exigir valores muito especficos para serem vlidos.
Ex.: Como Determinaramos um campo caractere de uma posio que denota-se o sexo do cliente O valor N seria bem vindo?
Integridade
Valores
O Problema aqui outro, fica fcil imaginar os campos apenas com numricos, caracteres, data e booleanos. No entanto alguns campos ainda podem exigir valores muito especficos para serem vlidos.
Ex.: Como Determinaramos um campo caractere de uma posio que denota-se o sexo do cliente O valor N seria bem vindo? Na realidade isto tem de ser combinado, at em questo dos usos e costumes.
Integridade
Sexo Para este caso, o usual apenas m ou f, veja estamos apenas registrando com o sexo em que o cliente veio ao mundo, e no aquilo que professado. De qualquer forma, absurdo imaginar este campo com os valores a, n, h, m, Estamos esperando m de masculino e f como feminino. Precisa ficar claro que muitos destes valores, dizem respeito as regras de negocio, bem como de usos e costumes, mas uma ajuda muito boa o prprio banco validar este tipo de informao, simplifica muito o desenvolvimento da interface
Integridade
Sexo Para este caso, o usual apenas m ou f, veja estamos apenas registrando com o sexo em que o cliente veio ao mundo, e no aquilo que professado. De qualquer forma, absurdo imaginar este campo com os valores a, n, h, m, Estamos esperando m de masculino e f como feminino. Precisa ficar claro que muitos destes valores, dizem respeito as regras de negocio, bem como de usos e costumes, mas uma ajuda muito boa o prprio banco validar este tipo de informao, simplifica muito o desenvolvimento da interface
Criptografia
Criptografia uma tcnica que esconde a informao, dificultando ou impedindo o acesso a informao para quem no conhece a chave. Textos criptografados, remonta desde a antiguidade, mas os casos mais recentes e notrios foram os casos: Ingleses x Americanos pr-independncia II Guerra Mundial, onde se tem vrias filmes e histrias sobre a mquina ENIGMA/Alem e Japonesa A tcnica se baseia em um algoritmo, que substitui letras ou palavras por outras, fazendo que o texto, no tenha sentido, para isto utilizado uma sequencia de letras/nmeros ou frases
Criptografia
Algoritmos Simtricos So algoritmos que conseguem abrir o texto usando-se uma chave, invariavelmente esta chave a mesma utilizada para a criptografia. Assimtricos So algoritmos que mesmo que se utilize a mesma chave que foi utilizada para a criptografia, no possvel retornar ao contedo original.
Criptografia
Algoritmos Simtricos So algoritmos que conseguem abrir o texto usando-se uma chave, invariavelmente esta chave a mesma utilizada para a criptografia. Uso: Informaes no Banco Assimtricos So algoritmos que mesmo que se utilize a mesma chave que foi utilizada para a criptografia, no possvel retornar ao contedo original. Uso: Senhas/Chaves de Acesso Neste caso a senha no aberta, a palavra passe/senha aberta encriptada e depois comparada com a que esta armazenada no Banco, se iguais ento o acesso vlido
Criptografia
MySql Funes: AES_Encrypt(Valor,Chave); Funo que efetua a criptografia do campo valor, utilizando o campo chave para fechar o contedo. AES_Decrypt( FieldTable ,@Chave); Funo que abre o contedo do campo FieldTable Para facilitar o acesso pode-se utilizar o ambiente do mysql Select @Chave=Chave; * Que a forma usada para abrir
Criptografia
MySql Uso: INSERT INTO MYTABLE (FIELD1,FIELD2,....,FIELDN) VALUES (ABERTO , AES_Encrypt( FIELD2 , @Chave), FIELDN); Somente o Campo FIELD2 ser encriptado, os demais permanecem abertos
SELECT FIELD1, AES_Decrypt(FIELD2,@Chave), FIELDN FROM MYTABLE; Somente o Campo FIELD2 ser aberto, os demais devem estar abertos
Criptografia
MySql Uso: INSERT INTO MYTABLE (FIELD1,FIELD2,....,FIELDN) VALUES (ABERTO , AES_Encrypt( FIELD2 , @Chave), FIELDN); Somente o Campo FIELD2 ser encriptado, os demais permanecem abertos
Criptografia
MySql Uso: SELECT FIELD1, AES_Decrypt(FIELD2,@Chave), FIELDN FROM MYTABLE; Somente o Campo FIELD2 ser aberto, os demais devem estar abertos.
Criptografia
MySql Exemplo
Criptografia
MySql
Criptografia
Apesar da maioria dos Bancos possurem algoritmos para criptografia internamente, no podemos esquecer de que sempre podemos utilizar tambm a criptografia externa, por software aplicativo, ou at de HSM (Hardware Security Module) que so dispositivos fsicos, com alta capacidade de processamento utilizados para acelerar a criptografia/decriptografia. A melhor soluo dever sempre ser analisada, depende muito do ambiente operativo, volume e tempos
Criptografia
No devemos esquecer que estes algoritmos so extremamente sofisticados, e garantem de fato a segurana, mas isto tem um custo extremamente elevado, o tempo necessrio para acessar a informao ou inseri-la bastante maior em relao ao no uso destas tcnicas. Por isto recomenda-se fortemente que a criptografia seja restrita apenas aos campos imprescindveis deixando os demais de forma aberta.
Desempenho
Sistemas de Banco de Dados, so consumidores frequente de todos os recursos disponveis de sua instalao. Eles vo usar tudo o que a maquina disponibilizar, admitindo-se que o ambiente do banco esteja devidamente preparado, seria facilmente percebido que o problema esteja no equipamento, mas isto esta longe de ser a verdade. O Fato concreto, que voc vai ser questionado quanto a performance do SGBD, e portanto a sua maior e mais difcil tarefa ser identificar onde esta o gargalo
Criptografia
Estratgia
Encontrar o Gargalo
Otimizao de Aplicao e Consultas Otimizao/Ajuste fino do Banco Otimizao do Sistema Operacional Otimizao do Hardware
Criptografia
Estratgia
Encontrar o Gargalo
Basicamente os S.O. dispe de ferramentas de administrao e analise. Em Linux os mais utilizados so ps e top Se o indicativo de cpu para us, estiver alto pode significar que o processo do usurio esta no otimizado. Otimizar Consultas Criao de ndices Atualizao de CPU Configuraes do SGBD
Criptografia
Estratgia
Encontrar o Gargalo
Se o Indicativo de memria mostrar um alto consumo, no necessriamente esteja ruim, apenas esta indicando que o banco esta fazendo uso, que pode ser at cache. Se o indicativo de swap, indicar muitas trocas, com certeza existe um problema. Otimizar as Consultas Modificar os limites de cache Adicionar memria
Criptografia
Estratgia
Encontrar o Gargalo
Se o Indicativo de I/O mostrar um alto consumo, mostrado pelo consumo de CPU para wa(wait time) mostra que os processos esto aguardando muito tempo por conta da latncia das operaes de disco (read/write) Mudar o Motor de armazenamento(storage engine) Raid10 ou Discos mais rpidos.
Criptografia
Estratgia
Encontrar o Gargalo
Reviso
Banco de Dados(Segurana)
Fsica Lgica Acesso (Grant/Revoke) Valores (Constraint/valid/Unicidade/Normalizao) Transaes (ACID) Compartilhamento/Seriao Criptografia
Permisses
Permisses
Permisses
Permisses
Permisses
Dicionario de Dados
O Dicionrio de Dados uma importante ferramenta, que permite registrar os nomes internos usados pelos arquitetos/desenvolvedores com os nomes comuns usados pelos diferentes grupos de usurios.
Permite tambm conhecer facilmente o schema do banco com os detalhamentos dos objetos internos Sendo do Tipo TABLE, os detalhes sero as chaves primarias e estrangeiras seus tipos os nomes internos e externos, bem como seus atributos de tipo, tamanho e validaes existentes.Podendo ter detalhes ligados a triggers Sendo do Tipo STORE PROCEDURE, veremos os cdigos criados(Lgica de Negcio) Sendo do Tipo USER, suas permisses
Dicionario de Dados
No MySql Workbench somente a verso comercial tem a capacidade de dicionrizar o Banco, no entanto.....
Dicionario de Dados
No MySql Workbench somente a verso comercial tem a capacidade de dicionrizar o Banco, no entanto.....
No post anterior sobre o mysql workbench, eu havia comentado que a funcionalidade de gerar um dicionrio de dados s era liberado para verso comercial. Bom, continua assim. Porm, pesquisando sobre, encontrei alguns plugins e scripts que o geram. Claro, o dbdoc que o plugin gera diferente da verso comercial do workbench. O plugin e script esto escritos em LUA, ento, se voc conhece esta linguagem pode estar modificando e melhorando o fonte.
http://javabeginners.wordpress.com/2011/12/06/gerar-dicionario-de-dados-mysqlworkbench/
Dicionario de Dados
No MySql Workbench somente a verso comercial tem a capacidade de dicionrizar o Banco, no entanto..... Plugin:
A instalao simples. No workbench v em: Scripting > Install/Plugin Mode > Selecione o plugin > OK. V em: Scripting > Plugin Manager e veja se esto habilitados. OBS: Depois de instalado, o plugin vai estar disponvel no menu Plugin > Catalog > DbDoc Write to file. OBS 2: O DBDOC s vai aparecer depois de voc ter feito a engenharia reversa na sua database e ter gerado o DER.
Base: DoctrinExport (http://code.google.com/p/mysql-workbench-doctrine-plugin/)
Dicionario de Dados
No MySql Workbench somente a verso comercial tem a capacidade de dicionrizar o Banco, no entanto..... Outro exemplo em:
local schemata= grtV.getGlobal("/wb/doc/physicalModels/0/catalog/schemata/1/tables") local i local j print("<table border='1' style='width:100%'> \n" ) for i=1, grtV.getn(schemata) do print("<tr> \n" ) print("<td colspan='5'> TABLE NAME: " .. schemata[i].name .. "</td> \n") print("</tr> \n" ) print("<tr> \n" ) print("<td>COLUMN_NAME</td> \n") print("<td>TYPE</td> \n") print("<td>NULLABLE?</td> \n") print("<td>AUTO_INCREMENT?</td> \n") print("<td>COMMENTS</td> \n") print("</tr> \n" ) for j=1, grtV.getn(schemata[i].columns) do print("<tr> \n" ) print ( " <td>" .. schemata[i].columns[j].name .. "</td> \n" ) print ( " <td>" .. schemata[i].columns[j].formattedType .. "</td> \n" )
http://tmsanchezdev.blogspot.com.br/2010/07/reporte-en-html-de-un-modelo-en.html?showComment=132197
Dicionario de Dados
No MySql Workbench somente a verso comercial tem a capacidade de dicionrizar o Banco, no entanto..... Outro exemplo em:
if (schemata[i].columns[j].isNotNull == 1) then print (" <td>" .. "NOT NULL" .. "</td> \n" ) else print ( " <td>" .. "NULL" .. "</td> \n" ) end if (schemata[i].columns[j].autoIncrement == 1) then print (" <td>" .. "AUTO_INCREMENT" .. "</td> \n" ) else print (" <td>" .. " - " .. "</td> \n" ) end print ( " <td>" .. schemata[i].columns[j].comment .. "</td> \n" ) print("</tr> \n" ) end end print("</table> \n" ) print ( "\n" )
http://tmsanchezdev.blogspot.com.br/2010/07/reporte-en-html-de-un-modelo-en.html?showComment=132197
Comparativos
Comparao entre MySQL x Oracle Preo Oracle Pago, e a verso Oracle Express
Porte Oracle usado em grandes organizaes em funo da habilidade de trabalhar com grandes volumes de dados e questes de segurana MySQL usado massivamente em vrios ambientes, inclusive os maiores especialistas em MySQL so do Facebook, onde existem cerca de 900 milhes de pessoas usando
Comparativos
Segurana Oracle possui mais recursos de segurana, como nome de usurio,senha , perfis, autenticao local, autenticao externa. MySQL usa basicamente trs parmetros, nome de usurio, senha e localizao.
Sintaxe Oracle utiliza de uma linguagem chamada PL/SQL e o SQL*Plus a ferramenta para implementao das Triggers e Stored procedures, e possui tambm ferramentas para confeco de relatrios MySQL tambm possui uma linguagem para a criao de Triggers e Stored Procedures, mas no to completo.
Comparativos
Armazenamento Oracle possui Tablespace, snapshots MySQL permite que se escolha o Engine mais adequado para cada tabela Nomes de Objeto Oracle os nomes dos objetos no schema so insensveis a caso, e geral MySQL os nomes dos objetos no schema tambm so insensveis a caso, mas em alguns casos em funo do SO passa a ser sensvel. Executando Programas e suporte a programas externos Oracle suporta varias linguagens compiladas e executadas internamente ao banco, inclusive suportando o uso de XML MySQL no suporta linguagens e tao pouco XML
Comparativos
Tabelas Temporrias Oracle as tabelas so visveis para todas as sesses/usurios e necessrio efetuar o DROP ao final de seu uso MySQL as tabelas so automaticamente "DROPADAS" ao final e as mesmas somente so visveis ao usurio da sesso Backup Oracle permite uma variedade de backup, copias quentes, copias frias, exportao, importao e datapump e tambm possui a ferramenta RMAN, que permite automatizar algumas tarefas como o backup ou restaurao com pequeno uso de comandos ou usando stored procedures MySQL possui basicamente duas ferramentas mysqldump e mysqlhotcopy, este ultimo a principio funcionando apenas em maquinas linux, e o primeiro permite que se exporte, importe ou migre a base de dados
Fonte:http://www.dbametrix.com/comp-oracle-mysql.html - 2011
Comparativos
Fixao: Pesquise em grupo, comparativo entre mysql x postgree, ou mssql x ? e comparativo entre relacional x norel em grupo 4 pessoas, para entrega