🎯 ATIVIDADE 01 — O DATA HUB DO ARQUITETO

📖 Fundamentação Teórica

Para realizar este laboratório com sucesso, certifique-se de ter compreendido os conceitos apresentados no:
👉 CAPÍTULO 01: INTRODUÇÃO E VISÃO GERAL

Bem-vindo ao início da sua jornada técnica no curso de Banco de Dados. Nesta primeira semana (4 aulas), vamos construir o seu "arsenal" de ferramentas. No mercado moderno, não basta conhecer um único banco; precisamos dominar a Persistência Poliglota. 🛡️🧩


🎯 Objetivos de Aprendizagem do Laboratório

Ao final deste laboratório prático (estimativa: 4 horas presenciais / autoguiadas), você será capaz de:

  • Instalar e validar SGBDs Relacionais (MySQL e Postgres) e NoSQL (MongoDB e Cassandra).
  • Configurar o ecossistema de versionamento (Git/GitHub) para gestão de artefatos.
  • Estruturar um ambiente de documentação técnica usando draw.io para modelagem.
  • Entender o papel de cada ferramenta no stack de um Arquiteto de Dados.

🏢 O Cenário Prático (Seu Desafio)

Você acaba de ser contratado como Analista de Infraestrutura de Dados na TecProExpress. A empresa precisa que cada desenvolvedor tenha um "Data Hub" local completo para testes e modelagem. Seu desafio é preparar este ambiente e garantir que todas as "peças" se comuniquem.


🧠 Fundamentos: A Teoria Traduzida

Por que tantas ferramentas? No mundo real, os dados têm "formas" e "velocidades" diferentes.

flowchart TD
    Computer["🖥️ Seu Computador (Windows)"]
    
    subgraph RelationalSQL ["SGBDs Relacionais (SQL)"]
        Postgres["🐘 PostgreSQL (Porta 5432)"]
        MySQL["🐬 MySQL (Porta 3306)"]
    end
    
    subgraph NoSQLDB ["SGBDs NoSQL"]
        Mongo["🍃 MongoDB (Porta 27017)"]
        Cassandra["🏛️ Cassandra (Porta 9042 / Docker Container)"]
    end

    subgraph Tools ["Ferramentas de Suporte"]
        Git["🐙 Git / GitHub (Versionamento)"]
        Drawio["🎨 draw.io (Modelagem)"]
    end
    
    Computer === RelationalSQL
    Computer === NoSQLDB
    Computer === Tools
    
    style Computer fill:#eceff1,stroke:#37474f,stroke-width:2px
    style RelationalSQL fill:#e3f2fd,stroke:#1e88e5
    style NoSQLDB fill:#e8f5e9,stroke:#4caf50
    style Tools fill:#fff8e1,stroke:#ffb300

1. SGBDs Relacionais (SQL) - O Armário de Aço

Imagine um arquivo de aço com gavetas etiquetadas. Tudo tem lugar certo e regras rígidas (Esquema Fixo).

  • MySQL: O banco de dados mais popular do mundo para aplicações web.
  • PostgreSQL: O "banco dos especialistas", focado em complexidade e integridade.

2. SGBDs NoSQL - A Caixa Flexível

Dados que mudam de formato ou chegam em alta velocidade.

  • MongoDB (Documentos): Como uma pasta com arquivos JSON. Você guarda o que quiser.
  • Cassandra (Colunas): Projetado para escalas gigantescas (Big Data), onde os dados são espalhados por vários servidores.

3. Versionamento e Container - O Passaporte e o Navio

  • Git/GitHub: O histórico de tudo o que você constrói. Funciona como um "Save Game" do seu código.
  • Docker: Permite rodar bancos complexos (como o Cassandra) sem "sujar" o seu Windows, criando mini-computadores isolados.

🛠️ O Arsenal Tecnológico (Guia de Ferramentas)

🐬 MySQL & 🐘 PostgreSQL

São os motores relacionais que daremos suporte ao longo do curso. Para interagir com eles, usamos interfaces visuais robustas:

🍃 MongoDB Compass

Diferente do SQL, o MongoDB não usa tabelas rígidas. O Compass é a interface oficial para visualizar seus dados como documentos JSON flexíveis.

