Pular para o conteúdo principal

Engenharia de Software - Banco de dados NOSQL

---


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

Postagens mais visitadas deste blog

Tryhackme  -  Moniker Link (CVE-2024–21413)

```html id="n5x2qw" TryHackMe — Moniker Link (CVE-2024-21413) Writeup CVE-2024-21413, also known as Moniker Link , is a critical Microsoft Outlook vulnerability disclosed in February 2024. This flaw allows attackers to bypass Outlook security protections and leak NTLM credentials through specially crafted hyperlinks. This TryHackMe room demonstrates how the vulnerability works, how attackers abuse Moniker Links, and how NTLM hashes can be captured using SMB authentication. Warning: For educational purposes only. Task 1 — Introduction On February 13th, 2024, Microsoft announced a critical Outlook vulnerability identified as CVE-2024-21413 . The vulnerability was discovered by Haifei Li from Check Point Research and affects how Outlook handles specific hyperlink types known as Moniker Links . Attackers can send malicious emails containing specially crafted links that force Outlook to leak the victim's NTLM credentials when interacted with. Question...