Tutorial NoSQL: Tipos de bancos de dados NoSQL, o que é e exemplo

O que é NoSQL?

NoSQL O banco de dados é um sistema de gerenciamento de dados não relacional, que não requer um esquema fixo. Isso evita junções e é fácil de escalar. O principal objetivo de usar um banco de dados NoSQL é para armazenamentos de dados distribuídos com enormes necessidades de armazenamento de dados. NoSQL é usado para Big data e aplicativos da web em tempo real. Por exemplo, empresas como Twitter, Facebook e Google coletam terabytes de dados do usuário todos os dias.

Banco de dados NoSQL significa 'Não apenas SQL' ou 'Não SQL'. Embora um termo melhor seja 'NoREL', o NoSQL pegou. Carl Strozz introduziu o conceito NoSQL em 1998.

O RDBMS tradicional usa a sintaxe SQL para armazenar e recuperar dados para novas percepções. Em vez disso, um sistema de banco de dados NoSQL abrange uma ampla gama de tecnologias de banco de dados que podem armazenar dados estruturados, semiestruturados, não estruturados e polimórficos. Vamos entender sobre NoSQL com um diagrama neste tutorial de banco de dados NoSQL:

Neste tutorial NoSQL para iniciantes, você aprenderá noções básicas de NoSQL como:

Por que NoSQL?

O conceito de bancos de dados NoSQL se tornou popular entre gigantes da Internet como Google, Facebook, Amazon, etc., que lidam com grandes volumes de dados. O tempo de resposta do sistema torna-se lento quando você usa RDBMS para grandes volumes de dados.

Para resolver esse problema, poderíamos 'escalar' nossos sistemas atualizando nosso hardware existente. Esse processo é caro.

A alternativa para esse problema é distribuir a carga do banco de dados em vários hosts sempre que a carga aumentar. Este método é conhecido como 'escalonamento'.

O banco de dados NoSQL não é relacional, portanto, é melhor escalonável do que os bancos de dados relacionais, pois são projetados com aplicativos da web em mente.

Breve história dos bancos de dados NoSQL

  • 1998- Carlo Strozzi usa o termo NoSQL para seu banco de dados relacional leve e de código aberto
  • 2000- O banco de dados gráfico Neo4j é lançado
  • 2004- Google BigTable é lançado
  • 2005- CouchDB é lançado
  • 2007- É lançado o artigo de pesquisa sobre o Amazon Dynamo
  • 2008- Facebooks abrem fontes do projeto Cassandra
  • 2009- O termo NoSQL foi reintroduzido

Recursos do NoSQL

Não relacional

  • Os bancos de dados NoSQL nunca seguem o modelo relacional
  • Nunca forneça tabelas com registros de coluna fixa simples
  • Trabalhe com agregados autocontidos ou BLOBs
  • Não requer mapeamento relacional de objeto e normalização de dados
  • Sem recursos complexos, como linguagens de consulta, planejadores de consulta,

    junções de integridade referencial, ACID

Esquema-livre

  • Os bancos de dados NoSQL são livres de esquemas ou têm esquemas relaxados
  • Não requer nenhum tipo de definição do esquema dos dados
  • Oferece estruturas heterogêneas de dados no mesmo domínio

NoSQL é livre de esquemas

API simples

  • Oferece interfaces fáceis de usar para armazenamento e consulta de dados fornecidos
  • APIs permitem manipulação de dados de baixo nível e métodos de seleção
  • Protocolos baseados em texto usados ​​principalmente com HTTP REST com JSON
  • Geralmente não usa linguagem de consulta NoSQL baseada em padrão
  • Bancos de dados habilitados para web funcionando como serviços voltados para a internet

Distribuído

  • Vários bancos de dados NoSQL podem ser executados de forma distribuída
  • Oferece recursos de escalonamento automático e failover
  • Freqüentemente, o conceito de ACID pode ser sacrificado para escalabilidade e taxa de transferência
  • Quase sempre sem replicação síncrona entre nós distribuídos Replicação multimestre assíncrona, ponto a ponto, Replicação HDFS
  • Fornecendo apenas consistência eventual
  • Arquitetura de Nada Compartilhado. Isso permite menos coordenação e maior distribuição.

NoSQL é nada compartilhado.

Tipos de bancos de dados NoSQL

Bancos de dados NoSQL são categorizados principalmente em quatro tipos: par de valores-chave, orientado a coluna, baseado em gráfico e orientado a documento. Cada categoria tem seus atributos e limitações exclusivos. Nenhum banco de dados especificado acima é melhor para resolver todos os problemas. Os usuários devem selecionar o banco de dados com base nas necessidades do produto.

