Por que eu devo ler este artigo:Este artigo é útil para os desenvolvedores que estão buscando conhecer um pouco mais sobre o paradigma de bancos de dados NoSQL e como utilizá-lo em aplicações Delphi. Aqui serão apresentados os principais conceitos do NoSQL, seus pontos positivos e negativos, e as diferenças existentes quando comparados aos bancos de dados relacionais, de forma a auxiliar o leitor na decisão por utilizar ou não esse tipo de solução. Por fim, veremos como acessar um banco de dados MongoDB no Delphi 10.1 Berlin, utilizando para isso seus componentes e drivers de conexão específicos.

Atualmente, com o amplo crescimento do acesso à tecnologia da informação, cada vez mais usuários precisam armazenar e visualizar dados de maneira rápida e eficaz. Entretanto, em alguns casos, é possível notar que a maneira pela qual as informações são armazenadas acaba sendo ineficaz, não atendendo às expectativas e necessidades tanto dos desenvolvedores e demais profissionais de tecnologia, quanto dos usuários, que estão cada vez mais exigentes em relação a soluções rápidas e dinâmicas.

A arquitetura tradicional utilizada na criação de bancos de dados, conhecida como Modelo Relacional, em certos casos pode apresentar certa dificuldade para suportar a quantidade exorbitante de dados que são gerados e acessados hoje em dia, bem como seus formatos variados. Para contornar essa limitação, surgiram os Bancos de Dados NoSQL, alternativas que visam oferecer maior flexibilidade e desempenho diante do aumento do volume e da variedade dos dados.

Introdução aos bancos de dados NoSQL

Os bancos NoSQL (acrônimo de Not Only SQL) consistem de sistemas de armazenamento de dados que não seguem a estrutura convencional, ou seja, o modelo relacional. Por esse motivo, eles também são chamados de não relacionais.

Bases de dados relacionais são totalmente orientadas a tabelas, as quais possuem uma estrutura fixa, baseada em linhas e colunas. Apesar de ter atendido a diversas demandas por anos, esse modelo acabou se mostrando ineficiente em situações onde há a necessidade de armazenar dados em formatos variados (desestruturados ou semiestruturados). Essa necessidade foi um dos fatores que motivou o surgimento dos bancos NoSQL.

Outra questão crítica, que contribuiu para a consolidação desse novo paradigma, diz respeito à performance dos bancos relacionais ao trabalhar com grandes massas de dados, principalmente quando há muitos relacionamentos entre eles. Isso, aliado às crescentes demandas por escalabilidade e custo reduzido, fez com que soluções de NoSQL fossem criadas exatamente para suprir as necessidades dos mais variados cenários.

Características fundamentais do NoSQL

Um banco de dados NoSQL deve possuir algumas características peculiares e fundamentais que o definem como tal:

  • Escalabilidade horizontal: o termo escalabilidade diz respeito à capacidade que um sistema possui de suportar o aumento do volume de dados, elevando também seu desempenho. Em bancos de dados relacionais, utiliza-se a escalabilidade vertical, a qual tem o objetivo de obter um maior ganho de processamento e armazenamento do servidor por meio do upgrade de hardware, como memória, disco rígido ou processadores. Porém, os bancos NoSQL devem suportar a escalabilidade horizontal, que consiste no aumento do número de nós (máquinas) disponíveis para realizar um processamento distribuído. Dessa forma, quando uma operação é executada no banco, o processo é dividido entre vários nós existentes, assegurando assim que não haja queda no desempenho;
  • Replicação de forma nativa: essa característica contribuirá para a obtenção de maior potencial de escalabilidade e facilitará a recuperação dos dados em tempo reduzido;
  • Acesso aos dados facilitados por APIs simplificadas: acessar informações de maneira rápida e eficiente, mantendo a simplicidade e facilidade, é um dos principais objetivos dos bancos NoSQL. Isso normalmente é alcançado através de APIs que tornam o acesso aos dados mais fácil;
  • Flexibilidade ou ausência de esquema: a estrutura dos bancos de dados NoSQL apresenta um esquema flexível ou, em alguns casos, chega a não apresentar qualquer esquema que a defina. Essa característica permite que se trabalhe com dados nos mais variados formatos, entretanto, torna menor a garantia de integridade;
  • A consistência nem sempre é mantida: bancos de dados NoSQL têm a particularidade de eventualmente não conseguirem manter os dados totalmente consistentes. Essa característica é baseada no Teorema CAP (veja o BOX 1).

BOX 1. Teorema CAP

O Teorema CAP, também conhecido como Teorema de Brewer, foi criado após a afirmação do cientista da computação Eric Brewer de que é impossível um sistema distribuído garantir de forma simultânea três requisitos: Consistência, Disponibilidade e Tolerância ao particionamento (daí a sigla CAP: Consistency, Availability, Partition tolerance).

A consistência se refere à situação que ocorre quando um dado é modificado e todos os usuários têm acesso ao mesmo dado atualizado e em tempo real.

A disponibilidade, por sua vez, é a garantia de que o sistema permanece ativo em um determinado período, de modo que cada solicitação receba a confirmação da existência ou não de determinada informação.

Já a tolerância ao particionamento consiste na capacidade que o sistema deve ter de continuar operando mesmo após ocorrer uma falha na rede, que possa tornar algum nó inacessível.

Portanto, segundo o Teorema CAP, o sistema que garante dois desses requisitos fatalmente não disponibilizará um terceiro.

Diferenças básicas entre bancos relacionais e não relacionais

Após conhecer as principais características do NoSQL, é importante que se possa identificar as diferenças existentes entre os bancos de dados relacionais e os não relacionais (NoSQL). Na Tabela 1 é possível visualizar as mais marcantes, que podem ser facilmente distinguidas entre esses dois modelos.

Banco de dados relacional

Banco de dados NoSQL

Modelagem dos dados (esquema)

Tabelas

(colunas, índices, relacionamentos)

Ausente ou flexível

(chave hash para recuperar valores)

Consistênci ...

Quer ler esse conteúdo completo? Tenha acesso completo