Tutorial NoSQL: Tipos de Bancos de Dados NoSQL e Exemplos

โšก Resumo Inteligente

NoSQL รฉ um sistema de gerenciamento de banco de dados nรฃo relacional que nรฃo exige um esquema fixo, evita junรงรตes e รฉ facilmente escalรกvel. Este recurso explica o que รฉ NoSQL, por que ele existe, sua histรณria, caracterรญsticas, os quatro tipos de banco de dados, o teorema CAP, consistรชncia eventual e suas vantagens e desvantagens.

  • ๐Ÿ“ฆ Definiรงรฃo: Um armazenamento nรฃo relacional e sem esquema, criado para conjuntos de dados enormes e distribuรญdos.
  • ๐Ÿ“ˆ Por que: A escalabilidade horizontal em vรกrios hosts lida com grandes volumes de dados mais rapidamente do que a escalabilidade vertical.
  • ๐Ÿ—‚๏ธ Quatro tipos: Relacionamentos do tipo chave-valor, orientados a colunas, baseados em grafos e orientados a documentos.
  • โš–๏ธ Teorema CAP: Um armazenamento distribuรญdo pode garantir apenas duas das seguintes opรงรตes: consistรชncia, disponibilidade e tolerรขncia a partiรงรตes.
  • ๐Ÿ” BASE: Basicamente disponรญvel, estado flexรญvel, consistรชncia eventual entre rรฉplicas.

Tutorial NoSQL

O que รฉ NoSQL?

Banco de dados NoSQL ร‰ um sistema de gerenciamento de dados nรฃo relacional que nรฃo exige um esquema fixo. Ele evita junรงรตes e รฉ facilmente escalรกvel. O principal objetivo de usar um banco de dados NoSQL รฉ para armazenamentos de dados distribuรญdos com necessidades de armazenamento de dados gigantescas. O NoSQL รฉ usado para big data e aplicativos web em tempo real. Por exemplo, empresas como Twitter, Facebook e Google coletar terabytes de dados de usuรกrios todos os dias.

Banco de dados NoSQL Significa "Not Only SQL" ou "Not SQL". Embora um termo melhor fosse "NoREL", NoSQL acabou se popularizando. Carl Strozzi introduziu o conceito de NoSQL em 1998.

Os SGBDs relacionais tradicionais usam a sintaxe SQL para armazenar e recuperar dados para anรกlises mais aprofundadas. Jรก um sistema de banco de dados NoSQL engloba uma ampla gama de tecnologias que podem armazenar dados estruturados, semiestruturados, nรฃo estruturados e polimรณrficos. Vamos entender o NoSQL com um diagrama neste tutorial sobre bancos de dados NoSQL:

Banco de dados NoSQL

Por que NoSQL?

O conceito de bancos de dados NoSQL tornou-se popular entre gigantes da internet como GoogleFacebook, 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. Esse mรฉtodo รฉ conhecido como "escalonamento horizontal".

NoSQL

Os bancos de dados NoSQL nรฃo sรฃo relacionais, por isso escalam melhor do que os bancos de dados relacionais, jรก que sรฃo projetados com foco em aplicaรงรตes 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 de grafos NeoO 4j foi lanรงado.
  • 2004 - Google O BigTable foi lanรงado.
  • 2005 - CouchDB รฉ lanรงado.
  • 2007 โ€“ O artigo de pesquisa sobre Amazon O Dynamo foi lanรงado.
  • 2008 โ€“ O Facebook torna o cรณdigo aberto 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 planos de coluna fixa.
  • Trabalhe com agregados autocontidos ou BLOBs.
  • Nรฃo requer mapeamento objeto-relacionalping e normalizaรงรฃo de dados.
  • Sem recursos complexos como linguagens de consulta, planejadores de consulta, junรงรตes de integridade referencial ou ACID.

Livre de esquema

  • Os bancos de dados NoSQL sรฃo ou livres de esquema ou possuem esquemas flexรญveis.
  • Nรฃo requer nenhum tipo de definiรงรฃo do esquema dos dados.
  • Oferecer estruturas de dados heterogรชneas no mesmo domรญnio.
Recursos do NoSQL
NoSQL รฉ livre de esquemas