🎨 draw.io: Sua Prancheta de Desenho

Antes de criar código, desenhamos a "Planta Baixa" dos dados (MER).

  • Como usar: Você pode usar online em draw.io ou baixar a versão Desktop. Ative a biblioteca de formas Entity Relation no canto inferior esquerdo para ter acesso aos símbolos do padrão pé de galinha.
  • Exportação: Sempre salve seu arquivo fonte no formato .drawio e exporte a imagem como .png (lembre-se de marcar a caixa "Incluir cópia do meu diagrama" para embutir os dados do draw.io na própria imagem).

🚀 Git & GitHub

O GitHub é o portfólio profissional do desenvolvedor moderno.

  • Git: Download Oficial do Git
  • Fluxo: Você faz o trabalho localmente -> git add . -> git commit -m "mensagem" -> git push para sincronizar com a nuvem.

📖 Exemplo Guiado: Validando a Saúde do Ambiente

Não basta instalar; é preciso testar se os "corações" dos bancos estão batendo nas portas corretas.

FerramentaPorta PadrãoO que testar?Comando / AçãoResultado Esperado
MySQL3306Conexão localAbrir terminal e rodar mysql -u root -pPrompt solicitando senha do admin
PostgreSQL5432Versão ativaNo pgAdmin ou DBeaver, rodar SELECT version();Versão 16/17 no console de dados
MongoDB27017ServiçoConectar o MongoDB Compass em mongodb://localhost:27017Visualizar bancos de sistema (admin, config)
GitN/AInstalaçãoRodar git --version no prompt/powershellExibição da versão do Git instalada

🛠️ Prática Obrigatória 1: Setup dos Motores

Cenário: Instalação oficial na TecProExpress.

  1. Instalação: Faça o download e instale o PostgreSQL (com pgAdmin), o MySQL (com Workbench ou DBeaver) e o MongoDB Compass.
  2. Cassandra via Docker: Abra o terminal do PowerShell/Bash e execute:
    docker run --name cassandra-tecpro -p 9042:9042 -d cassandra
    
    (Nota: O mapeamento -p 9042:9042 garante que o seu Windows consiga se comunicar com a porta padrão do Cassandra localmente).
  3. Evidências: Capture screenshots (prints) mostrando:
    • pgAdmin conectado ao PostgreSQL.
    • DBeaver ou MySQL Workbench conectado ao MySQL.
    • MongoDB Compass conectado com sucesso na porta 27017.
    • O container do Cassandra rodando no Docker Desktop ou via comando docker ps.

🏁 Resultado Esperado (Para sua Referência)

Ao final, você terá os serviços de banco instalados, com conexões ativas nas portas locais (3306, 5432, 27017, 9042), prontos para as práticas do semestre.

🔍 Detalhamento Técnico:

  • Mapeamento de Portas (-p): Direciona o tráfego da rede local para dentro do container isolado.
  • LTS (Long Term Support): Em produção, sempre optamos por versões estáveis (LTS) dos bancos para evitar quebras em atualizações de sistemas legados.

💻 Healthchecker de Motores Multi-Banco em Python

Para verificar automaticamente se os 4 motores de banco de dados estão ativos e respondendo nas portas locais:

# healthcheck_bancos.py
import socket

motores = [
    {"nome": "MySQL Server", "host": "127.0.0.1", "porta": 3306, "tipo": "RDBMS"},
    {"nome": "PostgreSQL Server", "host": "127.0.0.1", "porta": 5432, "tipo": "RDBMS"},
    {"nome": "MongoDB Community", "host": "127.0.0.1", "porta": 27017, "tipo": "NoSQL (Documento)"},
    {"nome": "Apache Cassandra (Docker)", "host": "127.0.0.1", "porta": 9042, "tipo": "NoSQL (Colunar)"}
]

print("=" * 68)
print("🔌 DIAGNÓSTICO DE CONEXÃO DOS MOTORES DE DADOS - TECPROEXPRESS")
print("=" * 68)

