Bancos de Dados

Tipos de banco de dados NoSQL

Veja neste artigo os principais tipos de banco de dados NoSQL.

há 2 anos 8 meses

Formação Analista de banco de dados
Conheça a formação em detalhes

Em artigos anteriores sobre Banco de Dados, falamos sobre os principais SGBDs NoSQL, termo usado para descrever bancos de dados não relacionais de alto desempenho, que são amplamente reconhecidos pela facilidade de desenvolvimento, desempenho escalável, alta disponibilidade, resiliência e que possuem como principais características:

  • Linguagem simples;
  • A não exigência de máquinas extremamente poderosas;
  • Facilidade de manutenção;
  • Popularidade em grandes empresas, entre outros.

Porém, dentro do mundo NoSQL, existem diversos tipos de bancos de dados. Neste artigo, falaremos sobre estes tipos, suas características e exemplos.

Basicamente, os tipos de bancos de dados NoSQL podem ser vistos abaixo e veremos cada um deles de forma individual ao longo do artigo:

  • Colunares;
  • Documentos;
  • Grafos;
  • Chave-valor.

Clean Code e SOLID - Escrevendo código limpo e escalável
Curso Clean Code e SOLID - Escrevendo código limpo e escalável
Conhecer o curso

Bancos de dados colunares

Banco de dados colunares possuem o armazenamento orientado a colunas, o que influencia significativamente na sua performance, já que diminuem a quantidade de dados que você precisará carregar no disco.

Esses bancos de dados utilizam-se de tabelas para representar entidades e seus dados são gravados em discos e agrupados por colunas separadas. Como vantagens podemos listar:

  • Capacidade de compreensão dos dados;
  • Indicados para sistemas que precisam ler e realizar operações de consultas em grandes volumes de dados (OLAP);

Como exemplo de banco de dados colunares podemos citar o Cassandra.

Logo_Cassandra

Desenvolvido em Java, gratuito e multiplataforma, o Cassandra foi originalmente desenvolvido no Facebook, que em 2008 compartilhou seu código-fonte para a comunidade e agora é um projeto de sistema de banco de dados mantido pelos desenvolvedores da fundação Apache e por muitas outras empresas que se tornaram colaboradoras (Apache Cassandra).

Dentre suas características, podemos destacar:

  • Altamente escalável;
  • Fornece acesso de baixa latência a clientes;
  • Gratuito;
  • Orientado por colunas (o que torna um banco de dados mais rápido);
  • Possui um modelo distribuído otimizado e descentralizado, entre outros.

Bancos de dados orientado a documentos

Também conhecido como armazenamento por documentos, os bancos de dados orientados a documentos são um modelo de banco de dados projetado para gerenciar, armazenar e recuperar informações orientadas a documentos, não carecendo de colunas pré-montadas, como vimos acima no Cassandra, e é um modelo eficiente para o trabalho com dados não estruturados (que não podem ser organizados em tabelas).

Popularmente conhecido por ser um dos principais da categoria de banco de dados NoSQL, tem como principal característica o fato de conter todas as informações em um único documento.

Como exemplo de banco de dados orientado a documentos podemos citar o MongoDB.

Logo_MongoDB

De código aberto, multiplataforma e lançado em 2009, o MongoDB é considerado um “líder” no quesito SGBD NoSQL. Orientado a documentos e baseado no formato JSON (JavaScript Object Notation), possui uma curva de aprendizagem baixíssima.

Dentre suas principais características, podemos citar:

  • Totalmente gratuito;
  • Possui uma baixa curva de aprendizagem, como dito acima;
  • Fácil escalabilidade horizontal;
  • Multiplataforma;
  • Suporte para transações ACID multi-documento;
  • Consultas suportam funções JavaScript personalizadas, entre outros.

Bancos de dados orientados a grafos

Com a armazenagem de documentos em forma de grafos, no banco de dados orientado a grafos os dados são predispostos no formato de arcos conectados por arestas.

Criados especificamente para possibilitar o armazenamento de relacionamentos e a navegação, utilizam nós para armazenar entidades de dados e bordas para armazenar os relacionamentos entre estas entidades. Foi um tipo de Banco de dados criado especialmente para lidar com as limitações de banco de dados relacionais. Voltado para trabalho com dados altamente conectados e com relacionamentos dinâmicos em grandes volumes, são bastante utilizados para aplicações como redes sociais, sistema de recomendações e outros tipos de dados mais complexos.

Como exemplo de banco de dados orientado a grafos podemos citar o Neo4j.

Logo_Neo4j

Desenvolvido pela Neo4j, é um banco de dados orientado a grafos lançado em 2007 escrito em Java, open source que possui disponível uma “edição da comunidade” de código aberto licenciada pela GPL3. Utilizado por grandes empresas como Walmart e LinkedIn, por exemplo, possui uma linguagem de acesso simples e intuitiva para grafos.

Dentre suas principais características, podemos citar:

  • Linguagem de acesso simples e intuitiva para grafos;
  • Possui uma linguagem de consulta própria chamada Cypher;
  • Possui uma comunidade bem ativa no Github e Stackoverflow;
  • Os dados podem ser acessados utilizando uma API em Java ou uma API RESTful, entre outras.

Banco de dados do tipo chave-valor

Bastante simples, o banco de dados do tipo chave-valor é formado apenas por pares de chaves com valores associados, permitindo obter os valores quando uma consulta é realizada a uma chave.

Por conta de sua simplicidade, não são empregados em aplicações mais complexas. Uma de suas principais aplicações são os sistemas de armazenamento embarcados e dados em cache.

Como exemplo de banco de dados do tipo chave-valor podemos citar o Redis.

Logo_Redis

Redis é o banco de dados de chave-valor mais popular do mundo, ou seja, seus dados são armazenados em forma de chave valor, que armazenam objetos indexados por chaves e possibilitam a busca por estes objetos a parte das mesmas.

Criado por Salvatore Sanfiippo, foi liberado de forma open-source em 2009. É escrito utilizando a linguagem de programação C, porém, compatível com várias outras linguagens de programação como: Java, Python, PHP, C++, entre outras. Extremamente rápido, tanto para escrita como para leitura de dados, pois seus dados são armazenados na memória, seus comandos são executados anatomicamente e possui modelo cliente-servidor.

Dentre suas principais características, podemos citar:

  • Desempenho muito rápido;
  • Multiplataforma;
  • Estruturas de dados na memória;
  • Versatilidade e facilidade de uso;
  • Replicação e persistência;
  • Compatibilidade com a sua linguagem de desenvolvimento preferencial, entre outros.

Autor(a) do artigo

Ana Paula de Andrade
Ana Paula de Andrade

Graduanda em Sistemas de Informação pelo Instituto Federal da Bahia. É responsável pelo atendimento ao cliente, gerenciamento de redes sociais e revisão de cursos, além da redação de artigos para o blog da TreinaWeb.

Todos os artigos

Artigos relacionados Ver todos