Tipos de banco de dados NoSQL para programadores

Um conjunto de informações que é sistematizado com o objetivo de recuperar, gerenciar e organizar, é denominado Banco de Dados NoSQLQualquer desenvolvimento de software precisa de um banco de dados confiável. A escolha da base de dados é uma decisão estratégica de forma a otimizar a arquitetura do software.
Existem basicamente dois tipos de banco de dados.
SQL – como: Oracle, MySQL, PostgreSQL, Microsoft SQL Server
NoSQL – como: Couchbase, MongoDB , Redis, Cassandra
NoSQL significa ‘não apenas banco de dados SQL’ e SQL é um banco de dados do tipo relacional.

Tipos de bancos de dados NoSQL

 Bancos de dados de documentos  – os bancos de dados de documentos emparelham cada chave com uma estrutura de dados complexa denominada documento. Os documentos podem ter pares de valor-chave ou pares de matriz-chave ou documentos aninhados. Os bancos de dados NoSQL de documentos são: MongoDB, Couchbase, ArangoDB, Apache CouchDB, Cosmos DB, OrientDB, IBM Domino, MarkLogic.
Armazenamentos de valores-chave – todos os itens são armazenados como um par de valores-chave. Os armazenamentos de valores-chave estão entre os tipos de bancos de dados mais simples entre os bancos de dados NoSQL. Os bancos de dados NoSQL de valor-chave são: Redis, Apache Ignite, Memcached e Riak.
Armazenamentos de colunas largas – onde um grande conjunto de dados está envolvido, os dados são armazenados em formato de coluna em vez de linhas, pois a consulta pode ser feita utilizando bancos de dados de colunas largas. Como Cassandra, Scylla e HBase.
Armazenamentos de gráficos – Finalmente, quando os dados estão na forma de gráficos, conexões sociais, redes, mapas de estradas e links de transporte, usamos o tipo de gráfico NoSQL DB, como AllegorGraph ou Neo4j.
Elasticsearch é um mecanismo de pesquisa de nível corporativo de pesquisa de texto completo de código aberto, escalável, distribuído em tempo real.
Aqui, daremos uma olhada em 4 bancos de dados NoSQL em detalhes.

Bancos de dados mais populares

Cassandra

Cassandra tem a capacidade de lidar com grande quantidade de dados estruturados. Foi desenvolvido para pesquisar a caixa de entrada do Facebook e é um tipo distribuído de sistema de armazenamento de dados. Os dados geralmente são distribuídos entre vários servidores de commodities. A capacidade de armazenamento de dados pode ser aumentada sem esforço colocando o serviço online. Não envolve estruturas complexas, pois todos os nós estão no mesmo cluster.

Cassandra é escrito em Java é uma linguagem do tipo SQL e é o segundo melhor banco de dados de código aberto usado pelo Facebook, Cisco, Twitter, eBay, Netflix, Rackspace e outros.

Recursos

  1. Escalável linearmente
  2. Tem tempo de resposta rápido
  3. Propriedades com suporte: ACID – atomicidade, isolamento, consistência e durabilidade.
  4. MapReduce é compatível com Apache Hadoop
  5. A flexibilidade de distribuição de dados é boa
  6. Arquitetura ponto a ponto

Prós

  • Altamente escalável
  • Ponto único de falha raro
  • Multi-DC Replication
  • Pode se integrar a outros aplicativos JVM
  • Adequado para redundância, várias implantações de data center, failover e recuperação de desastres

Contras

  • Suporte insuficiente de agregações
  • Desempenho não previsível
  • Consulta ad-hoc não suportada

Redis

Redis significa Re mote  Di ctionary  S erver. O Redis é basicamente composto em linguagem C e suporta C ++, Ruby, Perl, PHP, Scala entre outros. É bem conhecido entre todos os armazenamentos de valores-chave. O Redis pode gerenciar até 2 elevado a 32, ou seja, cerca de 4,3 bilhões de chaves. Na verdade, ele foi testado para lidar com um mínimo de 250 milhões de chaves em cada instância. O Redis armazena todos os dados na RAM e faz backup no disco, pois está na memória com banco de dados permanente no disco.

Recursos

  1. Failover automático
  2. Banco de dados inteiro mantido na memória
  3. Script Lua, que também é mais fácil do que Python.
  4. Pode replicar dados para dezenas de escravos
  5. As chaves têm um tempo limitado
  6. Despejo de chaves por meio de LRU
  7. Você pode publicar / assinar

Prós

  • Diversos tipos de dados são suportados
  • Fácil de instalar
  • Executa 110000 SETs por segundo, 81000 GETs por segundo
  • Ferramenta multi-utilitários
  • O Redis Sentinel pode criar replicação em sistemas distribuídos.

Contras

  • Não suporta junções
  • O conjunto de dados deve caber na memória

HBASE

O HBase é composto em Java 8 e autorizado pelo Apache. Este é um banco de dados distribuído não relacional projetado para bancos de dados Big-Table pelo Google. O HBase pode hospedar bilhões de linhas, milhões de colunas e utiliza a API Java para acesso do usuário. A capacidade pode ser aumentada adicionando servidores e a disponibilidade de dados é garantida por vários nós mestres.

Recursos

  1. Suporte para diagnóstico de falha automática
  2. Linearmente escalável
  3. Provisão de replicação de dados
  4. Integra-se ao Hadoop, tanto como origem quanto como destino

Prós

  • Pesquisas rápidas em grandes tabelas.
  • Acesso de baixa latência de bilhões de registros de uma única linha
  • API Java para cliente
  • Auto-sharding
  • Livre de licença
  • Pode gerenciar grandes conjuntos de dados com armazenamento de arquivos HDFS
  • Flexibilidade de design de esquema
  • Alta velocidade

Contras

  • Transações não suportadas
  • Sem autenticações e permissões integradas
  • Indexação e classificação por chave.
  • Quando um HMaster é usado, ponto único de falha pode ocorrer
  • Estrutura SQL não suportada
  • Problemas de memória (no cluster)

MEMCACHED

Memcached foi adotado pelo Facebook, Netlog, Wikipedia, Flickr, YouTube, Twitter e outros.
É um sistema de armazenamento em cache de memória distribuída de código aberto de alto desempenho com recursos para aprimorar aplicativos da Web dinâmicos , diminuindo a carga do banco de dados.
Este é o valor-chave de strings ou objetos armazenados na memória, causando chamadas de banco de dados, chamadas de API ou renderização de página.

Recursos

  1. Aplicativo cliente-servidor (sobre TCP / UDP)
  2. Reduz a carga do banco de dados
  3. O servidor é uma enorme mesa de hash
  4. Competente onde a carga do banco de dados é enorme
  5. Caches de memória combinados em um pool lógico

Prós

  • A instalação é rápida
  • Grande comunidade e amplamente documentada

Contras

  • Suportado no sistema operacional Linux ou similar ao BSD
  • Redundância de dados, bloqueios, CAS, leituras não suportadas

Gostou das dicas? Se deseja mais conteúdos sobre programação, siga nos acompanhando aqui no blog da Codificar.
Se você deseja desenvolver seu próprio aplicativo, resolver problemas da sociedade e ter sucesso no mercado, entre em contato conosco agora mesmo através do formulário abaixo.