Categoria Blog – Banco de Dados

Banco de Dados – Visão Geral

O que é Bando de Dados? Bancos de Dados ou Databases são um conjunto de arquivos relacionados entre si, com registros sobre pessoas, lugares ou coisas. São coleções organizadas de dados que se relacionam de forma a criar algum sentido (Informação) e dar mais eficiência durante uma pesquisa ou estudo. Saber os tipos e as principais características dos bancos de dados, bem como os principais bancos existentes no mercado atual, são informações muito relevantes para que você possa escolher de forma correta qual melhor atendera a sua necessidade.

Tipos de Banco de Dados

  • Hierárquico

Esse tipo de banco de dados consiste em uma coleção de registros que são conectados uns aos outros por meio de ligações. Um registro é uma coleção de campos, cada qual contendo apenas um valor de dados. Uma ligação é uma associação entre exatamente dois registros.

O modelo hierárquico foi o primeiro a ser reconhecido como um modelo de dados. Um diagrama com estrutura de árvore é um esquema para um banco de dados hierárquico. Tal diagrama consiste em dois componentes básicos: retângulos, que correspondem a tipos de registro, e linhas, que correspondem a ligações.

Banco de Dados Hierárquico

No caso de relacionamentos muitos-para-muitos, a duplicação de registros é necessária para preservar a estrutura de árvore do banco de dados. A duplicação de registros tem dois inconvenientes principais: atalizações podem levar a inconsistência de dados e o desperdício de espaço é inevitável. A solução é o registro virtual, tal registro não contém valores de dado, ele contém um ponteiro lógico para um registro físico partícula. Quando um registro é duplicado em diversas árvores de banco de dados, uma única cópia daquele registro é mantida em uma das árvores e todas as outras ocorrências do mesmo são substituídas por um registro virtual contendo um ponteiro para aquele registro físico. A linguagem de manipulação de dados para essa nova configuração leva ao mesmo caso em que a duplicação de registro é permitida. Assim, um usuário não precisa preocupar-se com essas mudanças.

A implementação de banco de dados hierárquicos não usa ponteiros pai-filho, uma vez que eles requerem o uso de registros de tamanho variável. Em vez disso, são usadas cadeias em pré-ordem. Essa técnica permite que cada registro contenha exatamente dois ponteiros. Opcionalmente, um terceiro ponteiro filho – para – pai pode ser adicionado

  • Rede

Sua organização é semelhante à dos Bancos de Dados hierárquicos, É o modelo de dados que eliminou o conceito de hierarquia, permitindo que um mesmo registro estivesse envolvido em várias associações, registro filho pode ser ligado a mais de um registro pai, criando conexões bastante complexas e são bastante utilizados em sistemas para computadores de grande porte (mainframe). Sendo que esse modelo é composto de uma estrutura mais completa, possui as propriedades básicas de registros, conjuntos e ocorrências, e utiliza a linguagem de definição (DDL) e a linguagem de manipulação de dados (DML), além de permitir evolução mais eficiente do modelo. A estrutura é formada de entidade (registros), atributos (itens de dados), tipo de registro e ocorrência do registro. Tanto o modelo hierárquico quanto o de rede são chamados de sistemas de navegação, pois as aplicações devem ser construídas para atravessar um conjunto de registros interligados previamente.

Existem dois conceitos básicos de estruturas:

1. registro (“record type”), onde cada registro descreve a  estrutura de um grupo de registros que armazenaram o mesmo tipo de informação;
2. ligação pai-filho (“set type”), on de cada ligação pai-filho é um relacionamento um-para-muitos (1:n) entre dois “record types”.

Banco de Dados em Rede

  • Relacional
Representa os dados como uma simples coleção de linhas e colunas em tabelas bidimensionais, porém elas se relacionam entre si, e dependendo desse relacionamento carregam dados de outras tabelas consigo como referência à tabela que se relaciona.
Ao contrário de seus antecessores, o Modelo Relacional não se baseia num paradigma de estruturação de dados particular, e sim em um fundamento matemático específico.
A visão de Banco de Dados mudou para um nível mais alto, concentrando seus princípios no modelo de negócios e não na implementação de estruturas complexas.
O Modelo Relacional representa o BD como uma coleção de relações. Informalmente, uma relação é uma tabela ou arquivo simples.

