Classificação de Bancos de Dados


Quanto ao Modelos de dados


Hierárquico


  • Primeiro tipo de banco de dados
  • Conceito fundamental: registro e relacionamento pai-filho


  • Nesse modelo de dados, os dados são estruturados em hierarquias. Os registros possuem sub-registros e assim sucessivamente, formando uma ramificação semelhante a uma árvore. Dois registros são unidos por um elo, um é ascendente e outro é descendente. Um ascendente pode ter vários descendentes mas cada descendente tem apenas um ascendente direto. As raízes são os únicos registros que não possuem “PAI” e nenhum nível de ascendente pode faltar


  • Registro:
    • Coleção de valores que representam informações sobre uma dada entidade de um relacionamento


  • Relacionamento Pai-Filho:
    • Um tipo de registro do lado Pai pode se corresponder com vários (ou nenhum) tipos de registros do lado Filho


  • Uma ligação é uma associação entre dois registros
  • O relacionamento entre um registro-pai e vários registros-filhos possui cardialidade 1:N
  • Os dados organizados segundo este modelo podem ser acessados segundo uma seqüencia hierárquica com uma navegação do topo para as folhas e da esquerda para direita
  • Um registro pode estar associado a vários registros diferentes, desde que seja replicado
  • A replicação possui duas grandes desvantagens:
    • pode causar inconsistência de dados quando houver atualização
    • o desperdício de espaço é inevitável.


  • Exemplos: Um banco de Dados hierárquico representando cliente ...
    • Nome, Rua e Cidade
    • Número da Conta e Saldo
  • onde cada cliente tem uma conta


Arquivo:BD-ModHierarquico.pdf

  • Propriedades:
  1. Um tipo de registro que não possui um tipo de registro pai é denominado raiz
  2. Com exceção do tipo de registro raiz, todos os demais correspondem a tipos de registros filho dentro de um único tipo de relacionamento
  3. Um tipo de registro pai pode aparecer em qualquer número de relacionamentos
  4. Um tipo de registro filho que não possui descendentes é denominado folha



  • IMS - Information Management System: 1o. banco de dados hierárquico conhecido. Desenvolvido pela IBM e Rockwell International.


  • Considerações sobre BD hierárquico:
    • Pode ser mapeado à partir de um diagrama Entidade Relacionamento
    • Consultas complexas
    • O modelo impõe restrições à descrição do mundo real atual
    • Requer boas noções para a estruturação dos dados
    • ...


  • Problemas:
    • Complexidade dos diagramas de estrutura de árvore
    • Não pode haver ciclos no gráfico básico de um diagrama de estrutura de árvore
    • Restrições à cardinalidade dos links (de muitos para muitos (N:M) e de muitos para um (N:1))
    • Não diferencia objeto de associação com atributo
    • Ausência de facilidades de consultas declarativas
    • Necessidade de navegação por ponteiros para acesso à informações
    • Pode gerar dados incoerentes e ainda redundância


  • 1o. Exercício: Parte I
    • Pesquisar estrutura do banco de dados hierárquico
    • Desenvolver aplicação (qualquer linguagem) que permita criar uma base de dados hierárquica.
    • Funções:
      • Armazenar dados sobre
      • PRODUTOS que possam ser agrupados em
      • CATEGORIAS que por sua vez tenham
      • FORNECEDORES
    • Imprimir estes dados com suas associações
    • Inserir dados, por exemplo, novo produtos
    • Imprimir estes dados com suas associações
    • Excluir dados, por exemplo, um fornecedor
    • Imprimir estes dados com suas associações.
    • Consultar dados, por exemplo, sobre um produto
    • Mostrar dados.


