Bancos de dados

Propaganda
Banco de dados
Prof. Emiliano S. Monteiro – 5º.Sem. Licenciatura
Quando não usar um DB ?
• Aumento dos custos com: Investimentos iniciais elevados em
hardware, software, treinamento e licenciamento, segurança,
controle de recuperação e integridade.
• É possível que se utilize arquivos independentes para armazenar
dados quando...
• O BD é aplicações são simples e não são alterados
• Existem exigências de tempo real
• Acesso multi usuário não é necessário
SGBD x SO
• SGBD – Sistema gerenciador de banco de dados
• SO – Sistemas operacionais
SGBD x SO
• Ambos suportam programação concorrente internamente ou em um
nível superior. Isto quer dizer que seus núcleos são na maioria multithread, e em um nível superior é que as aplicações que devem
suportar sobre eles também podem ser multithread.
Consequentemente temos competição no sistema computacional no
nível do SO, no SGBD e no nível de aplicações do usuário e
paralelismo também. Os SGBDR ao suportarem threads aumentam o
paralelismo interno possibilitando a execução várias tarefas
simultâneas. Isto é bom e ao mesmo tempo causa problemas de
Impasse e Concorrência, sincronização e comunicação entre
processos
SGBD x SO
• Segurança: autenticação e controle de acesso. Todo SO moderno
suporta pelo menos um mecanismo de autenticação. Com exceção
dos SO da Microsoft que possuem sistemas de autenticação fracos e
só foram melhorados com as últimas versões o Unix e Novell Netware
já contavam com autenticação desde seu nascimento. Os SGBD
também! É a mesma coisa! Para o usuário poder usar o banco de
dados ele deve ter uma conta e os SGBD possuem mecanismo para
que políticas de contas sejam aplicadas, mantidas e auditadas. Com
relação ao controle de acesso, alguns sistemas como o Unix e Novell
Netware podem restringir o uso de determinadas partes do sistemas
para determinados usuários, os SGBD também
SGBD x SO
• Criptografia. O Unix trabalha com criptografia a décadas, o OpenBSD
é um bom exemplo disso, considerado um dos SO mais seguros do
mundo. Hoje os bancos de dados podem ser totalmente
criptografados, podemos criar conexões seguras entre os clientes e o
banco, apenas algumas tabelas podem ser criptografadas ou até
mesmo algumas colunas, fica a gosto do administrador do banco.
Porém é bom lembrar que quando maior o nível de segurança
adquirido com a criptografia maior o tempo de espera para que os
dados sejam decriptografados.
SGBD x SO
• Compactação. Reduzir o tamanho de dados ocupados no disco, o SO
Unix possui alguns utilitários para realizar esta tarefas que são mais
velhos do que eu, por exemplo o TAR e outros como o gzip, compress,
split, etc. Nos SGBD compactar dados é uma tarefa que pode ser
realizada pelo administrador porém vale lembrar aqui a mesma dica
que foi anteriormente mencionada, o tempo de descompactação
pode significar demora para o usuário.
SGBD x SO
• Problemas de fragmentação. A fragmentação interna e externa são
problemas que os SO passam ao alocar de forma dinâmica espaços na
memória principal para os processos, este problema também existe
nos SGBD quando tratam de memória principal e estruturas de
armazenamento permanente.
SGBD x SO
• Como os dados são armazenados? Para a maioria dos usuários de
SBGD os dados estão em tabelas! Porém toda a estrutura do banco
geralmente está em um arquivo inclusive os metadados com vários
tipos de ligações entre si, para armazenar isto em disco nem sempre
foram usadas estruturas em tabelas, ainda hoje podem ser estruturas
diferenciadas e híbridas, como no caso dos SO, para o usuário usar
um gerenciador de arquivos e ver o sistema de arquivos em forma de
árvores o faz pensar que seu hd está organizado assim, mas ele não
sabe que existem estruturas de listas ligadas e árvores que realizam o
serviço de armazenagem e auxiliam na recuperação dos dados.
SGBD x SO
• Controle de I/O, gerenciamento de memória, busca de dados,
distribuição de dados, etc. São questões técnicas do funcionamento
interno dos SO que existem também nos SGBD.
CMD
MySQL command line client
Tipos de usuários
• Usuários finais, usuários de aplicações e usuários de geradores de
relatórios
• Programadores
• DBA (database administrator) Administradores de banco de dados.
As responsabilidades de um administrador de
banco de dados pode incluir as seguintes tarefas:
1. Instalar e atualizar as ferramentas de servidor de banco de dados e de
aplicativos
2. Alocar armazenamento de sistema e planejamento de requisitos de
armazenamento futuras para o sistema de banco de dados
3. Modificando a estrutura de banco de dados, conforme necessário, a partir de
informações dadas por desenvolvedores de aplicativos
4. Inscrever utilizadores e manter a segurança do sistema
5. Assegurar o cumprimento contrato de licença do fornecedor de banco de
dados
6. Controlar e monitorar o acesso do usuário ao banco de dados
As responsabilidades de um administrador de
banco de dados pode incluir as seguintes tarefas:
1.
2.
3.
4.
5.
6.
Monitoramento e otimização do desempenho do banco de dados
Planejamento para backup e recuperação de informações de banco de dados
Manter os dados arquivados
Backup e restauração de bancos de dados
Como entrar em contato fornecedor de banco de dados para suporte técnico
Gerando diversos relatórios através da consulta da base de dados como por
necessidade
Razões para o fracasso dos DBA
• Segundo James Martin, os principais problemas são os seguintes (resumidos):
1.
2.
3.
4.
5.
6.
Prevalecem problemas organizacionais
Problemas humanos, discordância na definição de dados
Ferramentas apropriadas não foram usadas
Metodologias não foram compreendidas
Modelos complexos para serem gerenciados pelos homens (ao invés máquinas!)
Modelagem muito demorada
SGBD x Arquivos de dados
• Basicamente hoje podemos guardar dados em: a) bancos de dados
em arquivos e b) de sistemas gerenciadores de bancos de dados.
• Os bancos de dados em arquivos é o arquivo (que pode ser
considerado uma das menores porções lógicas do sistema de arquivos
ao qual um usuário e suas aplicações tem acesso) é o container de
seus dados, dados estes que somente seus criador a aplicação que
manipula este tipo de arquivo tem acesso.
• Já os Sistemas Gerenciadores de Bancos de Dados (SGBD) são
software capazes de guardar vários tipos de dados, grandes
quantidades de dados de forma mais organizada, rápida, sofisticada,
segura e estruturada.
Bancos de dados em Arquivos
• Qualquer arquivo no computador pode ser considerado um banco de
dados do ponto de vista de seu usuário.
• Por exemplo: para alguns usuários, seus arquivos de texto criados no
editor de texto são um banco de dados, para outros, os arquivos de
tabelas e planilhas criados em uma planilha eletrônica são um tipo de
banco de dados.
• Formatos populares de arquivos para armazenar dados:
• DBF, XML, XLS, CSV
SGBD
• São programas específicos para gerenciar grandes bancos de dados.
Geralmente existe um arquivo que contém todas as tabelas, índices, visões,
consultas, objetos dos sistema, etc. E o SGBD é quem controla esse
arquivo. É criado um arquivo por banco.
• Exemplos de SGBD: SQL Server, PostgreSQL, Oracle, MySQL, etc.
• O SGBD permite a integração de dados dentro da empresa, vários usuários
podem acessar as mesmas parcelas de dados.
• O SGBD pode ser visto como um hub para o transito de dados entre
departamentos diferentes.
• Isola usuários dos detalhes usados para armazenar e gerenciar as
estruturas de armazenamento.
Os 3 níveis da arquitetura
• Nível interno: é o mais próximo ao armazenamento ao armazenamento físico
(trata da forma como os dados são armazenados)
• Nível externo: é o mais próximo dos usuários, é a forma como os dados são
vistos pelos usuários.
• Nível conceitual: é o nível abstrato que corresponde a totalidade dos dados, é
a visão do conjunto total dos dados dos usuários.
Nível externo
(visões do usuário individual)
Nível conceitual
(visões do conjunto de usuários)
Nível interno
(visões do armazenamento)
Usuário A1
Usuário A2
Programa X
(linguagem
Y) + SQL
Programa X
(linguagem
Y) + SQL
Esquema
externo A
Usuário B1
Visão
externa A
Programa Z
(linguagem
K)+ SQL
Programa Z
(linguagem
K)+ SQL
Esquema
externo B
Visão
externa B
Mapeamento A
externo/conceitual
Esquemas
mapeados,
construídos e
mantidos
pelo DBA
Esquema conceitual
Usuário B2
Usuário B3
Programa Z
(linguagem
K)+ SQL
Mapeamento B
externo/conceitual
Visão
conceitual
Mapeamento
conceitual/interno
Definição de
estrutura de
armazenament
o (esquema
interno)
Banco de dados armazenado (visão interna)
Adaptado de: Date, C.J. Introdução a sistemas de bancos de dados. 4ª. Edição. Campus. São Paulo, 1991. p33.
SGBD
MariaDB
Diagrama detalhado...
Diagrama simplificado...
Números de porta
•
•
•
•
•
•
•
Oracle
MySQL
SQL Server
MongoDB
PostgreSQL
Firebird
Interbase
1521
3306
1433
27017
5432, 5433
3050, 3051
3050, 3060
• Oracle número de porta:
http://www.red-database-security.com/whitepaper/oracle_default_ports.html
MySQL FORK
MySQL
OurDelta
Drizzle
https://launchpad.net/drizzle http://ourdelta.org/
MariaDB
WebScaleSQL
Percona Server
https://mariadb.org/ http://webscalesql.org/ https://www.percona.com/
PostgreSQL FORK
• http://pt.slideshare.net/pgconf/elephant-roads-a-tour-of-postgres-forks
• https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases
PostgreSQL FORK
• http://pt.slideshare.net/pgconf/elephant-roads-a-tour-of-postgres-forks
• https://wiki.postgresql.org/wiki/PostgreSQL_derived_databases
MySQL gratuito online
A linguagem utilizada pelo banco
• A linguagem utilizado pelo SGBM é a SQL (structured query language)
– linguagem estruturada de consulta.
• SQL é uma linguagem de consulta interativa como de programação.
• Pode ser usada em vários programas de consulta como embutida e
outras linguagens de programação (Cobol, C#, PHP, ObjectPascal,
Basic, Fortran, C++, e diversas outras...)
SQL
• Linguagem de definição de dados (DDL – data definition language)
• Principais instrução são:
• Create table, create view, create index, alter table, drop table, drop view e
drop index
CREATE TABLE tblClientes
(
PersoaID int,
Nome varchar(255),
CEP varchar(255),
Endereco varchar(255),
Cidade varchar(255),
UF(255)
);
SQL
• Linguagem de manipulação de dados (DML – data manipulation language)
• Principais instrução são:
• insert, update e delete
• Exemplo de insert:
• INSERT INTO tblClientes (Nome, Endereço, Cidade, CEP, UF) VALUES (‘BOB',‘Av. Getulio Vargas
21',‘Cuiaba',‘78053500',‘MT’);
• Exemplo de update:
• UPDATE tblClientes SET Nome=‘WILL', Cidade=‘Caceres‘ WHERE Nome=‘BOB';
• Exemplo de delete:
• DELETE FROM tblClientes WHERE Nome=‘WILL' AND Cidade=‘Caceres';
SQL
• Linguagem de consulta de dados (DQL – data query language)
• Principais instrução são:
• Select
• Exemplo do comando select:
• SELECT Nome, Cidade FROM tblClientes WHERE Cidade=‘Caceres’
Referências
Download