for m in motores:
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.settimeout(1.0)
    resultado = sock.connect_ex((m["host"], m["porta"]))
    sock.close()
    
    if resultado == 0:
        print(f"🟢 [ONLINE]  {m['nome']:<28} | Porta: {m['porta']:<5} | Tipo: {m['tipo']}")
    else:
        print(f"🔴 [OFFLINE] {m['nome']:<28} | Porta: {m['porta']:<5} | Tipo: {m['tipo']}")

print("=" * 68)

🖥️ Saída Esperada no Terminal:

====================================================================
🔌 DIAGNÓSTICO DE CONEXÃO DOS MOTORES DE DADOS - TECPROEXPRESS
====================================================================
🟢 [ONLINE]  MySQL Server                 | Porta: 3306  | Tipo: RDBMS
🟢 [ONLINE]  PostgreSQL Server            | Porta: 5432  | Tipo: RDBMS
🟢 [ONLINE]  MongoDB Community            | Porta: 27017 | Tipo: NoSQL (Documento)
🟢 [ONLINE]  Apache Cassandra (Docker)    | Porta: 9042  | Tipo: NoSQL (Colunar)
====================================================================

🌐 Exemplo de Payload JSON para Teste de Conectividade (Swagger /docs)

{
  "servico": "Healthchecker de Infraestrutura",
  "data_verificacao": "2026-03-01T10:00:00Z",
  "motores_ativos": [
    {"motor": "PostgreSQL", "porta": 5432, "status": "UP"},
    {"motor": "MongoDB", "porta": 27017, "status": "UP"}
  ]
}

🛠️ Prática Obrigatória 2: O Pipeline de Entrega

Cenário: Configuração do portfólio no GitHub.

  1. Repositório: Crie um repositório público chamado atividades-banco-de-dados.
  2. draw.io: Crie um diagrama conceitual simples chamado infra_hub.drawio.png mostrando seu computador conectando-se a caixas representando MySQL (3306), PostgreSQL (5432), MongoDB (27017) e Cassandra (9042).

📤 Instruções de Entrega (Microsoft Teams)

Após validar suas instalações e versionar suas pastas:

  1. Salve as evidências em uma pasta local estruturada.
  2. Exporte o diagrama de arquitetura do draw.io no formato .drawio.png.
  3. Certifique-se de fazer o push de sua pasta de setup para o seu repositório do GitHub.
  4. Envie o link do seu repositório GitHub e anexe a imagem infra_hub.drawio.png na plataforma do Microsoft Teams. (Exemplo de entrega: Atividade_01_SeuNome.drawio.png e link do repositório).

💡 Checkpoint de Lógica

Importante

Reflexão Profissional: Por que um gestor de TI prefere que você use Docker para o Cassandra em vez de instalar diretamente no Windows? (Resposta: Portabilidade e facilidade de desinstalação sem deixar rastros no sistema). 🧠🛡️

---

🔥 Desafio de Fixação (Opcional)

Nível: Sênior 🏆

Configure o DBeaver para conectar simultaneamente ao seu MySQL e ao seu PostgreSQL. Como isso facilita sua vida no dia a dia?


🔑 Gabarito de Código/Fórmulas Completo

Comandos de Versão:

-- Postgres/MySQL
SELECT version();

-- MongoDB
db.version();

-- Git
git --version

Comando Docker:

docker run --name cassandra-tecpro -p 9042:9042 -d cassandra

📊 Rubrica Formativa de Avaliação

Critério de Avaliação Insuficiente (0% - 40%) Regular (41% - 70%) Excelente (71% - 100%)
Setup e Verificação de SGBDs Não consegue conectar ou executar os comandos de verificação de versão (`SELECT version()`). Conecta em apenas um SGBD relacional, sem validar NoSQL/Docker. Valida o ambiente poliglota completo (PostgreSQL/MySQL + MongoDB + Docker Cassandra/Redis).
Diagrama da Infraestrutura Não gera o diagrama visual de topologia. Gera o diagrama mas omite portas de comunicação (ex: 5432, 27017, 9042). Diagrama de arquitetura impecável (`infra_hub.drawio.png`) mapeando bancos e portas.
Entrega e Git Workflow Entrega fora da estrutura de pastas solicitada no GitHub. Submete apenas o código SQL sem o diagrama anexado. Estrutura no GitHub impecável em `bd-atv-01-setup/` com link público submetido no Teams.