Tutorial NoSQL: o que é, tipos de bancos de dados NoSQL e exemplo
O que é NoSQL?
NoSQL Banco de dados é um sistema de gerenciamento de dados não relacional, que não requer um esquema fixo. Evita junções e é fácil de escalar. O principal objetivo do uso de 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 de usuários todos os dias.
Banco de dados NoSQL significa “Não apenas SQL” ou “Não SQL”. Embora um termo melhor fosse “NoREL”, o NoSQL pegou. Carl Strozz introduziu o conceito NoSQL em 1998.
O RDBMS tradicional usa sintaxe SQL para armazenar e recuperar dados para obter insights adicionais. 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 o NoSQL com um diagrama neste tutorial de banco de dados NoSQL:
Por que NoSQL?
O conceito de bancos de dados NoSQL tornou-se popular entre gigantes da Internet como Google, Facebook, Amazon, etc. que lidam com grandes volumes de dados. O tempo de resposta do sistema fica lento quando você usa RDBMS para grandes volumes de dados.
Para resolver esse problema, poderíamos “ampliar” nossos sistemas atualizando nosso hardware existente. Este 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 “escala horizontal”.
O banco de dados NoSQL não é relacional, portanto, é melhor dimensionado do que os bancos de dados relacionais, pois são projetados tendo em mente os aplicativos da Web.
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- Banco de dados gráfico Neo4j é lançado
- 2004- Lançamento do Google BigTable
- 2005- CouchDB é lançado
- 2007- O artigo de pesquisa sobre Amazon Dínamo é liberado
- 2008- O Facebook abre o código-fonte do Cassandra projeto
- 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 simples de colunas fixas
- Trabalhe com agregados independentes 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
Livre de esquema
- Os bancos de dados NoSQL não têm esquemas ou possuem esquemas relaxados
- Não requer nenhum tipo de definição do esquema dos dados
- Oferece estruturas heterogêneas de dados no mesmo domínio
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
- Usado principalmente sem linguagem de consulta NoSQL baseada em padrão
- Bancos de dados habilitados para Web executados 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
- Muitas vezes o conceito ACID pode ser sacrificado pela escalabilidade e rendimento
- Geralmente não há replicação síncrona entre nós distribuídos Replicação multimestre assíncrona, peer-to-peer, replicação HDFS
- Fornecendo apenas consistência eventual
- Nada compartilhado Archiarquitetura. Isso permite menos coordenação e maior distribuição.
Tipos de bancos de dados NoSQL
Bancos de dados NoSQL são categorizados principalmente em quatro tipos: par de valores-chave, orientado a colunas, baseado em gráfico e orientado a documentos. Cada categoria tem seus atributos e limitações exclusivos. Nenhum dos bancos de dados especificados 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:
- Baseado em pares de valores-chave
- Gráfico orientado a colunas
- Baseado em gráficos
- Orientado a documentos
Baseado em pares de valores-chave
Os dados são armazenados em pares chave/valor. Ele foi projetado de forma a lidar com muitos dados e carga pesada.
Os bancos de dados de armazenamento de pares chave-valor armazenam dados como uma tabela hash onde cada chave é única e o valor pode ser JSON, BLOB (Binary Large Objects), string, etc.
Por exemplo, um par chave-valor pode conter uma chave como “Website” 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. Os 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 valor-chave. Eles são todos baseados em AmazonO jornal do Dínamo.
Baseado em coluna
Os bancos de dados orientados a colunas funcionam em colunas e são baseados no documento BigTable do Google. Cada coluna é tratada separadamente. Os valores de bancos de dados de coluna única são armazenados de forma contígua.
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ões de biblioteca,
HBase, Cassandra, HBase, Hypertable são exemplos de consulta NoSQL de banco de dados baseado em colunas.
Orientado a Documentos
O banco de dados NoSQL orientado a documentos 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.
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ê possui um armazenamento de dados como um objeto JSON. Você não precisa definir o que o torna flexível.
O tipo de documento é mais usado para sistemas CMS, plataformas de blogs, aplicativos de análise em tempo real e e-commerce. Ele não deve ser usado para transações complexas que exigem múltiplas operações ou consultas contra estruturas agregadas variadas.
Amazon SimpleDB, CouchDB, MongoDB, Riak, Notas de Lótus, MongoDB, são documentos populares originados Sistemas SGBD.
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 nós. Cada nó e aresta possui um identificador exclusivo.
Comparado a um banco de dados relacional onde as tabelas estão fracamente conectadas, um banco de dados Graph é de natureza multi-relacional. A passagem do relacionamento é rápida, pois eles já estão capturados no banco de dados e não há necessidade de calculá-los.
Banco de dados de base gráfica usado principalmente para redes sociais, logística e dados espaciais.
Neo4J, gráfico infinito, OrientDB, FlockDB são alguns bancos de dados baseados em gráficos populares.
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 baseado em sua chave/ID com recurso GET
O banco de dados de armazenamento de documentos oferece consultas mais difíceis, pois entendem o valor em um par chave-valor. Por exemplo, CouchDB permite definir visualizações com MapReduce
O que é o Teorema CAP?
O teorema CAP também é chamado de teorema de Brewer. Afirma que é impossível para um armazenamento de dados distribuído oferecer mais de duas entre três garantias
- Consistência
- Disponibilidade
- 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 gravados os dados, qualquer solicitação de leitura futura deverá conter esses dados. Por exemplo, após atualizar o status do pedido, todos os clientes deverão poder 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 comunicar entre si. Aqui, se parte do banco de dados estiver indisponível, outras partes sempre não serão afetadas.
Consistência Eventual
O termo “consistência eventual” significa ter cópias de dados em múltiplas máquinas para obter alta disponibilidade e escalabilidade. Assim, 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 mútuas, mas com o passar do tempo tornam-se consistentes. Daí o nome consistência eventual.
BASE: Basicamente Adisponível, Smuitas vezes estado, Econsistência ventual
- Basicamente, disponível significa que o banco de dados está disponível o tempo todo, de acordo com o teorema CAP
- Estado suave significa mesmo sem 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 igual efeito
- Programação orientada a objetos, fácil de usar e flexível
- Os bancos de dados NoSQL não precisam de um servidor dedicado de alto desempenho
- Apoie as principais linguagens e plataformas dos desenvolvedores
- 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 velocidade, variedade, volume e complexidade dos dados
- Destaca-se em operações de bancos de dados distribuídos e multidata centers
- 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
- Capacidades de consulta limitadas
- RDBMS bancos de dados e ferramentas são comparativamente maduros
- Ele não oferece recursos tradicionais de banco de dados, como consistência quando múltiplas transações são executadas 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 tornou-se popular entre gigantes da Internet como Google, Facebook, Amazon, etc. que lidam com grandes volumes de dados
- No ano de 1998, Carlo Strozzi usou 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; são livres de esquemas ou possuem esquemas relaxados
- Quatro tipos de banco de dados NoSQL são 1). Baseado em pares de valores-chave 2). Gráfico orientado a colunas 3). Gráficos baseados 4). Orientado a documentos
- NOSQL pode lidar com dados estruturados, semiestruturados e não estruturados com igual efeito
- O teorema CAP consiste em três palavras Consistência, Disponibilidade e Tolerância de Partição
- BASE significa Basicamente Adisponível, Smuitas vezes estado, Econsistência ventual
- O termo “consistência eventual” significa ter cópias de dados em múltiplas máquinas para obter alta disponibilidade e escalabilidade
- NOSQL oferecem recursos de consulta limitados