---
Conteúdo para fins de estudos da graduação de Engenharia de Software. (Teórico)
Livro de recomendação: https://amzn.to/3XRCWYj
O que são bancos de dados NoSQL?
Bancos de dados NoSQL é uma alternativa aos tradicionais bancos de dados relacionais. Eles foram criados para atender às necessidades de aplicações modernas que lidam com grandes volumes de dados, escalabilidade, flexibilidade e alta disponibilidade. Ao contrário dos bancos de dados relacionais que usam tabelas e SQL para manipulação de dados, os NoSQL utilizam diferentes modelos de dados, como chave-valor, documentos, colunas e grafos. 🤖
---
Tipos de Bancos de Dados NoSQL
1. Chave-Valor 🔑
Esses bancos armazenam dados em pares de chave e valor. Cada chave é única e tem um valor associado. São excelentes para aplicações que necessitam de um acesso rápido aos dados, como sistemas de cache ou de vendas online. Exemplos incluem Redis e Amazon DynamoDB.
2. Documentos 📄
Neste tipo de banco, os dados são armazenados em documentos, geralmente no formato JSON. Eles são ideais para aplicações que precisam de flexibilidade nos dados, como sistemas de relatórios dinâmicos. Um exemplo popular é o MongoDB (Uso muito para meus projetos pessoais).
3. Colunas 📊
Aqui, os dados são organizados em colunas em vez de linhas. Cada coluna pode ter vários atributos, e essas colunas são agrupadas em famílias. Esses bancos são ideais para grandes volumes de dados distribuídos, como no Apache HBase.
4. Grafos 🔗
Bancos de dados baseados em grafos são usados para representar e consultar relacionamentos complexos entre dados. Eles são perfeitos para aplicações como redes sociais ou recomendação de amigos, onde o relacionamento entre os dados é tão importante quanto os próprios dados. O Neo4j é um exemplo.
---
Propriedades do Teorema CAP
Os bancos de dados NoSQL são frequentemente analisados em relação ao Teorema CAP, que define três propriedades essenciais:
Consistência ©: Todos os nós têm os mesmos dados ao mesmo tempo.
Disponibilidade (A): O sistema está sempre disponível para responder às solicitações.
Tolerância a Partições (P): O sistema continua funcionando mesmo quando partes da rede falham.
É impossível otimizar todas as três simultaneamente, por isso, os sistemas NoSQL geralmente priorizam dois desses aspectos. Por exemplo, aplicações que precisam de alta consistência e disponibilidade vão priorizar esses dois, mas podem comprometer a tolerância a partições. 💡
---
Exemplos Práticos de Bancos de Dados NoSQL
DynamoDB (Chave-Valor e Documento): Utiliza dois tipos de leitura de consistência: eventualmente consistente e fortemente consistente. Ele permite altíssima escalabilidade e é perfeito para aplicações de e-commerce.
HBase (Colunas): Utilizado em aplicações que exigem grande disponibilidade, fornece replicação de regiões para aumentar a disponibilidade de leitura e garante consistência na linha do tempo.
Neo4j (Grafos): Utiliza a linguagem Cypher para manipular dados. Um exemplo de comando é Match (n) Return (n) que retorna todos os nós de uma base de dados.
---
Exemplos de Comandos em Bancos NoSQL
MongoDB (Documentos):
Para editar: db.nome_da_coleção.updateOne()
Para inserir: db.nome_da_coleção.insertOne()
Para remover: db.nome_da_coleção.deleteOne()
HBase (Colunas):
Para inserir: put 'veículos', '1', 'motor:combustível', 'Etanol'
Para localizar um registro: get 'veículos', '1'
---
Conclusão
Bancos de dados NoSQL são ideais para aplicações modernas que exigem alta flexibilidade, desempenho e escalabilidade. Com várias opções de modelagem de dados, como chave-valor, documentos, colunas e grafos, eles oferecem soluções para diferentes tipos de problemas. Dependendo das necessidades da aplicação, como consistência forte ou disponibilidade constante, é possível escolher o tipo de banco NoSQL mais adequado. 🚀
Comentários
Postar um comentário