O termo banco de dados NoSQL tornou-se uma parte permanente da nomenclatura de armazenamento de dados, usado para descrever esquemas de armazenamento de dados não-relacionais e sem esquemas. NoSQL é um termo guarda-chuva, que engloba uma série de tecnologias diferentes que não são necessariamente semelhantes, mas que possuem uma característica definidora do NoSQL: elas não são de natureza relacional. Neste post, vamos investigar quais são os Top 6 NoSQL Databases.
A Structured Query Language (Linguagem SQL) tornou-se o padrão para manipulação de dados em sistemas de gerenciamento de banco de dados relacionais ao longo dos anos. Por conta disso, o termo NoSQL vem sendo usado para definir tudo que não seja relacional, embora nem sempre essa abordagem seja precisa.
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. Quais são os mais usados e quais são as diferenças? O excelente site DB-Engines.com é uma excelente fonte de pesquisa para responder estas perguntas.
O site DB-Engines.com oferece algumas ferramentas de comparação entre os todos os engines de banco de dados, sejam eles relacionais ou não relacionais, de acordo com a popularidade dos DBMS (Database Management Systems). O DB-Engines Ranking permite acompanhar a evolução e crescimento ao longo dos últimos 5 anos e fui buscar quais eram os principais bancos de dados NoSQL, usando como referência este gráfico abaixo coletado em Fevereiro de 2018. É espantoso ver o crescimento de alguns desses bancos de dados, especialmente as soluções em nuvem da Amazon.
O levantamento, feito em Fevereiro de 2018, aponta como principais mecanismos de banco de dados NoSQL: MongoDB, Redis, Cassandra, HBase, Amazon DynamoDB e Neo4j. Algo que chama atenção é o crescimento incrível desses bancos de dados em comparação aos bancos relacionais. Abaixo você encontra uma visão geral dos Top 6 NoSQL Databases (no momento da criação deste post, em Fevereiro/2018).
O MongoDB é um document store e o atual líder no segmento de banco de dados NoSQL. Como é o requisito para os engines NoSQL, o MongoDB não usa um esquema relacional, em vez disso, usa “documentos” semelhantes ao formato JSON (Java Script Object Notation), para armazenar dados. O documento é semelhante a um registro, com campos e valores. O MongoDB suporta esquemas dinâmicos, é um software livre e de código aberto.
O MongoDB também fornece os recursos necessários para um ambiente de produção: balanceamento de carga, replicação, indexação, consulta e pode atuar como um sistema de arquivos (com balanceamento de carga e tolerância a falhas).
Originalmente desenvolvido no Facebook, Cassandra é um mecanismo de banco de dados descentralizado, distribuído e orientado a coluna. É otimizado para clusters, especialmente aqueles em vários datacenters, e graças à sua atualização assíncrona e design sem mestre (master), o Cassandra fornece acesso de baixa latência a clientes. Como o MongoDB, também é gratuito e de código aberto.
Cassandra é um banco de dados 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 do design de banco de dados orientado por coluna é que alguns tipos de pesquisas de dados podem se tornar muito rápidos, uma vez que os dados desejados podem ser armazenados consecutivamente em uma única linha (compare isso com ter que pesquisar e ler de múltiplas linhas não consecutivas para atingir o mesmo valor de campo em banco de dados orientado a linha). Essa particularidade, juntamente com o modelo distribuído otimizado e descentralizado, solidificou a popularidade da Cassandra ao longo dos anos. Veja na seção de referências ao final do post, um artigo explicando esse conceito em mais detalhes.
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).
O Redis mantém seus pares de valores-chave na memória, tornando seu acesso rápido. Se a durabilidade dos dados pode ser sacrificada (principalmente com dados não críticos, ou em situações de somente leitura), ser capaz de renunciar a escritas de dados significa que esses dados somente em memória possuem um desempenho incrivelmente rápido. Ao longo dos anos, muitas APIs foram desenvolvidas para uma variedade incrivelmente ampla de linguagens de programação, tornando o Redis uma escolha fácil para desenvolvedores.
Outro banco de dados orientado a coluna, o HBase é uma implementação gratuita e aberta do BigTable do Google. Embora a HBase seja um legítimo software por direito próprio, sua popularidade e seu uso generalizado, sem dúvida, vem da sua estreita associação com o Hadoop, pois faz parte do projeto Apache. Isso facilita a busca eficiente de dados dispersos e distribuídos, que é um dos seus pontos mais fortes.
O HBase possui uma série de implementações em gigantes da internet, incluindo LinkedIn, Facebook e Spotify. Muitos projetos relacionados do Apache também oferecem suporte ao HBase, fornecendo uma camada SQL para acesso a dados (Phoenix), o que certamente seria bom para os administradores de banco de dados relacionais que procuram implementar uma solução NoSQL. E com o alto número de instalações Hadoop já existentes e seu grande crescimento, o HBase será uma solução de armazenamento NoSQL, padrão nos próximos anos. Ao final do post há um link para um excelente material com a arquitetura do HBase.
O Amazon DynamoDB é um serviço de banco de dados NoSQL em nuvem oferecido pela AWS (Amazon Web Service). O DynamoDB é rápido e flexível para todas as aplicações que precisam de latência constante abaixo de 10 milissegundos em qualquer escala. O serviço é um banco de dados em nuvem totalmente gerenciado e é compatível com os modelos de armazenamento de documentos e de chave-valor. O modelo de dados flexível, o desempenho confiável e a escalabilidade automática da capacidade de throughput fazem desse serviço a opção ideal para aplicações móveis, web e de jogos, tecnologia de anúncios e IoT, entre muitas outras aplicações. Nesta lista de Top 6, foi o que mais cresceu ao longo dos últimos 5 anos.
Neo4j é o sistema de gerenciamento de banco de dados baseado em grafos (ou Graph Database), sendo o sistema mais popular desta categoria em uso atualmente. 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.
Os dados no Neo4j podem ser acessados e atualizados através da Cypher Query Language, uma linguagem semelhante à linguagem SQL.
Os bancos de dados baseados em grafos (e o Neo4j, claro) têm vantagens em alguns casos de uso, incluindo determinados cenários de mineração de dados e reconhecimento de padrões, uma vez que as associações entre instâncias de dados são explicitamente declaradas. Veja na seção de referências uma comparação entre bancos relacionais e o Neo4j.
Cerca de 80% do Big Data são dados não estruturados. Armazenar e processar esses dados em bancos relacionais não é uma tarefa viável, considerando principalmente que eles não foram concebidos com esse objetivo. Exatamente aí os bancos de dados NoSQL estão senso usados cada vez mais, para atender aplicações analíticas criadas na era do Big Data.
David Matos
Referências:
Gerenciamento de Dados com MongoDB
Data Lake – Design, Projeto e Integração
Engenharia de Dados com Hadoop, Spark e HBase
What’s Unique About a Columnar Database?
3 thoughts on “Top 6 NoSQL Databases”