curso
Um tutorial abrangente de NoSQL usando o MongoDB
À medida que a quantidade de dados produzidos na era digital aumenta, os bancos de dados são essenciais para armazenar, gerenciar e analisar grandes quantidades de dados. Em termos gerais, há dois tipos de bancos de dados: Bancos de dados SQL e NoSQL.
Os bancos de dados SQL usam um formato estruturado, e os dados são organizados em tabelas com esquemas. Ao contrário dos bancos de dados SQL, os bancos de dados NoSQL oferecem um esquema flexível para armazenar dados semiestruturados e não estruturados. Eles fornecem a infraestrutura necessária para gerenciar e aproveitar os vastos dados gerados no cenário digital atual.
Este guia abrangente abordará os fundamentos dos bancos de dados NoSQL e os diferentes tipos de bancos de dados NoSQL com exemplos disponíveis no setor. Depois de entendermos esses conceitos básicos, vamos nos aprofundar no MongoDB, um banco de dados NoSQL popular, e aprender a realizar operações CRUD (Create, Retrieve, Update e Delete).
O que é NoSQL?
NoSQL significa "Not Only SQL" e foi criado para atender às limitações dos bancos de dados relacionais. Os bancos de dados relacionais seguem uma estrutura rígida, têm um formato tabular e usam SQL (Structured Query Language) para a manipulação de dados.
Os bancos de dados NoSQL oferecem uma abordagem mais flexível para o armazenamento de dados semiestruturados e não estruturados.
A principal vantagem dos bancos de dados NoSQL é que eles são adequados para lidar com grandes volumes de dados com estruturas variadas. Os bancos de dados NoSQL não têm esquema, o que permite maior agilidade e escalabilidade.
No entanto, esses benefícios vêm com desvantagens. Eles têm consistência fraca e suporte limitado para consultas complexas. Apesar dessas limitações, eles são amplamente usados pelos benefícios que oferecem e complementam os bancos de dados SQL.
Você pode ler mais sobre as principais diferenças entre os bancos de dados SQL e NoSQL e algumas dicas sobre quando escolher um deles em um tutorial separado.
Tipos de bancos de dados NoSQL
Para atender às necessidades de casos de uso variados, os bancos de dados NoSQL usam uma variedade de modelos de dados para organizar e acessar os dados. Aqui estão quatro tipos comuns de bancos de dados NoSQL.
- Baseado em pares de valores-chave é a forma mais simples de bancos de dados NoSQL. Os dados são armazenados como pares de chave e valor e podem ser recuperados usando a chave. Alguns exemplos são o Redis e o Amazon DynamoDB.
- Os bancos de dados orientados por colunas organizam os dados em colunas e não em linhas. Essa estrutura é eficiente na recuperação de dados por colunas. O Apache Cassandra, o HBase e o Google Bigtable são orientados por colunas.
- Os bancos de dados baseados em gráficos armazenam dados em estruturas de gráficos que consistem em nós, bordas e propriedades. O Neo4j e o Amazon Neptune são bancos de dados populares baseados em gráficos.
- Orientado a documentos, armazena dados como documentos do tipo JSON. A estrutura de um documento pode variar e até mesmo conter dados aninhados. Esse é um banco de dados NoSQL amplamente usado. Os exemplos incluem o MongoDB e o CouchDB.
Para saber mais sobre os diferentes tipos de bancos de dados, recomendamos que você consulte nosso tutorial, NoSQL Databases: O que todo cientista de dados precisa saber.
Depois de aprender sobre o que é NoSQL e os tipos de bancos de dados NoSQL, é hora de você praticar com os bancos de dados NoSQL.
Tutorial de NoSQL: Projetando um banco de dados NoSQL para uma plataforma de blogs
Mergulhar em um exemplo prático do mundo real é fundamental para que você compreenda e experimente os conceitos que abordamos. Vamos examinar um tutorial de NoSQL.
Suponha que você esteja interessado em criar sua plataforma de blog. Você gostaria de criar posts de blog, permitir comentários e mantê-los atualizados. Como você sabe que os dados não são estruturados, entende que um banco de dados NoSQL, como o MongoDB, seria adequado para o caso de uso em questão.
O MongoDB é um banco de dados NoSQL de código aberto. Em vez de usar tabelas, ele armazena dados em documentos do tipo JSON. Isso permite a fácil representação de estruturas e relacionamentos complexos. É fácil gerenciar diferentes tipos de dados, incluindo texto, números ou imagens, que provavelmente existirão em blogs.
Vamos começar com a configuração do MongoDB em seu computador.
1. Configuração do MongoDB
A instalação do MongoDB é bastante simples. Você pode fazer o download e instalá-lo no site oficial do MongoDB. As instruções variam de acordo com os diferentes sistemas operacionais, portanto, verifique as instruções de instalação do seu sistema operacional na documentação oficial.
Após a instalação, inicie o MongoDB. Basta abrir o terminal e digitar o seguinte, de acordo com seu sistema operacional:
// Linux
sudo systemctl start mongod
//Mac OS
brew services start mongodb-community@7.0
Você receberá um resultado dizendo "Successfully started" (Iniciado com sucesso), conforme mostrado abaixo.
Saída: Iniciando o MongoDB. (Esta e todas as imagens abaixo são de autoria do autor)
A instalação do MongoDB inclui um shell do MongoDB chamado mongosh, que pode ser usado para interagir com o banco de dados do MongoDB. Portanto, podemos usá-lo sem nenhuma instalação adicional.
Inicie o shell do MongoDB executando o seguinte comando em seu terminal:
mongosh
Ao executar o comando mongosh
, você obterá o resultado abaixo, indicando a conexão com o banco de dados.
Inicie o shell do MongoDB.
Com o MongoDB instalado, passaremos a definir nosso modelo de dados.
2. Definição do modelo de dados
Criaremos um banco de dados chamado "blog" e duas coleções chamadas "posts" e "comments". A coleção "posts" é para capturar as entradas do blog e a coleção "comments" é para armazenar os comentários nessas postagens.
Cada documento de postagem terá campos para o título, o conteúdo, o autor e a data de criação, enquanto cada documento de comentário incluirá campos para o conteúdo do comentário, o autor e o ID de postagem associado.
Para listar todos os bancos de dados existentes, execute show dbs no shell. Se esta for a primeira vez que você usa o MongoDB, verá o resultado abaixo.
Liste os bancos de dados existentes.
Por padrão, usaremos o banco de dados de teste. Embora estejamos no banco de dados de teste, o banco de dados não é criado até inserirmos um documento em uma coleção no banco de dados.
Para criar um novo banco de dados, execute use .
Em nosso exemplo, usaremos "blog" como o nome do nosso banco de dados. Vá em frente e execute use blog
para criar o novo banco de dados. Como mencionado acima, a execução do comando show dbs
não mostrará o novo banco de dados até que você insira uma coleção no banco de dados. Portanto, execute os comandos abaixo para criar uma coleção.
// create database
use blog
// create collection
db.createCollection("posts")
db.createCollection("comments")
Ao executar use blog
, você mudará o banco de dados de "test" para "blog".
Saída: Criação de banco de dados e coleção.
Depois de criar as coleções, podemos verificá-las com o comando show dbs
.
Lista de bancos de dados.
Criamos com sucesso um banco de dados e coleções.
3. Implementação de operações CRUD
O MongoDB oferece suporte a quatro operações CRUD (Create, Read, Update, Delete) principais para que você possa interagir com os dados:
- Criar: Para criar um documento no MongoDB, nós o inserimos em uma coleção usando o método
insertOne()
ouinsertMany()
. Os documentos podem conter qualquer dado JSON válido, o que permite um design de esquema flexível. - Leia: Para ler dados do MongoDB, consultamos com o método
find()
. As consultas filtram documentos com base nos critérios especificados e retornam os resultados. - Atualizar: Para atualizar os documentos, você pode usar
updateOne()
ouupdateMany()
. Esse método facilita a manipulação flexível de dados. - Excluir: Para excluir documentos de uma coleção, usamos o método
deleteOne()
oudeleteMany()
. As exclusões são realizadas com base em critérios especificados, como a correspondência de um valor de campo específico.
Como já vimos os comandos, vamos colocá-los em prática em nosso caso de uso de blog.
4. Criar uma postagem de blog
Para inserir documentos em um banco de dados MongoDB, há dois métodos.
insertOne()
: Esse método insere um documento de cada vezinsertMany()
: Com esse método, você pode inserir vários documentos de uma só vez.
Vamos usar os dois métodos para adicionar posts de blog ao banco de dados. No código abaixo, criamos documentos nas coleções "posts". Cada documento tem um título, conteúdo, autor e data de criação.
// use insertOne() method to insert one document to the "posts" collection
db.posts.insertOne({
title: "Introduction to NoSQL with MongoDB",
content: "MongoDB is a NoSQL database that stores data in JSON format",
author: "Arunn Thevapalan",
createdAt: new Date()
})
// array of blog post documents
var postsData = [
{
title: "Getting Started with MongoDB",
content: "Learn the basics of MongoDB",
author: "Arunn Thevapalan",
createdAt: new Date()
},
{
title: "Advanced MongoDB Techniques",
content: "Explore advanced features of MongoDB",
author: "Jim Murphy",
createdAt: new Date()
}
];
// use insertMany() to insert multiple documents
db.posts.insertMany(postsData);
Essa saída indica que o servidor MongoDB recebeu e processou com êxito a solicitação insertOne
.
Saída: Insira um documento em uma coleção.
Da mesma forma, a saída abaixo indica o processamento bem-sucedido da solicitação insertMany
.
Saída: Insira vários documentos em uma coleção.
Com o conhecimento da operação Create, o próximo passo é a operação Read.
5. Consultar postagens de blog
Você pode usar o método find()
para recuperar dados de coleções. Para recuperar o post de blog acima de nossa coleção de "posts", execute o comando abaixo.
db.posts.find()
O método find recuperará todos os documentos da coleção "posts". O resultado abaixo mostra todos os documentos que inserimos na etapa anterior.
Saída: Recupere documentos de uma coleção.
6. Adicionar um comentário a uma postagem
Suponhamos que você queira adicionar alguns comentários a uma postagem, podemos inserir um documento na coleção "comments". Os comentários são associados aos blogs, portanto, manteremos uma referência ao ID do post.
// use an object id from any of the above entries
var postId = ObjectId("664bfc27f74ef93812b2179e")
// insert one comment
db.comments.insertOne({
postId: postId,
content: "Informative article!",
author: "Anne Smith",
createdAt: new Date()
})
Essa saída indica que o servidor MongoDB recebeu e processou a solicitação.
Saída: Crie um documento que faça referência a outro documento.
7. Consulta de comentários para uma postagem
Para recuperar comentários associados a um post de blog específico, o método find()
pode ser usado com um filtro de consulta:
// retrieve the above comment
db.comments.find({postId: postId})
O resultado abaixo mostra o comentário que inserimos na etapa anterior.
Saída: Localize um documento usando a consulta de localização.
Depois que os usuários criam posts de blog, eles querem poder atualizá-los posteriormente. A seguir, vamos ver como podemos atualizar os documentos existentes.
8. Atualizar um post de blog
Da mesma forma que a inserção, a atualização também pode ser feita individual ou coletivamente.
updateOne()
: Esse método atualiza um documento de cada vezupdateMany()
: Esse método atualiza muitos documentos de uma vez.
Tente mudar o título da postagem do blog "Introdução ao NoSQL com MongoDB" para "Guia absoluto para iniciantes em NoSQL com MongoDB".
Como sabemos o ID da postagem de uma das etapas anteriores, execute o código abaixo para alterar o título. Certifique-se de atualizar o postId com o ID do documento.
var postId = ObjectId("664bfc27f74ef93812b2179e");
db.posts.updateOne(
{ _id: postId },
{ $set: { title: "Absolute Beginner guide to NoSQL with MongoDB"} }
);
// verify update
db.posts.find({_id: postId})
O resultado indica que a solicitação foi processada com êxito. Ele encontrou 1 documento correspondente e modificou 1 documento.
Saída: Atualização de um documento.
9. Exclusão de um post de blog
Para excluir uma publicação de blog, você pode usar o endereço deleteOne()
. De forma semelhante às operações anteriores, você também pode usar deleteMany()
para excluir vários documentos de uma só vez.
var postId = ObjectId("664bfc27f74ef93812b2179e");
// delete post
db.posts.deleteOne({ _id: postId });
// verify deletion -> no output
db.posts.find({_id: postId})
A saída confirma que a exclusão foi bem-sucedida.
Saída: Excluir um documento de uma coleção
É claro que simplificamos o design de uma plataforma de blog, que geralmente é complexa, com várias outras operações, como destaques, curtidas, aplausos, recomendações etc. Mas todas essas operações são baseadas em uma das operações CRUD, e agora você tem uma boa noção desses conceitos subjacentes. Agora é a sua vez de explorar e experimentar mais recursos com base nessas operações.
Conclusão
Este tutorial apresentou a você os bancos de dados NoSQL. Começamos com os conceitos básicos, a definição de bancos de dados NoSQL, como eles diferem dos bancos de dados relacionais e seus tipos.
Além disso, o expandimos para abranger o MongoDB, um banco de dados baseado em documentos amplamente utilizado. Por fim, colocamos a mão na massa com um exemplo simples para projetar um banco de dados para nossa plataforma de blog.
É normal ficar preso ao projetar um banco de dados para um novo caso de uso, e recomendamos que você consulte a documentação oficial para conhecer as funções e os exemplos atualizados.
Aqui estão alguns cursos e tutoriais mais aprofundados se você estiver ansioso para ampliar seu conhecimento sobre NoSQL.
Continue aprendendo com o DataCamp
curso
NoSQL Concepts
curso
Introduction to MongoDB in Python

blog
Bancos de dados NoSQL: O que todo cientista de dados precisa saber
blog
SQL Server, PostgreSQL, MySQL... qual é a diferença? Por onde devo começar?

blog
O que é SQL? - A linguagem essencial para o gerenciamento de bancos de dados

Summer Worsley
16 min
blog
O que é um banco de dados gráfico? Um guia para iniciantes
tutorial
Tutorial de visão geral do banco de dados SQL

DataCamp Team
3 min
tutorial