O que você vai
saber fazer.
Objetivos da Aula
Nomear os 5 Vs do Big Data e identificar os quatro tipos de banco NoSQL (Documento, Grafo, Chave-Valor, Coluna Larga).
Explicar por que o modelo relacional não escala para dados de alto volume e variedade, e qual limitação cada tipo de NoSQL resolve.
Representar dados de perfil de usuário em formato JSON e inserir documentos em uma coleção MongoDB no Atlas.
Comparar a modelagem SQL e NoSQL para um mesmo problema e identificar quando cada abordagem é mais adequada.
Projetar o esquema NoSQL adequado para o cenário de eventos da SoundByte e justificar a escolha do tipo de banco para cada pergunta de negócio.
O banco de dados
travou.
O Problema Central

A SoundByte lançou um aplicativo de streaming. Agora recebe 2 milhões de eventos por hora: cliques, pausas, buscas, comentários, avaliações com emojis e dados de localização com precisão de GPS. Cada usuário interage de um jeito diferente. O banco de dados relacional trava quando tenta armazenar isso.

Big Data

Conjuntos de dados tão grandes, rápidos ou variados que as ferramentas tradicionais não conseguem processar. Definido pelos 5 Vs: Volume, Velocidade, Variedade, Veracidade e Valor.

Dados Não Estruturados

80% dos dados do mundo não cabem em linhas e colunas fixas: textos, imagens, áudios, vídeos, posts de redes sociais, logs de eventos.

NoSQL

Conjunto de conceitos para tratar dados não estruturados com rapidez e confiabilidade. Surgiu da necessidade de ir além do que bancos relacionais conseguem atender.

Banco de Documentos

Armazena dados em estruturas semelhantes a documentos JSON. Cada documento pode ter campos diferentes — sem esquema fixo. Principal representante: MongoDB.

JSON

JavaScript Object Notation — formato de texto leve para troca de dados, com pares chave-valor e suporte a listas e objetos aninhados. Base do modelo de documentos.

Arquitetura Poliglota

Uso do banco certo para a pergunta certa. SQL e NoSQL coexistem na mesma arquitetura — cada um otimizado para um tipo de consulta.

A abertura mostra três exemplos reais de dados que não cabem em tabelas:

LinkedIn — Perfil de Usuário

Campos que alguns têm e outros não: certificações, idiomas, publicações, projetos. Uma tabela com colunas fixas deixaria 80% das células vazias.

Amazon — Catálogo de Produtos

Cada categoria tem atributos completamente diferentes: um livro tem ISBN e autor; um tênis tem numeração e material; um DVD tem resolução e legendas.

Spotify — Histórico de Interações

Eventos sem estrutura fixa por usuário: um ouve, pausa, busca, cria playlist, compartilha, pula. Cada sessão é uma sequência única de ações.

A pergunta para a turma: o que aconteceria se você tentasse colocar esses dados em uma tabela com colunas fixas?

Conteúdo Fundamental