Tipos de bancos de dados NoSQL:

  • Com base em par de valores-chave
  • Gráfico orientado por coluna
  • Com base em gráficos
  • Orientado a documentos

Com base em par de valores-chave

Os dados são armazenados em pares de chave / valor. Ele foi projetado de forma a lidar com muitos dados e cargas pesadas.

Os bancos de dados de armazenamento de par de chave-valor armazenam dados como uma tabela hash em que cada chave é única e o valor pode ser JSON, BLOB (objetos binários grandes), string, etc.

Por exemplo, um par de valores-chave pode conter uma chave como 'Site' associada a um valor como 'Guru99'.

É um dos exemplos mais básicos de banco de dados NoSQL. Este tipo de banco de dados NoSQL é usado como uma coleção, dicionários, matrizes associativas, etc. Armazenamentos de valores-chave ajudam o desenvolvedor a armazenar dados sem esquema. Eles funcionam melhor para o conteúdo do carrinho de compras.

Redis, Dynamo, Riak são alguns exemplos NoSQL de bancos de dados de armazenamento de valores-chave. Todos eles são baseados no jornal Dynamo da Amazon.

Baseado em coluna

Bancos de dados orientados a colunas funcionam em colunas e são baseados em papel BigTable do Google. Cada coluna é tratada separadamente. Os valores de bancos de dados de coluna única são armazenados de forma contígua.

Banco de dados NoSQL baseado em coluna

Eles oferecem alto desempenho em consultas de agregação como SUM, COUNT, AVG, MIN etc., pois os dados estão prontamente disponíveis em uma coluna.

Bancos de dados NoSQL baseados em colunas são amplamente usados ​​para gerenciar data warehouses, inteligência de negócios , CRM, catálogos de cartão de biblioteca,

HBase, Cassandra, HBase, Hypertable são exemplos de consulta NoSQL de banco de dados baseado em coluna.

Orientado a documentos:

O banco de dados NoSQL orientado a documento armazena e recupera dados como um par de valores-chave, mas a parte do valor é armazenada como um documento. O documento é armazenado nos formatos JSON ou XML. O valor é compreendido pelo banco de dados e pode ser consultado.

Relacional vs. Documento

Neste diagrama à sua esquerda você pode ver que temos linhas e colunas, e à direita, temos um banco de dados de documentos que possui uma estrutura semelhante ao JSON. Agora, para o banco de dados relacional, você precisa saber quais colunas possui e assim por diante. No entanto, para um banco de dados de documentos, você tem armazenamento de dados como um objeto JSON. Você não precisa definir o que o torna flexível.

O tipo de documento é usado principalmente para sistemas CMS, plataformas de blog, análises em tempo real e aplicativos de comércio eletrônico. Ele não deve ser usado para transações complexas que requerem várias operações ou consultas em várias estruturas agregadas.

Amazon SimpleDB, CouchDB, MongoDB, Riak, Lotus Notes, MongoDB são sistemas DBMS populares originados de documentos.

Baseado em gráfico

Um banco de dados do tipo gráfico armazena entidades, bem como as relações entre essas entidades. A entidade é armazenada como um nó com o relacionamento como arestas. Uma aresta fornece um relacionamento entre os nós. Cada nó e borda possui um identificador exclusivo.

Comparado a um banco de dados relacional em que as tabelas são fracamente conectadas, um banco de dados Graph é multi-relacional por natureza. O relacionamento transversal é rápido, pois eles já são capturados no banco de dados e não há necessidade de calculá-los.

Base de dados gráfica usada principalmente para redes sociais, logística, dados espaciais.

Neo4J, Infinite Graph, OrientDB, FlockDB são alguns bancos de dados populares baseados em gráficos.

Ferramentas de mecanismo de consulta para NoSQL

O mecanismo de recuperação de dados mais comum é a recuperação baseada em REST de um valor com base em sua chave / ID com recurso GET

Banco de dados de armazenamento de documentos oferece consultas mais difíceis, pois eles entendem o valor em um par de valores-chave. Por exemplo, CouchDB permite definir visualizações com MapReduce

Qual é o teorema CAP?

O teorema do CAP também é chamado de teorema do cervejeiro. Afirma que é impossível para um armazenamento de dados distribuído oferecer mais de duas de três garantias

  1. Consistência
  2. Disponibilidade
  3. Tolerância de partição

Consistência:

