image

Access unlimited bootcamps and 650+ courses

50
%OFF
Article image
Mateus Silva
Mateus Silva20/07/2021 11:35
Share

Como escolher o modelo de Banco de Dados

  • #Banco de dados relacional
  • #NoSQL

Importância da escolha "certa"

Um Banco de Dados é uma das peças chaves de um projeto de software e a escolha do seu modelo tem um impacto gigantesco no desenvolvimento e manutenção do sistema. Uma escolha bem feita pode facilita a vida dos desenvolvedores e dos usuários, mas saibam que não existe uma escolha perfeita, cada modelo tem as suas vantagens e desvantagens.

Já de início saibam que sistemas grandes ou as vezes pequenos costuma utilizar mais de um modelo para extrair as vantagens de cada um deles, mesmo que seja para o mesmo sistema. Dito isso leiam os pontos abaixo para avaliar quando utilizar cada um deles.

Tipos

Existem várias formas de diferenciar um banco de dados do outro, nesse ponto vou fazer a diferenciação entre duas possibilidades

image

  • Relacional
  • O modelo relacional costuma ser o mais conhecido e usado no mundo. Ele baseia-se na organização de dados baseado em tabelas e relacionamentos entre elas, geralmente escolhido quando a consistência dos dados é essencial e é um dado estruturado.
  • Vantagens: consistência, confiabilidade, segurança, padronização, normalização, velocidade das querys é alta.
  • Desvantagens: maior complexidade na seu desenvolvimento inicial, custo alto de armazenamento, escalabilidade baixa e pouca flexibilidade na alteração do seu Schema.

image

  • NoSQL
  • NoSQl (Not only SQL - não somente SQL) é um modelo não relacional feito para atender aquela demanda de dados que possuem ineficiência ao serem armazenados no modelo relacional, como imagens.
  • Vantanges: alta flexibilidade, baixo custo de armazanemento, alta escalabilidade, eficientes para dados não estruturados.
  • Desvantagens: sem normalização de dados, sem garantia de integridade dos dados, menos estável, a velocidade da query costuma ser menor do quê no modelo relacional.

Extra

image

  • Object Storage
  • Outra possível classificação de modelo que resolvi colocar como um separado devido a seu crescente uso. Esse modelo vem crescendo o seu uso devido a capacidade de armazenamento de dados de multimídia a baixo custo que exigem alta escalabilidade. Ele pode ser implementado
  • Vantagens: custo de armazenamento muito baixo, alta escalabilidade, schema-less, dimensionamento elástico, costumam implementar criptografia do lado do servidor.
  • Desvantagens: para alterar uma parte do objeto é preciso salvar um novo objeto inteiro sobre o anterior, baixa velocidade da query, alta latência. A consistência é garantida eventualmente, ou seja, não é possível garantir a consistência em um dado momento, só se sabe que em algum momento os dados vão se tornar consistentes.

Resolvi trazer o último como um extra em relação a uma possível forma de classificação, isso porque existem várias formas de classificar um banco de dados, sendo a diferenciação SQL e NoSQL a mais comum. Contudo vocês podem pensar em diferencia-lo pelo forma que salvam e organizam os dados (tabelas, arquivos, grafos, objetos, ...), responsabilidade administrativa (local, on premise, cloud), distribuição (centralizado ou distribuído) e assim por diante.

Dica:

No último artigo tem uma dica para não ter problema com o armazenamento de datas e horas. Link: https://web.digitalinnovation.one/articles/problemas-ao-armazenar-datas-no-banco-de-dados?back=%2Farticles&page=1&order=oldest

Fontes:

  • https://www.ibm.com/blogs/cloud-computing/2017/02/01/object-storage-benefits-myths-and-options/
  • https://blogs.oracle.com/lad-cloud-experts/pt/o-que-e-object-storage-como-eu-utilizo
  • https://www.digitalocean.com/community/tutorials/servicos-de-armazenamento-de-objetos-versus-armazenamento-em-blocos-pt
  • https://cio.com.br/tendencias/vantagens-e-desvantagens-do-armazenamento-de-objetos/https://pt.stackoverflow.com/questions/191919/banco-de-dados-n%C3%A3o-relacionais-vs-banco-de-dados-relacionais
  • https://www.guru99.com/introduction-to-database-sql.html
Share
Comments (3)

ON

Otacilio Neto - 22/08/2022 15:02

Ótimo artigo!

Pretendo estudar mais sobre Object Storage.



Mateus Silva
Mateus Silva - 20/07/2021 12:11

Muito obrigado, Leandro.


Sim, o modelo relacional facilita a forma de pensar por estarmos mais acostumados a abstrair a ideia de uma tabela, mas ironicamente dificulta na criação num banco inteiro por criar muitas restrições em como fazê-lo. O NoSQL, por outro lado, não temos esse costume, mas se torna mais fácil com o tempo entender e desenvolver um banco de dados com esse modelo

Leandro Henrique
Leandro Henrique - 20/07/2021 11:56

Ótimo artigo 👏🏻

Tô aprendendo MongoDB e tô achando estranho fazer a modelagem dos dados sem pensar no modelo relacional, mas aos poucos as coisas estão começando a fazer mais sentido