Conceitos de Big Data (V's), bancos de dados NoSQL (Documento, Chave-Valor, Grafos) e limitações do modelo relacional.

Atividade Prática

Utilizando o MongoDB Atlas (plano gratuito), os alunos criarão uma coleção de documentos JSON simulando perfis de usuários com campos variáveis e praticarão consultas básicas.

Integração com IA

Prompt sugerido: "Converta esta estrutura de tabelas de Clientes e Endereços SQL em um único documento JSON otimizado para leituras frequentes em um banco NoSQL como o MongoDB."

Tudo o que fazemos
deixa um rastro.
"A ideia básica por trás do termo 'Big Data' é que tudo o que fazemos está deixando cada vez mais um rastro digital — ou dados — que podemos usar e analisar para nos tornarmos mais inteligentes. As forças motrizes neste admirável mundo novo são o acesso a volumes cada vez maiores de dados e nossa capacidade tecnológica cada vez maior de minerar esses dados para obter insights comerciais."
Bernard Marr
V
Volume
2 milhões de eventos por hora na SoundByte. 90% dos dados do mundo foram criados nos últimos 2 anos. Escala que os bancos relacionais não sustentam sozinhos.
V
Velocidade
Cliques em milissegundos, streaming em tempo real. Cada 60 segundos: 72 horas de vídeo enviadas ao YouTube, 204 milhões de e-mails, 216.000 posts no Instagram.
V
Variedade
Dados sem estrutura fixa — emojis, GPS, áudio, vídeo, texto livre. 80% do crescimento dos dados é vídeo, imagem e documentos. Não cabe em linhas e colunas.
V
Veracidade
Localização imprecisa ou falsa é um problema de veracidade. 1 em cada 3 líderes empresariais não confia nos dados que usa para tomar decisões.
V
Valor
O que as recomendações personalizadas geram para o negócio é o valor. Big Data = capacidade de extrair maior Valor por meio de insights superiores.
Os 5 Vs e os Tipos de NoSQL
Volume, Velocidade e Variedade
2 milhões de eventos por hora, cliques em milissegundos, dados sem estrutura fixa — os três Vs que o banco relacional não sustenta sozinho.
Veracidade e Valor
Localização imprecisa é um problema de veracidade. O que as recomendações personalizadas geram é o valor. Os dois Vs que definem se vale a pena coletar o dado.
Documento, Grafo, Chave-Valor, Coluna Larga
Cada tipo de NoSQL existe para um caso de uso. A escolha depende da pergunta que você quer responder — não da tecnologia preferida.
80% dos dados
não são estruturados.
Dados Estruturados Dados Não Estruturados
Características
  • Modelos de dados pré-definidos
  • Apenas texto (inclui números), usualmente
  • Fácil de fazer buscas
  • Não tem modelos de dados pré-definidos
  • Pode ser textos, imagens, sons, vídeos ou outro formato
  • Difícil de fazer buscas
Armazenados em
  • Bancos de dados relacionais
  • Data Warehouses
  • Aplicações
  • Bancos de dados NoSQL
  • Data Warehouses
  • Data Lakes
Gerados por
  • Humanos ou máquinas
  • Humanos ou máquinas
Aplicações típicas
  • Sistemas de reservas aéreas
  • Controle de estoque
  • Sistemas CRM
  • Sistemas ERP
  • Processamento de texto
  • Softwares de apresentação
  • Clientes de e-mail
  • Ferramentas de edição de vídeos
Exemplos
  • Datas
  • Números de telefone
  • Números de cartão de crédito
  • Nomes de clientes
  • Endereços
  • Informações transacionais
  • Arquivos de texto
  • Relatórios
  • Mensagens de e-mail
  • Arquivos de áudio
  • Arquivos de vídeo
  • Imagens
Fonte: IBM — Structured vs Unstructured Data
Não é "sem SQL".
É "além do SQL".
O que é NoSQL
NoSQL é, em verdade, um conjunto de conceitos utilizados para tratar dados não estruturados com rapidez e confiabilidade. Esses conceitos surgiram da necessidade em se buscar uma solução que os bancos de dados relacionais não conseguiam atender.

Diferente do modelo relacional, que armazena dados em linhas e colunas, o NoSQL permite diferentes formas de armazenamento, cada uma otimizada para um caso de uso específico.
DOCUMENTO MongoDB Perfis · Catálogos Conteúdo · Eventos GRAFO Neo4j Recomendações Redes Sociais CHAVE-VALOR Redis Cache · Sessões Logs · Filas COLUNA LARGA Cassandra Pesquisa Web IoT · Escala
Referência: IBM — What is a NoSQL database?
A escolha depende
da pergunta.
Documento Banco de Documentos MongoDB · CouchDB · Firestore

Armazena elementos de dados em estruturas semelhantes a documentos que codificam informações em formatos como JSON.

Cada documento pode ter campos completamente diferentes — sem esquema rígido definido previamente.

Usos comuns

Gerenciamento de conteúdo, monitoramento de aplicativos móveis e da Web, perfis de usuários, catálogos de produtos.

// Documento simples { "FirstName": "Bob", "Address": "5 Oak St.", "Hobby": "sailing" } // Documento com subdocumentos { "_id": "123", "date": "10/10/2017", "ship_status": "backordered", "orderitems": [ { "itemid": "4348", "price": 10.00 }, { "itemid": "5648", "price": 15.00 } ] }
Grafo Banco de Grafos Neo4j · Amazon Neptune · ArangoDB

Enfatiza as conexões entre os elementos de dados, armazenando "nós" relacionados em grafos para acelerar as consultas.

Ideal quando os relacionamentos entre os dados são tão importantes quanto os dados em si.

Usos comuns

Mecanismos de recomendação, aplicativos geoespaciais, redes sociais, detecção de fraudes.

// Exemplo de grafo // Nós: Julie, Bob, Jim, Steve // Nós: Rock Music, BMW, IBM, Fido Julie ──Sister In-Law To──▶ Steve │ Listens To │ ▼ Rock Music ◀── Listens To ── Bob │ ┌──────────┼──────┐ Married Drives Works To │ For │ BMW IBM ▼ Colleague Of │ ▼ Jim ── Has Pet ──▶ Fido │ Works For │ ▼ IBM
Chave-Valor Banco Chave-Valor Redis · DynamoDB · Riak

Usa um modelo de dados simples que combina uma chave exclusiva e seu valor associado no armazenamento de elementos de dados.

Extremamente rápido para leituras e gravações — ideal para dados acessados com frequência.

Usos comuns

Armazenamento de dados de fluxo de cliques, logs de aplicativos, cache de sessões, filas de mensagens.

// Estrutura Chave → Valor user:1001 → { nome: "Alice", plano: "premium" } session:xyz → { userId: 1001, expires: "2026-06-01", token: "abc123" } // Exemplo DynamoDB // Partition Key + Sort Key Product ID │ Type │ Attributes ───────────┼───────────┼────────────────── 1 │ Book ID │ Odyssey, Homer 2 │ Album ID │ 6 Partitas, Bach 3 │ Movie ID │ The Kid, Chaplin
Coluna Larga Banco de Coluna Larga Cassandra · HBase · Google Bigtable

Também chamados de bancos de dados em estilo de tabela. Armazenam dados em tabelas que podem ter um número muito grande de colunas — e cada linha pode ter colunas diferentes.

Projetados para escalar horizontalmente por clusters de servidores.

Usos comuns

Pesquisa na Internet e outros aplicativos da Web em grande escala, IoT, análise de séries temporais.

// Tabela UserProfile (Wide-column) // Cada linha tem colunas diferentes! Bob: emailAddress: bob@example.com gender: male age: 35 Britney: emailAddress: brit@example.com gender: female // sem campo "age" Tori: emailAddress: tori@example.com country: Sweden hairColor: Blue // sem "gender" nem "age"
Modelo Estrutura do valor Como se consulta Quando usar
Documento Documentos estruturados (JSON/BSON), com campos aninhados e arrays. Consulta por chave e por campos internos; possível indexar atributos e realizar filtros ricos. Perfis de usuário, catálogos, CMS, e-commerce, logs estruturados, qualquer cenário com esquema flexível.
Grafo Nós (entidades) e arestas (relacionamentos), com propriedades em ambos. Consulta focada em relacionamentos e travessias (ex.: "amigos de amigos", caminhos, recomendações). Redes sociais, recomendação de produtos, fraud detection, sistemas com grafos densos de relacionamentos.
Chave-Valor Par simples: chave → valor; o valor é tratado como blob/opaco. Acesso muito rápido apenas pela chave; não há consulta interna ao valor. Sessões de usuário, cache, flags de configuração, carrinhos temporários, quando o acesso é sempre por ID.
Coluna Larga Linhas com conjuntos de colunas muito esparsas, agrupadas em famílias; cada linha pode ter colunas diferentes. Consulta por chave de linha e por faixa de colunas; otimizada para escanear muitas colunas em poucas linhas. Logs de eventos, métricas de tempo (time series), big data analítico, histórico de atividades com muitas colunas esparsas.
Relacional (SQL) Tabelas com linhas e colunas fixas, relacionadas por chaves estrangeiras. Consulta com SQL: filtros, joins, agrupamentos, subquerys etc.; forte suporte a transações ACID. Sistemas com dados bem estruturados e relacionamentos fixos (ERP, financeiro, inventário, CRM, aplicações transacionais críticas).
Um problema,
dois paradigmas.

Estudantes têm hobbies. Um estudante pode ter vários hobbies e um hobby pode ser compartilhado por vários estudantes (relação M:M). Veja como cada paradigma resolve este problema.

No modelo inicial, cada estudante só pode ter um hobby — porque a coluna hobby admite apenas um valor.

Disciplinas
PK  id             INT
    nome_disciplina  VARCHAR(45)
Estudantes
PK  id           INT
    nome          VARCHAR(45)
    hobby          VARCHAR(45)
FK  disciplinas_id INT
Problema: Como fazer para que um estudante possa ter vários hobbies e que um hobby seja compartilhado por vários estudantes?

A solução relacional exige uma tabela intermediária Estudantes_Hobbies para modelar a relação M:M. Resultado: 4 tabelas, 3 JOINs para uma consulta simples.

Schema SQL
CREATE TABLE `Disciplinas` ( `id` INT, `nome_disciplina` VARCHAR(45), PRIMARY KEY (`id`) ); CREATE TABLE `Estudantes` ( `id` INT, `nome` VARCHAR(45), `disciplinas_id` INT, PRIMARY KEY (`id`), FOREIGN KEY (`disciplinas_id`) REFERENCES `Disciplinas`(`id`) ); CREATE TABLE `Hobbies` ( `id` INT, `hobby` VARCHAR(45), PRIMARY KEY (`id`) ); CREATE TABLE `Estudantes_Hobbies` ( `estudantes_id` INT, `hobbies_id` INT, FOREIGN KEY (`hobbies_id`) REFERENCES `Hobbies`(`id`), FOREIGN KEY (`estudantes_id`) REFERENCES `Estudantes`(`id`) );
Dados de Exemplo
INSERT INTO Disciplinas (`id`, `nome_disciplina`) VALUES (1, 'eletromagnetismo'), (2, 'cálculo diferencial'); INSERT INTO Estudantes (`id`, `nome`, `disciplinas_id`) VALUES (1, 'Emmanuel Kant', 1), (2, 'Albert Einstein', 2); INSERT INTO Hobbies (`id`, `hobby`) VALUES (1, 'jardinagem'), (2, 'leitura'), (3, 'natação'), (4, 'corrida'), (5, 'xadrez'); INSERT INTO Estudantes_Hobbies (`estudantes_id`, `hobbies_id`) VALUES (1, 1), -- Kant: jardinagem (2, 3), -- Einstein: natação (2, 4); -- Einstein: corrida

No NoSQL, tudo em um único documento. Os hobbies são arrays embutidos, os campos são livres por documento — sem necessidade de tabelas intermediárias.

Schema NoSQL — MongoDB
db.disciplina.insert_many([ { "nome": "Emmanuel Kant", "hobbies": "jardinagem", "nome_disciplina": "eletromagnetismo" }, { "nome": "Albert Einstein", "hobbies": { "exercícios": ["natação", "corrida"], "jogos": "xadrez" }, "nome_disciplina": "cálculo diferencial", "notas_provas": [100, 100, 100] } ])
SQL
  • 4 tabelas
  • 3 JOINs para consulta simples
  • Esquema rígido e pré-definido
  • Adicionar campo exige ALTER TABLE
NoSQL
  • 1 coleção
  • Consulta direta no documento
  • Esquema flexível por documento
  • Novos campos sem migração
Não existe
bala de prata.
Flexibilidade
  • Permitem armazenar dados não estruturados em vários formatos: documentos, colunas e pares chave-valor
  • Não requerem um esquema rígido definido previamente, permitindo adicionar novos dados sem ter que predefini-los
Escalabilidade
  • São projetados para aumentar a escala horizontalmente usando clusters distribuídos de hardware
  • Podem lidar com grandes volumes de dados e usuários simultâneos sem comprometer o desempenho
  • Permitem aumentar a capacidade de armazenamento e processamento conforme o aplicativo cresce
Alto desempenho
  • São construídos para ter ótimo desempenho, medido pela taxa de transferência e latência
  • Oferecem baixa latência e alto desempenho mesmo com grandes volumes de dados
Custos reduzidos
  • Muitos são gratuitos e de código aberto, como o MongoDB
  • Possuem uma arquitetura eficiente e escalável, evitando a necessidade de uma arquitetura monolítica cara
  • Podem reduzir os custos de infraestrutura por serem projetados para rodar em cluster e na nuvem
Disponibilidade
  • Costumam contar com arquiteturas de software eficientes de replicação de dados
  • Se um ou mais servidores caem, outro está apto para continuar o trabalho
Integração de dados
A diversidade de fontes e formatos pode dificultar a integração e a sincronização de dados, levando a inconsistências entre diferentes conjuntos de dados.
Qualidade dos dados
A combinação de dados não estruturados e inconsistentes pode resultar em dados ausentes, duplicados ou conflitantes — um desafio significativo para análises confiáveis.
Gerenciamento de esquemas
A flexibilidade de esquema pode complicar o gerenciamento de dados. A falta de estrutura rígida pode levar a uma organização desorganizada e difícil de manter ao longo do tempo.
Consultas complexas
Consultas que exigem junções ou agregações podem ser menos eficientes em NoSQL do que em bancos relacionais tradicionais — impacta análises de dados mais sofisticadas.
Analytics limitado
Muitos bancos NoSQL não possuem as mesmas capacidades analíticas que sistemas de data warehouse tradicionais, limitando a profundidade das análises realizadas diretamente.
Falta de padrões
A ausência de padrões uniformes entre diferentes tecnologias NoSQL dificulta a adoção, a migração entre plataformas e a formação de equipes que trabalham com múltiplas tecnologias.
Mãos ao
documento.
1
Crie sua conta no MongoDB Atlas
Utilize o plano gratuito (M0 Free Tier). Nenhum cartão de crédito é necessário. ↗ MongoDB Atlas — Criar Conta
2
Crie um Cluster e um Database
Crie um cluster M0 (gratuito), um banco de dados chamado soundbyte e uma coleção chamada usuarios.
3
Insira Perfis com Campos Variáveis
Note que cada documento tem campos diferentes — demonstrando a flexibilidade do esquema NoSQL.
Insert Document — cole o array JSON no Data Explorer
[ { "nome": "Ana Souza", "plano": "premium", "generos_favoritos": ["pop", "mpb"], "localizacao": { "cidade": "São Paulo", "lat": -23.5, "lon": -46.6 }, "ultima_sessao": "2026-05-30T14:22:00", "avaliacoes": ["😍", "🔥", "😴"] }, { "nome": "Bruno Mendes", "plano": "gratuito", "generos_favoritos": ["rock"], "dispositivos": ["android", "smart_tv"], "ultima_sessao": "2026-05-29T08:05:00" }, { "nome": "Carla Lima", "plano": "premium", "podcast_favorito": "Roda Viva", "horas_ouvidas_mes": 42.5, "historico_recente": [ { "faixa": "Aquarela", "artista": "Toquinho", "duracao_s": 240 }, { "faixa": "Garota de Ipanema", "artista": "Tom Jobim", "duracao_s": 186 } ] } ]
4
Pratique Consultas Básicas
No Data Explorer, cole cada filtro abaixo no campo Filter da coleção e clique em Apply. Observe como o MongoDB retorna documentos com estruturas diferentes.
Todos os usuários
{}
Apenas usuários premium
{ "plano": "premium" }
Usuários com rock entre os gêneros favoritos
{ "generos_favoritos": "rock" }
Usuários com mais de 40 horas ouvidas no mês
{ "horas_ouvidas_mes": { "$gt": 40 } }
5
Adicione um Novo Campo sem Migração
No Data Explorer: filtre com o JSON abaixo, clique no ícone de edição (✏️) de um documento premium e acrescente o campo "notificacoes_ativas": true diretamente no JSON — sem precisar tocar nos documentos de plano gratuito.
1 — Filtro: localize os documentos a editar
{ "plano": "premium" }
2 — Documento editado (exemplo: Ana Souza)
{ "nome": "Ana Souza", "plano": "premium", "generos_favoritos": ["pop", "mpb"], "localizacao": { "cidade": "São Paulo", "lat": -23.5, "lon": -46.6 }, "ultima_sessao": "2026-05-30T14:22:00", "avaliacoes": ["😍", "🔥", "😴"], "notificacoes_ativas": true }
Para atualizar múltiplos documentos de uma vez, use o botão Update da coleção no Data Explorer e preencha os dois campos abaixo.
3 — Update: campo Filter (quais documentos atualizar)
{ "plano": "premium" }
3 — Update: campo Update (o que alterar)
{ "$set": { "notificacoes_ativas": true } }
Integração com IA
Prompt sugerido: "Converta esta estrutura de tabelas SQL em um único documento JSON otimizado para leituras frequentes em um banco NoSQL como o MongoDB Atlas, adaptado para inserir os dados usando o Data Explorer (modo JSON estrito, isto é, puro, sem comentários, apenas aspas duplas, sem vírgulas finais e apenas dados)."
O banco certo
para a pergunta certa.
A Pergunta Estratégica do Debriefing
Se a SoundByte quiser saber o faturamento total por usuário nos últimos 12 meses, qual banco usa? Se quiser saber quais músicas um usuário específico ouviu hoje às 15h, qual banco usa? A resposta esperada: os dois coexistem. Arquitetura de dados moderna usa o banco certo para a pergunta certa.
Use SQL quando...
  • Os dados são estruturados e o esquema é estável
  • Você precisa de JOINs complexos e transações ACID
  • A pergunta é agregação histórica (faturamento, churn)
  • A equipe conhece SQL bem — menor curva de aprendizado
  • O volume é gerenciável por um servidor vertical
Use NoSQL quando...
  • Os dados são variáveis, sem esquema fixo
  • O volume é massivo e cresce rapidamente
  • A velocidade de gravação/leitura é crítica
  • Cada registro pode ter campos completamente diferentes
  • Você precisa escalar horizontalmente em cluster

PostgreSQL (SQL)

Faturamento por usuário, histórico de assinaturas, relatórios financeiros, dados transacionais. Respostas para o conselho e para o BI.

MongoDB (Documento)

Perfis de usuários, catálogo de músicas, avaliações com emojis, histórico detalhado de reprodução. Esquema flexível por usuário.

Redis (Chave-Valor)

Sessões ativas, cache de recomendações, fila de eventos em tempo real. Baixíssima latência para os 2 milhões de eventos por hora.

Neo4j (Grafo)

Engine de recomendação: "usuários que ouviram X também ouviram Y". Relacionamentos entre artistas, gêneros e ouvintes.

A lição desta aula: NoSQL não substitui SQL — complementa. A escolha do banco não é sobre tecnologia preferida: é sobre qual pergunta você quer responder e qual é a natureza dos seus dados. O gestor de dados moderno precisa entender os dois paradigmas.
↗ Atividade Avaliativa 6 — MongoDB