Conceitos
Software
- Entre o banco de dados físico (dados armazenados) e os usuários do sistema encontra-se o software Gerenciador de Banco de Dados, SGBD ou DBMS
- Todas as solicitações dos usuários de acesso ao banco de dados são manipulados pelo SGBD
- Recursos providos pelo SGBD:
- Criação de tabelas
- Inserção de dados
- Recuperação de dados
- etc
- Função relevante: isolar os usuários do Bancos de Dados dos detalhes a nível de hardware fazendo com que os usuaŕios do SGBD tenham um visão acima do nível mais elevado que não exija conhecimentos técnicos aprofundados.
Profissionais
- Projetistas de BD Lógico: Profissionais com habilidade suficiente para interpretar as necessidades de armazenamento de dados e criar os modelos de bancos de dados utilizados pelo projetista para sua criação
- Projetistas de BD Físico: Especialistas na técnica de criar estruturas físicas envolvendo hardware, software e processos que permitar armazenar grandes bases de dados e operá-las por meio de mecanismos eficientes como discos, robôs, rotinas, fitas e demais aparelhos componenentes do sistema como um todo
- Implementadores de BD: Responsáveis por receber o modelo (projeto) do Banco de Dados e torná-lo real com a utilização de uma ferramenta (software)
- Programadores de aplicações: responsável pela definição dos programas de aplicação que usam o banco de dados usando linguagens como Java, DotNet, PHP, etc. Estes programas podem ser executados de forma online ou ainda processamento em batch
- Usuários finais: Interage com o sistema a partir de um equipamento acessando instantaneamente o BD por meio de uma das aplicações desenvolvidas para esse fim ou alguma interface integrante do sistema, por exemplo, o padrão SQL.
- Administradores de BD ou DBAs: Profissional com alto nível de capacitação técnica que tem a responsabilidade central sobre os dados operacionais.
Banco de Dados
- Modelo Arcaico:
- Kardex, Arquivo: Um conjunto de fichas que registravam os dados de objetos ou eventos
- Normalmente em papel e dispostos segundo uma tabelas com linhas e colunas numeradas com uma etiqueta na parte superior visível
- Ordenação: Alfabética ou numérica, na parte externa do armário e internamente por pastas com etiquetas
- Infraestrutura: Armário de ferro ou de madeira, com gavetas que mantinham as pastas superpostas ou suspensas por meio de guias
- Modelo antigo:
- Rotinas de tratamento de arquivos no próprio código
- Cada desenvolvedor tinha que aprender aspectos físicos de tratamento de arquivo, criava o programa segundo sua própria visão e capacidade e disponibilizava para a execução
- Fatores inconvenientes [Alves, William Pereira]:
- Ausência de controle de acesso concorrente de vários usuários
- Problemas de tempo, integridade e eficiência na criação consulta e cálculo dos dados
- Impossibilidade de se executar mais de um processo ao mesmo tempo num arquivo de dados
- Os SGBDs não estavam preparados para suportar multiprocessamento
- A definição da estrutura do arquivo armazenada no próprio código do aplicativo
- A dificuldade no suporte e manutenção dos códigos citados anteriormente
- Inconsistência, redundância, dificuldade de acesso e isolamento dos dados
- Redundância inadequada dos dados em função de mal projeto
- Segurança dos dados
- Facilidade no acesso indevido por parte de pessoas não autorizadas
- Duplicidade de informações entre os vários arquivos
- Projetos mal estruturados podem gerar informações repetidas
- Aplicação dependente dos dados
- A estrutura de arquivos armazenada no código cria uma dependência em relação ao desenvolvedor
- Incompatibilidade dos formatos de arquivos
- Cada fornecedor gerando sua própria solução criou uma Torre de Babel de soluções de BD.
- Ausência de controle de acesso concorrente de vários usuários
- Rotinas de tratamento de arquivos no próprio código
- Modelo Atual:
- SGBDs mantidos em discos com enorme capacidade
- O custo dos HDs reduziu drasticamente
- Formato eletrônico organizados em tabelas com associações entre elas de alta performance
- A divisão de tabelões em bases menores e relacionadas é eficientemente implementada pelo sistema
- Ordenação: Baseada em chaves para fácil localização e recuperação no padrão SQL
- A possibilidade de ordenalção baseada no campo chave e em campos secundários trouxe uma versatilidade imensa aos BDs
- Infraestrutura: Centralizada e mantida normalmente em estruturas cliente-servidor ou na nuvem
- Hoje em dia, é simples armazenar uma base de dados, tanto numa estrutura local quanto em outro local que nem se sabe onde está
- Características:
- Aplicativos não tem nenhum conhecimento dos detalhes relativos aos métodos de gravação e leitura física dos dados nas tabelas
- Diversos programas podem acessar um mesmo BD
- SGBD oferece alta produtividade no desenvolvimento e manutenção dos softwares aplicativos
- Qualidade dos SWs se tornou maior
- Informações extraídas se tornaram mais confiáveis e com maior credibilidade
- SGBDs mantidos em discos com enorme capacidade
- Modelos em expansão:
- Distribuído
- NoSQL
- Semânticos
- ...
- Banco de Dados: Conjunto de dados relacionados entre si armazenados segundo uma determinada lógica de forma que possar ser recuperados quando necessário. Possui 3 características básicas [Alves, William]:
- Um BD representa uma porção do mundo real (minimundo) => interação com o mundo real
- Um BD é um conjunto lógico e ordenado de dados que possuem algum significado => fonte de informação
- UM BD é construído e povoado com dados que têm um determinado objetivo, com usuários e aplicações desenvolvidas para manipulá-los=> público que demonstra interesse nos dados.
- Porte de um BD:
- Pode ser pequeno, médio ou grande
- Independente do tamanho, deve ser confiável, eficiente e acessível
- Exemplos de porte de banco de dados:
- Banco: com abrangência nacional => grande porte
- Biblioteca de uma escola => médio porte
- Base de conhecimento local => pequeno porte
- Videos no youtube => grande porte
- etc
SGBD
- Um Sistema Gerenciador de Banco de Dados é uma coleção de programas que permite aos usuários criar e manter um banco de dados
- É um sistema de software de uso geral que facilita o processo de definição, construção, manipulação e compartilhamento de bancos de dados entre diversos usuários e aplicações
- Definir um banco de dados envolve especificar os tipos, estruturas e restrições dos dados a serem armazenados cuja informação descritiva pode ser mantida em dicionários ou catálogos chamados de metadados
- A construção do banco de dados é o processo de armazenar os dados em algum meio controlado pelo SGBD
- A manipulação de um banco de dados inclui funções como consulta ao banco de dados para recuperar dados específicos, atualização de dados e geração de relatórios ou consultas
- O compartilhamento de um banco de dados permite que diversos usuários e programas acessem-no simultaneamente
- Além dessa funções, um SGBD permite:
- Criação de consultas com base em padrões pré-definidos
- Controle e geração de transações fazendo com que dados sejam lidos ou gravados no banco de dados
- Proteção do sistema contra defeitos (ou falhas) de hardware ou software
- Controle e proteção de segurança contra acesso não autorizado ou malicioso
- Escalabillidade, ou seja, capacidade de evoluir e crescer de acordo com as demandas
- Controle de redundância evitando replicações de dados e estruturas
- Garantia de restrições de integridade
- Backup e recuperação de dados.
- Passos para a criação de um BD
- Especificação
- Análise de requisitos
- Projeto Conceitual
- Projeto Lógico
- Projeto Físico
- Arquiteturas:
- Cliente-Servidor
- Distribuída
- Móvel
- ...
- Soluções disponíveis:
- Interbase
- MySQL
- Access
- Oracle
- PostgreSQL
- Firebird
- Informix
- HSQLDB
- IBM DB2
- mSQL
- SQL Server
- TinySQL
- JADE
- ZODB
- Sybase
- Access
- Visual Foxpro
- etc
- O que se espera de um BD?
- Permitir aos usuários a criação de novas bases de dados e especificação de seus esquemas (estrutura lógica de dados) usando uma DDL (data-definition language)
- Dar aos usuários a habilidade para consulta aos dados e modificá-los usando uma linguagem apropriada normalmente chamada de DML (data-manipulation language)
- Suportar o armazenamento de grandes quantidades de dados (terabytes ou mais) por um longo período de tempo com acesso eficiente
- Habilitar a durabilidade, a recuperação do banco de dados face a falhas, erros de vários tipos ou mal uso intencional
- Controlar o acesso de muitos usuários simultâneos sem permitir interações inesperadas (isolamento) e sem acões sobre os dados que sejam executadas parcialmente mas não completamente (atomicidade)


