Top 5 NoSQL DBs


TOP 5 NoSQL Databases


Quando se fala em Ciência de Dados, é inevitável não falar de Bancos de Dados NoSQL, termo utilizado para descrever esquemas de armazenamento de dados não-relacionais e sem esquemas.
NoSQL é um "repositório" de tecnologias diferentes e não necessariamente semelhantes, mas todas elas têm algo em comum, não são relacionais.

A linguagem SQL (Structured Query Language) é sem sombra de duvidas uma linguagem padrão para manipulação de dados relacionais, com seu uso facilitado por diversos sistemas de gerenciamento de bancos de dados (SGBD). Pelo fato de o SQL ser uma linguagem relacional, o termo NoSQL faz referencia a tudo que não seja relacional, no que concerne a bancos de dados.


Sendo preciso ou não o termo NoSQL, as várias tecnologias NoSQL são bem-vindas e necessárias na paisagem de dados de hoje, especialmente por conta do Big Data. Key-value stores, document stores, graph databases e outros paradigmas de armazenamento de dados não-relacionais permitem velocidade, flexibilidade e escalabilidade ao armazenar e acessar dados não estruturados. Mas há uma grande quantidade de mecanismos de banco de dados NoSQL disponíveis hoje.


Podemos encontrar no site DB-Engines.com ferramentas de comparação entre os vários engines de bancos de dados, sejam eles relacionais ou não. No DB-Engines Ranking conseguimos acompanhar a evolução e crescimento ao longo dos últimos 5 anos, porém nós na InCube coletamos as informações referentes a Outubro de 2019.




Como pode ser verificado, o estudo efetuado aponta os 5 principais mecanismos de bancos de dados NoSQL como : MongoDB, Redis, Cassandra, HBase e Neo4j.
Para que possam entender melhor os critérios de avaliação do DB-Engine Ranking, fizemos uma análise macro de cada um desses engines NoSQL.

    1. MongoDB
MongoDB é um "document store" e i atual líder de bancos de dados NoSQL, obviamente é um banco não-relacional. O MongoDB "substitui" o relacionamento convencional por "documentos" semelhantes ao formato JSON (Java Script Object Notation) para armazenar dados.
Um documento no MongoDB é semelhante a um registro  contendo campos e valores.
Tem a capacidade de suportar esquemas dinâmicos e um dos maiores atrativos...é gratuito de código aberto.
Além de que MongoDB possui recurso necessários para operar em ambientes de produção, com sistema próprio de balanceamento de carga, replicação, indexação. consulta e pode operar como um sistema de aquivos (com balanceamento de carga e tolerância a falhas).

    2. Cassandra


Cassandra começou a ser desenvolvido no Facebook, tendo como sua principal característica a descentralização, totalmente distribuído e orientado a coluna.
É muito otimizado para cluesters, e graças á sua atualização assíncrona e design sem Master, possui uma baixa latência a clientes. Da mesma forma que o MongoDB, também é gratuito e de código aberto.

Orientado por coluna, o que significa que suas linhas realmente contêm o que geralmente pensamos como dados verticais, ou o que é tradicionalmente realizado em colunas relacionais.
A vantagem desse tipo de design de banco de dados, é a rapidez de consulta de alguns tipos de pesquisa de dados, pois os dados desejados podem ser armazenados em uma única linha.


   3. Redis

O Redis é a implementação key-value store mais popular e amplamente utilizada em nossa lista. O que é um key-value store? É um paradigma simples: atribua valores às chaves para facilitar o acesso e o armazenamento desses valores, que sempre são encontrados através das suas chaves. Pense em mapas de hash e você tem a ideia (dicionários em Python).

Como o Redis mantém seus pares de valores-chave na memoria, consegue uma acesso rápido e eficaz.
Em situações onde a durabilidade dos dados pode ser sacrificada, ter a capacidade de renunciar a escritas de dados, significa que esses dados somente em memoria possuem um desempenho extremamente rápido

   4. HBase

Outro banco de dados orientado a coluna, o HBase é uma implementação gratuita e aberta do BigTable do Google. 
A sua estreita  associação com o Hadoop auxiliou na sua popularidade pois ambos fazem parte do projeto Apache.
O que permite ao HBase uma busca eficiente de dados dispersos e distribuídos, se tornando um dos seus pontos mais fortes.

O HBase é utilizado por muitos dos tubarões da internet, como o LinkedIn, Facebook e Spotify, incluindo o fato de que muitos projetos relacionados do Apache também fornecem suporte ao HBase, fornecendo uma camada SQL para a cesso a dados (Phoenix), o que se torna ótimo para administradores de bancos de dados relacionais que buscam implementar soluções NoSQL.

Devido ao elevado numero de instalações Hadoop, o HBase certamente que será uma solução NoSQL padrão para os próximos anos.


  5. Neo4j

Neo4j é o sistema de gerenciamento de banco de dados baseado em grafos (ou Graph Database), sendo o mais popular e utilziado nesta categoria.
Um Graph Database é baseado em arestas que atuam como relacionamentos entre os vértices (ou nodes), relacionando diretamente instâncias de dados umas com as outras. Como outros na lista, o Neo4j também possui uma implementação de código aberto.

Para acessar aos dados no Neo4j, é utilizada a Cypher Query Language, linguagem muito semelhante á linguagem SQL.

Bancos em grafos, são muito utilizados e possui muitas vantagens em cenários de mineração de dados e reconhecimento de padrões, uma vez que associações entre instâncias são declaradas de forma explicita.

Resumo:

Em Big Data cerca de 80% dos dados são não estruturados. Como tal o processo de armazenagem desses dados em bancos relacionais, não é uma opção viável, tendo em conta que bancos relacionais, não foram criados para tal. E é face a esse cenário que os bancos NoSQL estão sendo muito utilizados de forma a atender ás demandas e necessidades do tão famoso fenômeno, Big Data.


Espero que nosso artigo seja util para todos, e não esqueçam de dar a sua opinião sobre o tema.

Abraços e bons estudos!

Nelson Alexandre


Referências:









Comentários

Postagens mais visitadas deste blog

Tutorial de Machine Learning com Python - Iniciantes - Parte 1

Regressão Múltipla com R

Tutorial de Machine Learning com Python - Iniciantes - Parte 2