Banco de Dados Relacional

Nesse modelo introduzimos novos conceitos, como:

1. Dominio: A noção de domínio de um item de dado assemelha-se à noção dedomínio de um conjunto na matemática. Um Domínio D é um conjunto de valores atômicos (indivisíveis). É o universo de valores permitido para um dado conjunto.

2. Atributo: Um Atributo representa o uso de um Domínio dentro de uma Relação. Vários Atributos podem pertencer a um mesmo Domínio.

3. Relação: Uma relação é vista como uma tabela no modelo relacional, composta por um cabeçalho e um corpo. O cabeçalho é formado por um conjunto fixo de atributos que possuem nomes distintos, para evitar ambigüidade na localização de um item de dado. Uma Relação possui uma Cardinalidade (= número de tuplas, = linhas) e um Grau (= número de atributos, = colunas).

4. Chaves: O conceito de chaves é fundamental, pois permitem a identificação de tuplas em uma tabela, e permitem o estabelecimento de relacionamentos entre tabelas. (Tipos de Chaves: Chave Primária, Chave Candidata, Chave Alternativa e Chave Estrangeira)

  • Orientado a Objetos
É um banco em que cada informação é armazenada na forma de objetos, e só pode ser manipuladas através de métodos definidos pela classe que esteja o objeto. O conceito de banco de dados Orientado a Objetos e o mesmo da Linguagem Orientada a Objetos, havendo uma pequena diferença:  persistência de dados. Existem pelo menos dois fatores que levam a adoção desse modelo, a primeira é que banco de dados relacional se torna difícil trabalhar com dados complexos. A segunda é que aplicações são construídas em linguagens orientadas a objetos (java, C++, C#) e o código precisa ser traduzido para uma linguagem que o modelo de banco de dados relacional entenda, o que torna essa tarefa muito tediosa. Essa tarefa também é conhecida como “perda por resistência”.
O objeto é formado como se fosse uma tripla (i, c, v), onde o i é o OID do objeto, o c é um construtor, ou seja, que tipo de valor ele vai receber ex.: atom, tuple, set, list, bag, array e v é o valor corrente. Então o objeto passa a suportar aquilo que foi definido para ele. Se ele vai receber um valor atômico ele só aceitará valores atômicos.

Banco de Dados Orienta a Objetos

Bancos de Dados no Mercado

Hierárquico Rede Relacional Orientado a Objetos
Adabas Data Base Task Group (DBTG) Sysbase Caché
GT.M CAIDMS da Computer Associates SQL Server Jasmine
IMS Oracle Objectstore
Caché PostgreSQL O2
Metaki MySQL Gemstone
Multidimensional hierarchical toolkit Firebird
Mumps compiler Interbase

Em nosso próximo encontro, analisaremos o que é um DBA, suas principais atividades e funções na administração de um banco de dados.

Banco de Dados – Introdução

Hoje, os bancos de dados são essenciais para muitas empresas e estão no coração de muitos sistemas computacionais. Ter acesso rápido às informações é muito importante para a correta tomada de decisões em um negócio. Se você pretende trabalhar com desenvolvimento de softwares, com certeza precisará trabalhar com bancos de dados em algum momento. Conhecer o que é banco de dados, a sua história e como eles evoluíram é muito importante para entender como os bancos de dados mais comuns são organizados. Então, como aconteceu a evolução dos bancos de dados?

O que é Banco de Dados?

Bancos de dados ou bases de dados são um conjunto de arquivos relacionados entre si com registros sobre pessoas, lugares ou coisas. São coleções organizadas de dados que se relacionam de forma a criar algum sentido (Informação) e dar mais eficiência durante uma pesquisa ou estudo.

Segundo Korth, um banco de dados “é uma coleção de dados inter-relacionados, representando informações sobre um domínio específico”, ou seja, sempre que for possível agrupar informações que se relacionam e tratam de um mesmo assunto, posso dizer que tenho um banco de dados.

A história dos Bancos de Dados

Os fundamentos de bancos de dados relacionais surgiram na empresa IBM, nas décadas de 1960 e 1970, através de pesquisas de funções de automação de escritório. Foi durante um período da história na qual empresas descobriram que estava muito custoso empregar um número grande de pessoas para fazer trabalhos como armazenar e indexar (organizar) arquivos.

Diversas pesquisas foram conduzidas durante este período, cujos modelos hierárquicos, de rede e relacionais e outros modelos foram descobertos, bem como muitas das tecnologias utilizadas hoje em dia.

Devido à natureza técnica deste artigo e a relativa complicação matemática, o significado e proposição do artigo não foram prontamente realizados. Entretanto ele levou a IBM a montar um grupo de pesquisa conhecido como System R (Sistema R).

O propósito do Sistema R era criar um sistema de banco de dados relacional o qual eventualmente se tornaria um produto. Os primeiros protótipos foram utilizados por muitas organizações, tais como MIT Sloan School of Management (uma escola renomada de negócios norte-americana). Novas versões foram testadas com empresas aviação para rastreamento do manufaturamento de estoque.

Eventualmente, o Sistema R evoluiu para SQL/DS, o qual posteriormente tornou-se o DB2. A linguagem criada pelo grupo do Sistema R foi a Structured Query Language (SQL) – Linguagem de Consulta Estruturada. Esta linguagem tornou-se um padrão na indústria para bancos de dados relacionais e hoje em dia é um padrão ISO (International Organization for Standardization).

Apesar de a IBM ter sido a companhia que inventou o conceito original e o padrão SQL, eles não produziram o primeiro sistema comercial de banco de dados. O feito foi realizado pela Honeywell Information Systems Inc., cujo sistema foi lançado em junho de 1976. O sistema era baseado em muitos princípios do sistema que a IBM concebeu, mas foi modelado e implementado fora da IBM.

O primeiro sistema de banco de dados construído baseado nos padrões SQL começaram a aparecer no início dos anos 80 com a empresa Oracle através do Oracle 2 e depois com a IBM através do SQL/DS, servindo como sistema e repositório de informações de outras empresas.

Estes sistemas somente nasceram a partir da insistência de um jornal técnico em utilizar BNF para SQL e este jornal publicou tal artigou. BNF é o conjunto de sintaxes de linguagem de computador que explica exatamente como cada comando interage com os outros comandos e o que pode ou não ser realizado, como os comandos são formados em assim por diante. Por causa da publicação deste artigo, empresas puderam utilizá-lo para modelar seus próprios sistemas, os quais seriam 100% compatíveis com o sistema da IBM.

software de banco de dados relacionais foi sendo refinado durante a década de 80. Isso deveu-se ao feedback que os usuários destes sistemas faziam, devido ao desenvolvimento de sistemas para novas indústrias e ao aumento do uso de computadores pessoais e sistemas distribuídos.

Desde sua chegada, os bancos de dados têm tido aumento nos dados de armazenamento, desde os 8 MB (Megabytes) até centenas de Terabytes de dados em listas de e-mail, informações sobre consumidores, sobre produtos, vídeos, informações geográficas, etc.. Com este aumento de volume de dados, os sistemas de bancos de dados em operação também sofreram aumento em seu tamanho.

O padrão SQL passou da IBM para a ANSI (American National Standards Institute) – Instituto Nacional Americano para Padrões – e para a ISO, os quais formaram um grupo de trabalho para continuar o desenvolvimento. Este desenvolvimento ainda acontece com outras novas versões dos padrões definidos.

Em meados da década de 80 tornou-se óbvio que existiam várias áreas onde bancos de dados relacionais não eram aplicáveis, por causa dos tipos de dados envolvidos. Estas áreas incluíam medicina, multimídia e física de energia elevada, todas com necessidades de flexibilidade em como os dados seriam representados e acessados.

Este fato levou ao início de pesquisas em bancos de dados orientados a objetos, os quais os usuários poderiam definir seus próprios métodos de acesso aos dados e como estes seriam representados e acessados. Ao mesmo tempo, linguagens de programação orientadas a objetos (Object Oriented Programming – POO) tais como C++ começaram a surgir na indústria.

No início de 1990, temos a aparição do primeiro Sistema de Gerenciamento de Banco de Dados Orientado a Objetos, através da companhia Objectivity. Isso permitiu com que usuários criassem sistemas de banco de dados para armazenar resultados de pesquisas como o CERN (maior laboratório que trabalha com partículas físicas em pesquisas nucleares – europeu) e SLAC (Centro de Aceleração Nuclear – norte-americano), para mapeamento de rede de provedores de telecomunicações e para armazenar registros médicos de pacientes em hospitais, consultórios e laboratórios.

O cenário de um problema

Imaginemos parte de um banco que mantenha informações sobre todos os clientes e contas de poupança em sistemas de arquivos permanentes no banco. O sistema tem ainda uma quantidade de programas que permitem ao usuário manipular os arquivos, incluindo:

  • Um programa para debitar ou creditar em uma nova conta;
  • Um programa para adicionar uma nova conta;
  • Um programa para calcular o saldo de uma conta;
  • Um programa para gerar posicionamentos mensais.

Esses programas foram desenvolvidos por programadores em resposta às necessidades da organização bancária.
Novos programas de aplicação são adicionados ao sistema à medida que as necessidades aparecem. Logo, mais arquivos e mais programas são acrescidos ao sistema.

O típico sistema de processamento de arquivos acima é suportado por um sistema operacional convencional. Registros permanentes são guardados em diversos arquivos e uma série de diferentes programas é escrita para extrair e adicionar registros aos arquivos apropriados. Este esquema tem uma série de desvantagens:

  • Redundância e inconsistência de dados: muitos programadores diferentes e programas implementados em linguagens diferentes podem gerar arquivos de formatos diferentes. Informações podem estar duplicadas em diversos lugares. Gera inconsistência pois estas cópias podem estar com valores diferentes.
  • Dificuldade no acesso aos dados: um diretor deseja a lista de todos os clientes que moram na cidade de CEP 12345-678. Ou ele extrai manualmente esta informação de uma lista de clientes ou pede a um programador que escreva um programa. Suponha, mais tarde, que o mesmo diretor deseje uma lista dos clientes com mais de R$ 10.000. Tal lista não existe e novamente o diretor tem as duas opções.
  • Isolamento dos dados: como os dados estão espalhados, em arquivos separados e com formatos diferentes, é difícil escrever novos programas para recuperar os dados adequados.
  • Anomalias de acesso concorrente: para aperfeiçoar o desempenho geral do sistema e obter tempo de reposta mais rápido, deixamos que múltiplos clientes acessem e atualizem os dados simultaneamente. Isso gera dados inconsistentes. Exemplo: dois clientes sacarem dinheiro de uma mesma conta corrente.
  • Problemas de segurança: nem todo usuário do sistema de BD deve ter acesso a todos os dados. Por exemplo: o RH pode ter acesso às informações cadastrais dos clientes, mas não aos valores de conta corrente. Se novos programas forem adicionados, é difícil garantir tais restrições de segurança.
  • Problemas de integridade: os valores dos dados armazenados necessitam satisfazer certas restrições. Por exemplo, o saldo nunca poderá estar abaixo de R$ 25. Estas restrições podem estar contidas nos programas, mas quando novas restrições forem adicionadas, é difícil de alterará-los.

Por estes motivos, faz-se necessária uma abordagem relacionada à aplicação de um SGBD (Sistema de Gerenciamento de Banco de Dados), a fim de evitar os problemas descritos.

Em nosso próximo encontro, analisaremos os tipos de bancos de dados, suas características e os principais bancos existentes no mercado atual.