Banco de dados (Databases) – Introdução

Seja ele local ou remoto, o banco de dados é um importante componente do nosso aplicativo. É nele que conseguimos persistir as informações que nosso aplicativo precisa para funcionar.

Podem ser dados de cadastro, preferências, configurações, etc. Dificilmente iremos construir um aplicativo que não precise armazenar algum tipo de informação.

O termo veio do inglês databank, que depois foi alterado para database. Acharam que o novo nome era mais apropriado para definir um banco de dados.

Banco de dados é definido como uma coleção de dados persistentes, ou seja, os dados continuam lá mesmo sem energia para alimentar o servidor/máquina onde estão armazenados. Diferente da memória RAM, por exemplo, que é limpo toda vez que desligamos o aparelho.

 

Banco de dados plano (flat file)

O modelo plano (ou tabular) consiste de matrizes simples, bidimensionais, compostas por elementos de dados: inteiros, números reais, etc.

Também conhecido pelo seu nome em inglês, flat file, que significa arquivo plano.

É um grande “tabelão” dentro de um arquivo. Existe muita redundância de dados (informação repetida).

Pouco utilizada hoje em dia por não ser prático (ocupa mais espaço) e a busca de dados demora muito dependendo da quantidade de dados armazenados.

Banco de dados relacional

Por conta da redundância de informações e do espaço ocupado, logo começaram a aparecer alternativas a este modelo.

É aí que entra o modelo mais utilizado atualmente: o banco de dados relacional.

Estrutura hierárquica

Na década de 1960, a IBM desenvolveu uma estrutura hierárquica utilizada nos primeiros mainframes DBMS (Data Base Management System – Sistemas Gerenciadores de Banco de Dados). As relações entre registros formavam um modelo em árvore. Esta estrutura é simples, mas inflexível, pois permite apenas uma relação um-para-muitos.

O IBM Information Management System (IMS) e o RDM Mobile são alguns exemplos de banco de dados hierárquicos.

Neste tipo de banco de dados, uma coleção de registros que são conectados entre si por meio de ligações.

Banco de dados Hierárquico

Banco de dados Hierárquico

Estrutura em rede

A estrutura em rede é uma variação particular do modelo hierárquico.

Elimina o conceito de hierarquia e permite que um mesmo registro esteja envolvido em várias associações.

 

Estrutura relacional

A estrutura hierárquica funciona bem para mostrar o organograma de perfil de trabalho de uma corporação. Mas se um único funcionário reporta a mais de um gerente começaremos a ter problemas.

Assim, começaram os estudos em estruturas de banco de dados que permitiriam diferentes tipos de relações. Este tipo de estrutura deveria permitir mapeamento de um-para-muitos.

Que veio a ser conhecido como Sistema de Gerenciamento de Banco de Dados Relacional (Relational Database Management System – RDBMS): uma coleção de dados com relacionamentos predefinidos entre si.

O modelo relacional é uma teoria matemática desenvolvida por Edgar Frank Codd para descrever como os banco de dados devem funcionar. Ele propôs as 12 leis do modelo relacional. Estas leis serviram de base para a criação dos softwares de banco de dados relacionais, apesar da grande maioria não implementar as 12 leis ao pé da letra.

Existem várias chaves que podem nos ajudar a mesclar diferentes conjuntos de dados neste tipo de banco de dados. Esse tipo de armazenamento de dados otimiza o espaço em disco ocupado sem comprometer os detalhes dos dados.

Banco de dados Relacional

Banco de dados Relacional

Banco de dados NoSQL

NoSQL é freqüentemente conhecido como “Not Only SQL”.

Quando perceberam que o texto não estruturado transporta toneladas de informações que não podemos analisar usando RDBMS, começaram estudos de maneiras de armazenar esses conjuntos de dados. Qualquer coisa que não é RDBMS hoje é vagamente conhecida como NoSQL. Depois das redes sociais este tipo de banco de dados ganhou importância no mercado e tornou-se comum na indústria.

São bancos de dados não relacionais de alto desempenho.

Os bancos de dados NoSQL usam diversos modelos de dados, incluindo documentos, grafos, chave-valor e colunares.

Orientado a documentos

Neste tipo de banco de dados, o conceito de “documento” é: informação encapsulada e codificada em alguns formatos padrão. Podemos utilizar XML, YAML, JSON, etc.

Estes documentos são endereçados através de uma chave exclusiva que o representa.

Este tipo de banco de dados também oferece uma API ou linguagem de consulta que recupera documentos com base em seu conteúdo.

Exemplos: MongoDb, CouchDB, etc

Tipo chave-valor

Este tipo de banco de dados utiliza uma matriz associativa como modelo de dados.

Os dados são representados como uma coleção de pares chave-valor (key-value), de forma que cada chave é única e aparece no máximo uma vez na coleção.

Este modelo é um dos modelos de dados mais simples, e modelos de dados mais ricos são frequentemente implementados como uma extensão do mesmo.

Exemplos: ArangoDB, InfinityDB, etc.

Banco de dados tipo Chave-Valor

Banco de dados tipo Chave-Valor

Orientado a colunas

Os bancos de dados orientado a colunas armazenam dados em famílias de colunas como linhas que têm muitas colunas associadas a uma chave. As famílias de colunas são grupos de dados relacionados que são frequentemente acessados em conjunto.

Cada família de colunas pode ser comparada a um contêiner de linhas em uma tabela RDBMS onde a chave identifica a linha e a linha consiste em várias colunas. A diferença é que várias linhas não precisam ter as mesmas colunas e colunas podem ser adicionadas a qualquer linha a qualquer momento sem precisar adicioná-la a outras linhas.

Exemplos: Hadoop, Cassanda, etc.

Banco de dados Orientado a Colunas

Banco de dados Orientado a Colunas

Orientado a grafos

Este tipo de banco de dados é projetado para dados cujas relações são bem representadas como um gráfico consistindo de elementos interligados com um número finito de relações entre eles. Os tipos de dados podem ser relações sociais, ligações de transportes públicos, roteiros ou topologias de rede.

Exemplos: Neo4J, Infinite Graph, etc.

Banco de dados Orientado a Grafos

Banco de dados Orientado a Grafos

Concluindo

Por enquanto vamos focar nossos estudos em banco de dados relacionais, pois atualmente é o modelo mais utilizado. Porém os banco de dados NoSQL estão ganhando terreno rapidamente pois tratam melhor uma grande quantidade de dados, característica importante para aplicações Big Data.

É muito importante para um desenvolvedor de aplicativos entender de banco de dados. Não precisa ser um expert, mas precisamos de um conhecimento de nível intermediário para conseguirmos modelar minimamente bem a camada de dados de nossos softwares.

E para receber um aviso quando os próximos artigos forem publicados, se cadastre na lista VIP do Celso!

Comece pelo e-book GRATUITO

5 Passos Para Ser Um App Dev

Se você não sabe por onde começar, este e-book te mostra os passos para ser um desenvolvedor de aplicativos de sucesso.
100% livre de spam.

Para enviar seu comentário, preencha os campos abaixo:

Deixe uma resposta

*

Seja o primeiro a comentar!