Relacional


  • Organiza os dados em tabelas formadas por linhas e colunas
  • Como na Matemática, podemos efetuar operações entre dois ou mais conjuntos, ou entre duas ou mais tabelas
  • Permitem criar ligações entre duas ou mais tabelas usando campos comuns
  • Uma operação de consulta gera uma tabela virtual



  • As 12 regras de Codd:
  1. Regra de informações: base em tabelas e campos em comum
  2. Regra de acesso garantido: referência a parâmetros específicos
  3. Tratamento de valores nulos: valores nulos devem ter tratamento diferente de valores em branco
  4. Catálogo relacional ativo: Mantém a estrutura do banco
  5. Inserção, exclusão e alteração em bloco: capacidade de permitir manipulação de registros em grupo
  6. Linguagem de manipulação de dados abrangentes: permite manipulação de dados por meio de aplicativos
  7. Independência física dos dados: Transparência - Separa as aplicações de usuários da base de dados física
  8. Independência lógica dos dados: Transparência do esquema lógico do banco de dados, exemplo, visões
  9. Regra de atualização de visões: aplicativos devem ser capazes de alterar visões;
  10. Independência de integridade: devem estar desvinculadas dos aplicativos
  11. Independência de distribuição: a diversificação dos sistemas não pode afetar a funcionalidade dos aplicativos
  12. Regra não subversiva: sistema deve ser capaz de impedir transgressões nos mecanismos de segurança



  • Em bancos de dados relacionais pode ser necessário um campo comum em diversas tabelas para que seja possível definir relacionamentos entre elas.


Orientado a objetos


  • Utilizam conceitos tais como Entidades, Atributos e Relacionamentos. Uma entidade é um objeto que é representado na base de dados. Um atributo é uma propriedade que descreve algum aspecto de um objeto
  • Relacionamentos entre objetos são facilmente representados em modelos de dados de alto-nível


  • Representação de baixo nível:
    • Descrevem como os dados são armazenados no computador, representando informações em formato de registros, ordem dos registros e caminho de acesso
      • Um caminho de acesso é uma estrutura que facilita a busca de um registro particular na base de dados


  • Esquema:
    • Descrição das estruturas e das operações de um banco de dados específico, utilizando um modelo de dados
    • Especificado durante o projeto da base de dados, sendo que a expectativa de mudanças normalmente não é grande
    • A forma de visualização de um esquema é chamada diagrama do esquema
    • Muitos modelos de dados têm convenções para criar diagramas (mostrar o modelo através de um desenho)


  • Instância: São os dados da base de dados num momento específico. Pois os dados existentes podem ser modificados


  • A necessidade de armazenar dados mais complexos levou à criação dessa modalidade de Banco de Dados
  • Exemplos:
    • SIG
    • CAD
    • CAM
    • Imagens
    • ...


  • Baseado na definição por meio de objetos com suas propriedades e operações
  • O registro é mais parecido com uma classe
  • Padrão de estrutura: ODMG - Object Data Manager Group


Rede


  • Utilizado principalmente no final da década de 60 e durante a década de 70, o modelo em rede surgiu como uma extensão ao modelo hierárquico, eliminando o conceito de hierarquia e permitindo que um mesmo registro estivesse envolvido em várias associações


  • Organiza os dados em uma estrutura formada por várias listas, que definia uma confusa rede de ligações, estrutura similar a um grafo direcionado


  • Cada registro “filho” pode ser ligado a mais de um registro “pai”, possibilitando a formação de ligações mais complexas, porque não há a restrição a um só tipo de relacionamento que vigora.


  • Conhecidos como DBTG (Data Base Task Group) ou CODASYL
  • Largamente utilizados em computadores de grande porte
  • Mesmo registro pode participar de vários relacionamentos
  • Possibilidade de acesso direto a determinado registro/nó da rede
  • Linguagens comuns: COBOL, PASCAL e FORTRAN



  • Estruturas fundamentais: Registros (Records) e Conjuntos (Sets)
  • Permite que várias tabelas sejam usadas simultaneamente através do uso de ponteiros
  • Algumas colunas contêm ponteiros para outras tabelas ao invés de dados, assim, as tabelas são ligadas por referências


  • O modelo de banco de dados em rede, amplia o modelo de registros permitindo a adição de múltiplos registros
  • Uma coluna do registro pode ser definida como, uma referência a uma ou mais entradas de um registro diferente


  • Assim os registros são relacionados, por meio de referências o que pode ser visualizado como uma estrutura em rede
  • Também utilizam ponteiros para fazer referência aos registros propriamente ditos


  • Os dados são representados por uma coleção de registros e os relacionamentos entre dados são representados por meio de links
  • Um link é uma associação entre exatamente dois valores


  • Acesso a qualquer nó da rede sem passar pelo nó raiz
  • Exemplos: Adabas e IDMS
    • Adabas: Considerado por alguns como um dos primeiros SGDBs produzidos comercialmente. Inicialmente foi lançado para mainframes da IBM, porém atualmente o Adabas é suportado em diversas plataformas, incluindo o OpenVMS, Unix, Linux e Windows. Adabas tem mantido a posição como um dos mais rápidos banco de dados OLTP oferecendo a funcionalidade 24x7
      • Baseado em Listas Invertidas
    • IDMS: Integrated Data Management System ou Sistema de Gerenciamento de Dados Integrado
      • É um banco de dados em rede da Computer Associates e foi desenvolvido a 5 décadas
      • São executados em minicomputadores até poderososo mainframes.


  • Problemas:
    • O modelo de rede é fortemente dependente da implementação
    • Registros artificiais precisam ser criados para implementar relacionamentos muitos para muitos
    • As consultas são complicadas: o programador é forçado a pensar em termos de links e, em como percorrê-los para obter as informações de que necessita
    • Essa manipulação de dados é chamada navegacional
    • Manteve-se, durante anos, à frente do modelo relacional porque, inicialmente, as implementações do modelo relacional eram ineficientes


  • E hoje, por quê desenvolvedores escolhem Graph Database ao invés de um banco de dados tradicional?
    • Jonathan Allen
    • "Ao contrário dos bancos de dados que armazenam seus dados em linhas, colunas ou pares de chave-valor, um banco de dados de grafos armazena toda informação em uma rede de nós e arestas. As arestas representam o relacionamento entre os nós que representa os objetos. Devido aos nós e arestas serem representados como objetos (os quais os desenvolvedores estão acostumados) é possível definir atributos (também chamado de propriedades) a eles. Adicionando uma direção para uma aresta cria o conhecido grafo de propriedades que representa a explícita estrutura de dados dentro de um banco de dados de grafo.
    • Portanto, diferente de outras abordagens de banco de dados onde apenas implicitamente é possível formar uma estrutura de grafos, um banco de dados de grafo explicitamente representa um grafo. Enquanto outros bancos de dados precisam usar índices e algumas estruturas auxiliares (como tabelas de relacionamento para fazer JOINs) um banco de dados de grafo pode percorrer de um objeto aos seus objetos relacionados, pois esses objetos são organizados para possuir adjacências sem índices
    • Existem diversos casos de uso onde banco de dados de grafos é a opção mais natural. Por exemplo em redes sociais é mais fácil utilizar uma estrutura de grafos para representar relações entre amigos e percorrer e realizar pesquisas como "busque todos os amigos dos amigos de meus amigos". Além disso, algoritmos comuns baseados em grafos, como pesquisas através de um caminho, são fáceis de implementar percorrendo o grafo."


  • 2o. Exercício: Parte II
    • Pesquisar estrutura do banco de dados no modelo de rede
    • Desenvolver aplicação (qualquer linguagem) que permita criar uma base de dados
    • Funções:
      • Armazenar dados sobre:
        • alunos (matricula, nome, cep, número, sexo, estado civil)
        • curso (nome, area, vagas semestrais)
        • disciplinas (nome, carga horária)
      • Imprimir dados com suas referências
      • Inserir dados, por exemplo, novo curso
      • Imprimir dados com suas referências
      • Excluir dados, por exemplo, um aluno
      • Imprimir dados com suas associações.


  • Vantagens no uso do SGBD:
    • Responsabilidade de manter a integridade dos dados do sistema
    • Checagem fica a cargo do SGBD e não do programador (ex.: como acontecia com a linguagem Clipper)
    • Facilita a manutenção no armazenamento dos dados, nos quais são modificados através de procedimentos do próprio sistema
    • Balanceamento de carga
    • Responsabilidades do SGBD (ficam com o SGBD) e responsabilidades da aplicação (ficam com a aplicação)
    • Rotinas de backup
    • Procedimentos de concorrência ao sistema
    • Ambientes distintos entre Desenvolvimento (ou Testes), Homologação (ou Qualidade) e Produção
    • Ambientes em servidores físicos diferentes

Quanto ao Número de Usuarios Suportados


  • Monousuário: apenas um usuário por vez. Dbase III, Dbase IV, FoxBase, FoxPro.
  • Multiusuário: Acesso de vários usuários ao mesmo tempo. Fator concorrência.


Quanto à Localização


  • Centralizado: Sistema de gerenciamento e banco de dados estão localizados na mesma máquina, o servidor de banco de dados
  • Distribuído: Sistema gerenciador e banco de dados armazenados em diferentes máquinas.


Características dos Bancos de Dados


  • Os sistemas de gerenciamento de banco de dados tem por incumbência básica manter os dados estáveis, ou seja, devem cuidar de toda a manutenção e atualização dos registros
  • A construção de rotinas, criação de interface ou desenvolvimento de aplicativos completos deve ficar a cargo de uma ferramenta destinada a essa tarefa, como linguagem de programação que se comunica com o gerenciador utilizando um mecanismo oferecido por ele, como drives de comunicação
    • Exemplos: ODBC, ADO (ActiveX) e JDBC


Abstração de dados


  • Um SGBD oferece aos usuários uma representação conceitual dos dados que não inclui muitos dos detalhes de como os dados são armazenados ou como as operações são implementadas
  • Este isolamento entre programas e dados se resume na capacidade de se alterar a estrutura do BD sem que seja necessária a modificação nos aplicativos
  • Como a definição da estrutura do banco está gravada no catálogo e não dentro do código-fonte do programa, tudo o que a aplicação precisa é consultar esta estrutura
  • A isso denominamos independência de dados referenciada como abstração de dados.
  • Exemplo:
    • Um registro de cliente é estruturado internamente por meio de um nome, a posição inicial do registro e o tamanho em bytes
    • É o que o sistema precisa para organizar os dados no BD
    • Acontece que quem pretende pesquisar, filtrar, operar ou descartar estes dados nada se importa com tamanho e posição
    • Porém são informações obrigatórias para o SGBD que ficam transparentes para o usuário final.


Metadados


  • Num sistema de BD, não há somentes os dados em si gravados mas também toda a definição da estrutura das tabelas que o compõem


Arquivo:Metadados.jpg


  • Essa estrutura denominamos de catálogo do sistema:
    • Nomes das tabelas
    • Definições dos seus campos
    • Formato de armazenamento
    • Índices que foram criados
    • Restrições relativas aos dados
  • São os metadados.


Compartilhamento


  • Um BD é preparado para o acesso de inumeros usuários portanto requer um controle de concorrência que na situação onde vários usuários tentam atualizar um dado, que o façam de forma controlada de maneira que o resultados das operações seja correto


  • Consiste na reutilização dos dados do BD pelo maior número possível de aplicações dentro da empresa. Nesse sentido, os dados do BD devem ser muito bem planejados e estruturados. Portanto, este objetivo de banco de dados esta mais ligado a atividade de análise e projeto de BD


  • O compartilhamento de dados visa diminuir a redundância de dados, considerando-o como um recurso da empresa e não propriedade de setores isolados da organização


  • Para implementar o compartilhamento de dados é necessário que a empresa disponha de recursos de rede, que permitam colocar o BD ao alcance dos diversos usuários. Além disso, é necessário que o SGBD possua um competente sistema de segurança, para que se estabeleça a privacidade de dados, através de mecanismos de restrição de acesso


Arquivo:Compartilhamento.jpg


  • Dê exemplos de situações onde existe redundância de dados?
  • Dê exemplos de situações onde o compartilhamento de dados é necessário?


Suporte a múltiplas visões


  • Sendo o banco de dados multiusuário, é imprescindível que ele permita a cada um ter sua própria visão dos dados


  • Esta visão é na verdade um subconjunto do banco de dados como um todo, que pode ser representado como tabela de dados virtuais gerados a partir de consultas


  • Exemplos:
    • Num sistema acadêmico, podemos ter as seguintes visões:
    • Aluno acessa relatório de notas com suas notas e a situação final (A ou R)
    • Professor consulta dados obtendo dados de todos os alunos da turma detalhando cada nota e situação
    • Pai acessa sistema buscando situação final do filho


  • Novas queries?


Processamento de transações


  • Os SGBDs, em geral, são Multiusuários e processam simultaneamente operações disparadas por vários usuários, concorrentemente
  • Deseja-se alta disponibilidade e tempo de resposta pequeno e execução intercalada por conjuntos de operações
  • Operações são chamadas transações
  • O uso concorrente é possível devido ao conceito de Multiprogramação


  • Uma transação é uma unidade da execução de programa que acessa e possivelmente atualiza vários itens de dados. Korth (2006)


Arquivo:Transação.jpg


  • Devido à característica de suporte a vários usuários simultâneos, é preciso que o sistema de gerenciamento possua capacidade de controlar o acesso concorrente para assegurar que as atualizações efetuadas pelos diversos usuários sejam executadas de maneira controlada para não ocorrerem erros nos dados.


  • Qualquer pessoa que costuma freqüentar fóruns de discussão deve, em algum momento, ter se deparado com uma pergunta recorrente, feita, especialmente, por aqueles que estão iniciando ou migrando de BD para algum tipo de servidor de banco de dados como o Interbase, SQL Server, Oracle ou outro: como fazer para travar um registro e impedir que dois usuários tentem alterá-lo ao mesmo tempo?


  • Seria uma pergunta fácil de responder se fechássemos os olhos para as implicações que essa mudança pode trazer para o desenvolvimento da aplicação e até mesmo para o profissional que lançou a pergunta.


  • A questão real seria:
    • É realmente necessário travar um registro para impedir que dois usuários eventualmente tentem modificá-lo ao mesmo tempo?
  • E, para respondê-la, é necessário pensar em outra questão:
    • Quais as implicações de travar um registro de forma a impedir seu acesso concorrente?


  • Exemplo de transferência de fundos:
    • Transação para transferir R$50,00 da conta A para a conta B:
  1. read(A)
  2. A = A - 50
  3. write(A)
  4. read(B)
  5. B = B + 50
  6. write(B)


  • Requisito de atomicidade: Se a transação falhar após a etapa 3 e antes da etapa 6, o sistema deve garantir que

suas atualizações não sejam refletidas no banco de dados, ou uma inconsistência irá resultar


  • Requisito de consistência: A soma de A e B é inalterada pela execução da transação


  • Requisito de isolamento: Se entre as etapas 3 e 6, outra transação receber permissão de acessar o banco de dados

parcialmente atualizado, ele verá um banco de dados inconsistente (a soma A + B será menor do que deveria ser). Isso pode ser trivialmente assegurado executando transações serialmente



  • Novos cases?


Enfoque dos Bancos de Dados


  • Incumbência básica do Banco de Dados:
    • manter os dados estáveis, ou seja, cuidar de toda a manutenção e atualização dos registros


  • Funções básicas:
    • Métodos de acesso:
      • DDL (Data Definition Language): especificação do esquema do BD (dados e seus tipos de dados, índices, ...)
      • DML (Data Manipulation Language): manipulação de dados
      • Processamento eficaz de consultas: Exemplo, buscar professores que lecionam em turmas lotadas em salas do quarto andar
    • Integridade Semântica:
      • Garantia de dados sempre corretos com relação ao domínio de aplicação
      • Exemplos: estados válidos para os dados (sexo; Estado Civil), relacionamentos válidos entre os dados
    • Segurança:
      • Evitar violação de consistência dos dados
      • Segurança de acesso (usuários e aplicações) - matrizes de autorização, visões
      • Segurança contra falhas: monitoração de transações, transações, categorias de falhas
      • Concorrência: evitar conflitos de acesso simultâneo a dados por transações. Principais técnicas: bloqueio (lock) e timestamp
    • Independência: transparência da organização dos dados, níveis de independência, física e logica


  • A construção de rotinas, criação de interface ou desenvolvimento de aplicativos completos devem ficar a cargo de uma ferramenta destinada a essa tarefa


  • Linguagem de programação que se comunica com o gerenciados utilizando um mecanismo oferecido por ele como drives de comunicação:
    • ODBC: Open Data Base Connectivity. Conexão criada para definir uma conexão entre um computador e um banco de dados em outro sistema. Esta conexão contém as informações necessárias para permitir a um usuário de computador o acesso às informações armazenadas que não estão disponíveis localmente. É necessário definir o tipo de SGBD e o driver apropriado para a conexão.
    • ADO: ActiveX Data Objects. Teve a intenção de forneceder um método de acesso aos dados independente para um amplo número de bases de dados. Isto significa que pode-se isar a mesma função para qualquer um, Access, Microsoft SQL Server, Sybase, Oracle, etc. Pode-se usar o ADO com Python, Delphi, VB, ASP, Visual C++, any .NET language, Borland C++ Builder, etc.
    • JDBC: Java database connectivity. API Java API que permite acessar qualquer tipo de dado tabular, especialmente os armazenados num banco de dados relacional. Ajuda a escrever aplicações que gerenciar principalmente 3 atividades.
      • Conexão À fonte dos dados como um banco de dados
      • Envio de declarações de consulta e atualização para o banco de dados
      • Recuperação e processamento de resultados recebidos do banco em resposta à consulta