4.2 4.2 - Banco de dados NoSQL (Key/Value, Orientados a Documentos e Grafos).
Bancos de dados NoSQL são sistemas de gerenciamento de dados que não seguem o modelo relacional tradicional.
Eles permitem armazenar e consultar dados de forma mais flexível, escalável e eficiente do que os bancos de dados relacionais.
Existem diferentes tipos de bancos de dados NoSQL, cada um com suas características e aplicações.

Neste texto, vamos ensinar sobre três categorias principais:
Key/Value, Orientados a Documentos e Grafos.

Bancos de dados Grafos são os mais avançados entre os NoSQL.
Eles armazenam dados como nós e arestas, que representam entidades e relacionamentos entre elas.
Esses bancos de dados têm como vantagens a riqueza dos dados, a eficiência das consultas e a capacidade de análise avançada.
Por outro lado, eles têm como desvantagens a complexidade do modelo, a falta de maturidade e a dificuldade de escalabilidade.
Eles são ideais para aplicações que envolvem dados altamente conectados e dinâmicos, como redes sociais, recomendações, rotas etc.
Alguns exemplos de bancos de dados Grafos são Neo4j, OrientDB, ArangoDB etc.
Em comparação com os bancos de dados relacionais, eles oferecem mais potencial e profundidade, mas menos estabilidade e padronização.
Um exemplo prático de uso de um banco de dados Grafos é o cálculo das rotas mais curtas entre dois pontos em um mapa.

Bancos de dados Orientados a Documentos são os mais populares entre os NoSQL.
Eles armazenam dados como documentos, que são estruturas semelhantes a JSON ou XML, com campos e valores variáveis.
Esses bancos de dados têm como vantagens a flexibilidade dos dados, a expressividade das consultas e a facilidade de integração com aplicações web.
Por outro lado, eles têm como desvantagens a complexidade do gerenciamento, a falta de padronização e a dificuldade de garantir a consistência dos dados.
Eles são ideais para aplicações que lidam com dados complexos e heterogêneos, como redes sociais, blogs, e-commerce etc.
Alguns exemplos de bancos de dados Orientados a Documentos são MongoDB, CouchDB, Firebase etc.
Em comparação com os bancos de dados relacionais, eles oferecem mais flexibilidade e variedade, mas menos consistência e integridade.
Um exemplo prático de uso de um banco de dados Orientado a Documentos é o armazenamento das postagens e comentários em um blog.

Bancos de dados Key/Value são os mais simples e rápidos entre os NoSQL.
Eles armazenam dados como pares de chave e valor, onde a chave é um identificador único e o valor pode ser qualquer tipo de dado, como texto, número, imagem etc.
Esses bancos de dados têm como vantagens a alta performance, a facilidade de uso e a escalabilidade horizontal.
Por outro lado, eles têm como desvantagens a falta de estrutura, a limitação nas consultas e a inconsistência dos dados.
Esses bancos de dados são ideais para aplicações que precisam de acesso rápido e frequente a dados simples, como caches, sessões, configurações etc.
Alguns exemplos de bancos de dados Key/Value são Redis, Memcached, DynamoDB etc.
Em comparação com os bancos de dados relacionais, eles oferecem mais velocidade e simplicidade, mas menos funcionalidade e confiabilidade.
Um exemplo prático de uso de um banco de dados Key/Value é o armazenamento das preferências dos usuários em um site de compras online.