API simples

  • Oferece interfaces fรกceis de usar para armazenamento e consulta de dados.
  • APIs permitem mรฉtodos de manipulaรงรฃo e seleรงรฃo de dados de baixo nรญvel.
  • Protocolos baseados em texto sรฃo usados โ€‹โ€‹principalmente com HTTP REST e JSON.
  • Utilizava principalmente uma linguagem de consulta NoSQL sem padrรฃo definido.
  • Bancos de dados habilitados para a 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 em prol da escalabilidade e da produtividade.
  • Na maioria dos casos, nรฃo hรก replicaรงรฃo sรญncrona entre nรณs distribuรญdos; replicaรงรฃo assรญncrona multi-mestre, ponto a ponto e replicaรงรฃo HDFS sรฃo utilizadas.
  • Garantir apenas a consistรชncia eventual.
  • Arquitetura sem compartilhamento. Isso possibilita menos coordenaรงรฃo e maior distribuiรงรฃo.
Recursos do NoSQL

NoSQL nรฃo รฉ nada compartilhado.

Tipos de bancos de dados NoSQL

Bancos de dados NoSQL Os bancos de dados sรฃo categorizados principalmente em quatro tipos: pares chave-valor, orientados a colunas, baseados em grafos e orientados a documentos. Cada categoria possui seus atributos e limitaรงรตes especรญficos. Nenhum dos bancos de dados mencionados รฉ melhor para resolver todos os problemas. Os usuรกrios devem selecionar o banco de dados com base nas necessidades do seu 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

Tipos de bancos de dados NoSQL

Baseado em pares de valores-chave

Os dados sรฃo armazenados em pares chave/valor. Esse sistema รฉ projetado para lidar com grandes volumes de dados e cargas elevadas. Bancos de dados com armazenamento de pares chave/valor armazenam dados como uma tabela hash, onde cada chave รฉ รบnica e o valor pode ser um JSON, BLOB (Objetos Binรกrios Grandes), string, etc.

Por exemplo, um par chave-valor pode conter uma chave como โ€œWebsiteโ€ associada a um valor como โ€œGuru99".

Baseado em pares de valores-chave

ร‰ um dos exemplos mais bรกsicos de banco de dados NoSQL. Esse tipo de banco de dados NoSQL รฉ usado para armazenar coleรงรตes, dicionรกrios, arrays associativos, etc. Os bancos de dados chave-valor ajudam o desenvolvedor a armazenar dados sem esquema. Eles sรฃo ideais para lojas virtuais.ping Conteรบdo do carrinho.

Redis, Dynamo e Riak sรฃo alguns exemplos de bancos de dados NoSQL de armazenamento chave-valor. Todos eles sรฃo baseados em AmazonO jornal do Dรญnamo.

Baseado em coluna

Bancos de dados orientados a colunas funcionam com base em colunas e sรฃo fundamentados no artigo sobre BigTable. GoogleCada 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

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 utilizados para gerenciar data warehouses. inteligรชncia de negรณcios, CRM e catรกlogos de fichas de biblioteca.

HBase, Cassandra, e Hypertable sรฃo exemplos de consultas NoSQL em bancos de dados baseados em colunas.

Orientado a Documentos

Um banco de dados NoSQL orientado a documentos armazena e recupera dados como pares chave-valor, mas a parte do valor รฉ armazenada como um documento. O documento รฉ armazenado em formatos JSON ou XML. O valor รฉ interpretado pelo banco de dados e pode ser consultado.

Relacional vs. Documento

Relacional vs. Documento

Neste diagrama ร  sua esquerda, vocรช pode ver que temos linhas e colunas, e ร  direita, temos um banco de dados de documentos com uma estrutura semelhante ร  do JSON. Em um banco de dados relacional, vocรช precisa saber quais colunas existem, e assim por diante. Jรก em um banco de dados de documentos, vocรช tem um armazenamento de dados como um objeto JSON. Vocรช nรฃo precisa defini-lo, o que o torna flexรญvel.

O tipo de documento รฉ usado principalmente em sistemas CMS, plataformas de blogs, anรกlises em tempo real e aplicaรงรตes de comรฉrcio eletrรดnico. Nรฃo deve ser usado para transaรงรตes complexas que exigem mรบltiplas operaรงรตes ou consultas em estruturas agregadas variadas.

Amazon SimpleDB, CouchDB, MongoDBRiak e Lotus Notes sรฃo softwares populares orientados a documentos. Sistemas SGBD.

Baseado em grรกfico

Um banco de dados do tipo grafo armazena entidades, bem como as relaรงรตes entre essas entidades. A entidade รฉ armazenada como um nรณ, com o relacionamento representado por arestas. Uma aresta estabelece uma relaรงรฃo entre nรณs. Cada nรณ e aresta possui um identificador รบnico.

Baseado em grรกfico

Em comparaรงรฃo com um banco de dados relacional, onde as tabelas sรฃo fracamente conectadas, um banco de dados de grafos รฉ multirrelacional por natureza. Percorrer os relacionamentos รฉ rรกpido, pois eles jรก estรฃo registrados no banco de dados, nรฃo sendo necessรกrio calculรก-los. Bancos de dados baseados em grafos sรฃo usados โ€‹โ€‹principalmente para redes sociais, logรญstica e dados espaciais.