Os dados devem permanecer consistentes mesmo após a execução de uma operação. Isso significa que, uma vez que os dados são gravados, qualquer solicitação de leitura futura deve conter esses dados. Por exemplo, após atualizar o status do pedido, todos os clientes devem ser capazes de ver os mesmos dados.

Disponibilidade:

O banco de dados deve estar sempre disponível e responsivo. Não deve haver nenhum tempo de inatividade.

Tolerância de partição:

Tolerância de partição significa que o sistema deve continuar a funcionar mesmo que a comunicação entre os servidores não seja estável. Por exemplo, os servidores podem ser particionados em vários grupos que podem não se comunicar uns com os outros. Aqui, se parte do banco de dados não estiver disponível, as outras partes sempre não serão afetadas.

Consistência Eventual

O termo 'consistência eventual' significa ter cópias de dados em várias máquinas para obter alta disponibilidade e escalabilidade. Portanto, as alterações feitas em qualquer item de dados em uma máquina devem ser propagadas para outras réplicas.

A replicação de dados pode não ser instantânea, pois algumas cópias serão atualizadas imediatamente, enquanto outras serão atualizadas no devido tempo. Essas cópias podem ser mutuamente, mas com o tempo, elas se tornam consistentes. Daí o nome consistência eventual.

BASE: B asicamente PARA disponível, S frequentemente estado, E consistência ventual

  • Basicamente, disponível significa que o banco de dados está disponível o tempo todo de acordo com o teorema CAP
  • O estado suave significa mesmo sem uma entrada; o estado do sistema pode mudar
  • Consistência eventual significa que o sistema se tornará consistente ao longo do tempo

Vantagens do NoSQL

  • Pode ser usado como fonte de dados primária ou analítica
  • Capacidade de Big Data
  • Nenhum ponto único de falha
  • Replicação fácil
  • Não há necessidade de camada de cache separada
  • Ele fornece desempenho rápido e escalabilidade horizontal.
  • Pode lidar com dados estruturados, semiestruturados e não estruturados com o mesmo efeito
  • Programação orientada a objetos que é fácil de usar e flexível
  • Os bancos de dados NoSQL não precisam de um servidor dedicado de alto desempenho
  • Suporte às principais linguagens e plataformas do desenvolvedor
  • Simples de implementar do que usar RDBMS
  • Ele pode servir como fonte de dados primária para aplicativos online.
  • Lida com Big Data que gerencia a velocidade, variedade, volume e complexidade dos dados
  • Excelente em banco de dados distribuído e operações de multi-data center
  • Elimina a necessidade de uma camada de cache específica para armazenar dados
  • Oferece um design de esquema flexível que pode ser facilmente alterado sem tempo de inatividade ou interrupção do serviço

Desvantagens do NoSQL

  • Sem regras de padronização
  • Recursos de consulta limitados
  • Bancos de dados e ferramentas RDBMS são comparativamente maduros
  • Ele não oferece nenhum recurso de banco de dados tradicional, como consistência quando várias transações são realizadas simultaneamente.
  • Quando o volume de dados aumenta, é difícil manter valores únicos, pois as chaves se tornam difíceis
  • Não funciona tão bem com dados relacionais
  • A curva de aprendizado é difícil para novos desenvolvedores
  • Opções de código aberto não são tão populares para empresas.

Resumo

  • NoSQL é um DMS não relacional, que não requer um esquema fixo, evita junções e é fácil de escalar
  • O conceito de bancos de dados NoSQL se tornou popular entre os gigantes da Internet como Google, Facebook, Amazon, etc., que lidam com grandes volumes de dados
  • No ano de 1998 - Carlo Strozzi usa o termo NoSQL para seu banco de dados relacional leve e de código aberto
  • Os bancos de dados NoSQL nunca seguem o modelo relacional, pois são livres de esquemas ou têm esquemas relaxados
  • Quatro tipos de banco de dados NoSQL são 1) .Parar baseado em valores-chave 2). Gráfico orientado a colunas 3). Baseado em gráficos 4). Orientado para documentos
  • NOSQL pode lidar com dados estruturados, semiestruturados e não estruturados com o mesmo efeito
  • O teorema CAP consiste em três palavras: Consistência, Disponibilidade e Tolerância de Partição
  • BASE significa B asicamente PARA disponível, S frequentemente estado, E consistência ventual
  • O termo 'consistência eventual' significa ter cópias de dados em várias máquinas para obter alta disponibilidade e escalabilidade
  • NOSQL oferece recursos de consulta limitados