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