Neo4J, grรกfico infinito, OrientDBO FlockDB e o db::graph sรฃo alguns exemplos populares de bancos de dados baseados em grafos.

Ferramentas de mecanismo de consulta para NoSQL

O mecanismo de recuperaรงรฃo de dados mais comum รฉ a recuperaรงรฃo de um valor com base em sua chave/ID por meio de um recurso GET, utilizando a API REST.

Bancos de dados de armazenamento de documentos oferecem consultas mais complexas, pois compreendem 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 conhecido como teorema de Brewer, afirma que รฉ impossรญvel um armazenamento de dados distribuรญdo oferecer mais de duas das 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 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 dos dados em vรกrias mรกquinas para obter alta disponibilidade e escalabilidade. Assim, as alteraรงรตes feitas em qualquer item de dados em uma mรกquina precisam ser propagadas para as outras rรฉplicas.

A replicaรงรฃo de dados pode nรฃo ser instantรขnea, pois algumas cรณpias serรฃo atualizadas imediatamente, enquanto outras levarรฃo algum tempo para serem atualizadas. Essas cรณpias podem ser mutuamente inconsistentes, mas, com o 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, conforme o teorema CAP.
  • Estado flexรญvel significa que, mesmo sem nenhuma entrada, o estado do sistema pode mudar.
  • Consistรชncia eventual significa que o sistema se tornarรก consistente ao longo do tempo.

Consistรชncia Eventual

Vantagens do NoSQL

  • Pode ser utilizado como fonte de dados primรกria ou analรญtica.
  • Capacidade de anรกlise de Big Data.
  • Nรฃo hรก um รบnico ponto de falha.
  • Reproduรงรฃo fรกcil.
  • Nรฃo hรก necessidade de uma camada de cache separada.
  • Ele fornece desempenho rรกpido e escalabilidade horizontal.
  • Capaz de lidar com dados estruturados, semiestruturados e nรฃo estruturados com igual eficรกcia.
  • 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 de desenvolvimento.
  • Mais simples de implementar do que usar um SGBD relacional.
  • Ele pode servir como fonte de dados primรกria para aplicativos online.
  • Lida com big data, gerenciando a velocidade, a variedade, o volume e a complexidade dos dados.
  • Possui excelente desempenho em operaรงรตes com bancos de dados distribuรญdos e mรบltiplos centros de dados.
  • 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

  • Nรฃo existem regras de padronizaรงรฃo.
  • Capacidades de consulta limitadas.
  • RDBMS As bases de dados e as ferramentas sรฃo relativamente maduras.
  • Ele nรฃo oferece recursos tradicionais de banco de dados, como consistรชncia quando mรบltiplas transaรงรตes sรฃo executadas simultaneamente.
  • Com o aumento do volume de dados, torna-se difรญcil manter valores รบnicos, pois a criaรงรฃo de chaves se torna complexa.
  • Nรฃo funciona tรฃo bem com dados relacionais.
  • A curva de aprendizado รฉ รญngreme para novos desenvolvedores.
  • As opรงรตes de cรณdigo aberto nรฃo sรฃo tรฃo populares entre as empresas.

Perguntas Frequentes

Os bancos de dados NoSQL lidam com os grandes volumes de dados, variados e de rรกpida mudanรงa, produzidos por pipelines de IA e big data. Seu esquema flexรญvel e escalabilidade horizontal sรฃo ideais para armazenar dados de treinamento, logs e recursos em tempo real em clusters distribuรญdos.

Sim. Vรกrios bancos de dados NoSQL, como MongoDB O Elasticsearch agora oferece suporte a campos vetoriais e busca por similaridade. Isso permite que aplicativos de IA armazenem embeddings ao lado de documentos para recursos de busca semรขntica e recomendaรงรฃo.

Bancos de dados SQL sรฃo relacionais, com um esquema fixo, e utilizam tabelas, linhas e junรงรตes. Bancos de dados NoSQL sรฃo nรฃo relacionais, utilizam esquemas flexรญveis e escalam horizontalmente, armazenando dados como documentos, pares chave-valor, colunas ou grafos.

Evite NoSQL quando precisar de transaรงรตes ACID robustas, junรงรตes complexas ou integridade de dados estrita, como em bancos de dados. Bancos de dados relacionais maduros lidam melhor com consistรชncia de mรบltiplos registros e consultas padronizadas nesses casos.

Resuma esta postagem com: