Banco de dados Não-Relacional x Banco de dados Relacional

O termo banco de dados NoSQL vem do inglês Not Only SQL (Não Apenas SQL) e refere-se a todos os banco de dados Não-Relacionais existentes. O nome é uma tentativa de descrever o surgimento de vários novos banco de dados que não tinham a preocupação de fornecer garantias de Atomicidade, Consistência, Isolamento e Durabilidade (ACID), características presentes em qualquer banco de dados relacional.

Um banco de dados relacional é aquele que modela os dados de forma que eles sejam percebidos pelo usuário como tabelas, ou mais formalmente relações. Exemplos de banco de dados relacionais são:

  • MySQL
  • MariaDB
  • MS SQL
  • PostgresSQL

Como dito acima, os banco de dados Não-Relacionais não têm a preocupação em manter as características ACID presentes nos banco de dados Relacionais, portanto eles organizam seus dados de formas bem distintas, as quais veremos em seguida.

 

Organização dos dados em base de dados NoSQL

De acordo com o site nosql-database atualmente existem 15 tipos de banco de dados NoSQL, os quais se diferenciam entre si em diversos pontos, sendo contabilizados ao todo 150 desenvolvedores de banco de dados NoSQL existentes.

Os tipos principais são os seguintes:

  • Orientados à documentos
  • Orientados à objetos
  • Chave/Valor
  • Tabulares
  • Grafos
  • Base de dados XML

De forma a exemplificar a organização de dados em base de dados NoSQL abaixo são descritas algumas características de um banco de dados orientados à documentos.

Em geral, os bancos de dados orientados à documento não possuem esquema, ou seja, os documentos armazenados não precisam possuir estrutura pré-definida.

Bancos de dados orientados à documentos normalmente armazenam todas as informações relacionadas juntas e permite que cada instância de dados seja diferente de qualquer outra. Isso os torna mais flexível para lidar com mudanças, pois mapeiam mais facilmente um objeto e muitas vezes até é capaz de reduz o tamanho do banco de dados.

Dessa forma, este tipo de organização torna-se atraente para aplicações web modernas que estão sujeitas à mudanças contínuas sendo que a velocidade de implementação destas mudanças é uma questão muito importante, refletindo diretamente na performance e escalabilidade da aplicação.

 

Popularidade dos banco de dados NoSQL

De acordo com o site db-engines a popularidade dos banco de dados Não Relacionais vêm crescendo a cada dia, sendo liderada pelo banco de dados MongoDB que possui um modelo de organização de dados orientado à documento.

Como pode ser visto no ranking abaixo, atualmente os banco de dados relacionais ainda lideram a preferência dos programadores em todo mundo. Porém, a forte tendência de crescimento está nos banco de dados NoSQL através do MongoDB, Cassandra e Redis.

Banco de dados NoSQL

Ranking DB-Engines

O método de cálculo usado pelo site baseia-se nos seguintes critérios:

  • Números de referências aos banco de dados nos websites indexados pelos moteres de busca google e bing.
  • Interesses gerais pelos banco de dados baseado na ferramenta Google Trends.
  • Frequência de discussões técnicas sobre o banco de dados.
  • Número de empregos oferecidos em todo o mundo, nos quais o banco de dados é citado.
  • Número de perfis redes sociais profissionais, onde o banco de dados é referenciado.
  • Relevância nas redes sociais.

Assim podemos perceber que a ascensão da popularidade desses bancos é bem sólida e consistente baseado nesses critérios.

 

Ainda não me convenci! Por que usar NoSQL?

É possível elencar vários motivos para uso de um banco de dados NoSQL no seu próximo projeto. Contudo, são motivos bem específicos e que talvez não seja a realidade do seu próximo desenvolvimento. Mesmo assim, como tudo recentemente tem sido guiado para processamento e armazenamento de um elevado número de dados com tendências fortes à modificações rápidas e repentinas vale a pena considerar o estudo da aplicação de um deles visando aumento de performance e dinamicidade.

Abaixo elenco 3 motivos que podem lhe auxiliar na tomada de decisão:

 

#1 – Altamente escalável

Os banco de dados NoSQL têm uma capacidade formidável de moldarem de forma a permitir uma escalabilidade horizontal muito rápida. Tudo isso devido à fácil possibilidade de distribuição de dados por clusters, evitando a perda de performance pelos famosos “joins” usados nos banco de dados relacionais.

 

#2 – Muito flexível

Para permitir desenvolvimento ágeis nada melhor que um modelamento de dados intuitivo e flexível que facilite a vida dos desenvolvedores. Em banco de dados relacionais as estruturas são baseadas em esquemas, ou seja, é necessário que toda a estrutura seja definida previamente e que os dados sejam armazenados em tabelas que possuem colunas e linhas pré-definidas. Qualquer mudança no que foi previsto anteriormente tende a ser uma dor de cabeça para os desenvolvedores, uma vez que têm que modificar toda a estrutura para receber novos tipos de dados. Com os banco de dados NoSQL essa dificuldade é sobreposta, haja visto que de forma bastante flexível os desenvolvedores podem passar a armazenar determinado tipo de dado com a simples criação de uma nova referência a ela sem se preocupar com a necessidade de remodelar o banco.

 

#3 – Alta disponibilidade

Normalmente os banco de dados NoSQL permitem a replicação dos dados entre diversos bancos de forma muito fácil e confiável. Dessa forma, caso um servidor fique fora do ar os mesmos dados poderão ser acessados pela aplicação através de outro servidor replicado de forma transparente e indolor. Com a replicação de dados é possível manter os dados à salvo contra desastres em geral sem a degradação de conteúdo ou performance.

 

Conclusão

Assim, acredito que com este pequeno artigo você seja capaz de reavaliar alguns conceitos formados a respeito de armazenamento de dados e possa no futuro cogitar a possibilidade de uso de um banco de dados NoSQL para seus projetos. Tendo em vista a diversidade de opções é difícil apontar um que possa atender a todas as necessidades chaves de um projeto que precisa se remodelar rapidamente ao longo do tempo. Mesmo assim, haja vista minhas recentes experiências e a crescente popularidade dele sugiro avaliar com bastante atenção o MongoDB. Ele vem surpreendendo a comunidade com sua rápida expansão devido à características peculiares que fazem dele um banco de dados confiável.

 

Referências

http://www.dicasdeprogramacao.com.br/6-motivos-para-usar-bancos-de-dados-nosql/

https://en.wikipedia.org/wiki/Document-oriented_database

http://imasters.com.br/artigo/17043/banco-de-dados/nosql-voce-realmente-sabe-do-que-estamos-falando/

http://nosql-database.org/

https://pt.wikipedia.org/wiki/NoSQL

http://www.devmedia.com.br/introducao-aos-bancos-de-dados-nosql/26044

https://pt.wikipedia.org/wiki/ACID

https://pt.wikipedia.org/wiki/Banco_de_dados_relacional

http://db-engines.com/en/ranking

WhatsApp Fale comigo!