Objetivo da aula


  • Entender a importância e aplicação de várias características de um BD


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



  • 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



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




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)



  • 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


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




Questões


  1. O que permite fazer o JDBC?
  2. Qual a vantagem de se usar Metadados num Sistema de Gerenciamento de Banco de Dados?
  3. Dê exemplos de situações onde existe redundância de dados
  4. Dê exemplos de situações onde o compartilhamento de dados é necessário
  5. Cite desvantagens no caso de se implantar bases de dados indexadas para facilitar as consultas.
  6. Com relação ao exemplo de Múltiplas Visões, descreva novas queries
  7. Com relação à Processamento de Transações, descreva novas situações que envolvam essa característica
  8. Como se chama o procedimento de abortar uma transação e voltar à estaca zero?
  9. Dê novos exemplos de Integridade Semântica