Page cover

10.3 Banco Relacional vs. Não Relacional

E aí, arquiteto(a) de informação! Já temos nosso QG Supabase montado e sabemos o que são dados. Agora, precisamos decidir como vamos organizar nossas informações lá dentro.

No mundo dos bancos de dados, existem dois grandes "estilos" de organização, duas filosofias diferentes. É como escolher entre organizar suas roupas em gavetas separadas (camisetas, calças, meias) ou jogar tudo numa caixa grande!

Esses estilos são chamados Relacional (SQL) e Não Relacional (NoSQL).

O Mundo Organizado: Bancos de Dados Relacionais (SQL) 🗄️

Os bancos de dados relacionais são os veteranos, os mais tradicionais. Eles funcionam como um conjunto de tabelas, muito parecido com planilhas do Excel ou Google Sheets.

  • Tabelas: Cada tabela guarda informações sobre um tipo específico de "coisa" (Entidade), como Usuarios, Produtos, Posts.

  • Colunas: Cada coluna na tabela representa uma característica (Atributo) dessa "coisa", como nome, email, preco, texto_do_post.

  • Linhas: Cada linha é um registro individual, uma "coisa" específica, como um usuário específico, um produto específico.

  • Relações: O ponto chave! As tabelas podem ser conectadas umas às outras através de "chaves" (vamos ver isso em detalhes logo logo!). Isso permite que você cruze informações. Por exemplo, conectar a tabela Pedidos com a tabela Usuarios pra saber quem fez qual pedido.

Linguagem: Para conversar com esses bancos, usamos uma linguagem padrão chamada SQL (Structured Query Language). É como o "inglês" dos bancos de dados relacionais. Com SQL, você pode pedir pra buscar dados, inserir novos, atualizar, deletar, etc.

Exemplos Famosos: PostgreSQL (o que o Supabase usa!), MySQL, SQL Server, Oracle.

Vantagens:

  • Organização: Tudo bem estruturado, fácil de entender as relações.

  • Consistência: Regras garantem que os dados fiquem corretos (ex: não deixar cadastrar um pedido sem um cliente associado).

  • SQL: Uma linguagem poderosa e muito usada no mercado.

Desvantagens:

  • Menos Flexível: Mudar a estrutura (adicionar uma coluna, por exemplo) pode ser um pouco mais chatinho.

  • Escalabilidade: Lidar com quantidades absurdas de dados ou usuários simultâneos pode exigir mais planejamento (embora bancos como o PostgreSQL sejam muito bons nisso hoje em dia).

Por que o Supabase usa Relacional (PostgreSQL)? O Supabase escolheu o PostgreSQL porque ele é:

  • Poderoso e Confiável: É usado por empresas gigantes e tem décadas de desenvolvimento.

  • Open Source: Combina com a filosofia do Supabase.

  • Cheio de Recursos: Suporta muitos tipos de dados, funções avançadas, etc.

  • SQL Padrão: Aprender SQL com PostgreSQL te prepara para muitos outros bancos.

Basicamente, o Supabase te dá a força e a confiabilidade do mundo relacional com uma camada de ferramentas modernas por cima!

O Mundo Flexível: Bancos de Dados Não Relacionais (NoSQL) 📦

Do outro lado da batalha, temos os bancos de dados Não Relacionais, ou NoSQL (que geralmente significa "Not Only SQL" - Não Apenas SQL).

Eles surgiram mais recentemente, pensando em problemas diferentes, como lidar com volumes GIGANTESCOS de dados (pensa no Facebook, Google, Twitter) e ter mais flexibilidade.

Em vez de usar só tabelas, os bancos NoSQL podem guardar dados de várias formas:

  • Documentos (JSON/BSON): Pense num arquivo de texto organizado com chaves e valores. É ótimo pra guardar informações que não têm uma estrutura super rígida. (Ex: MongoDB)

  • Chave-Valor: Super simples, como um dicionário gigante. Você tem uma chave única e um valor associado. (Ex: Redis, Memcached)

  • Colunares: Otimizados para ler e escrever colunas inteiras de dados rapidamente. (Ex: Cassandra, HBase)

  • Grafos: Perfeitos para representar relações complexas, como redes sociais (quem é amigo de quem?). (Ex: Neo4j)

Linguagem: Aqui não tem um padrão único como o SQL. Cada tipo de banco NoSQL tem sua própria forma de ser consultado.

Vantagens:

  • Flexibilidade: Mais fácil de mudar a estrutura dos dados sem quebrar tudo.

  • Escalabilidade Horizontal: Geralmente mais fácil de distribuir os dados em várias máquinas pra aguentar muito tráfego.

  • Performance para Casos Específicos: Podem ser mais rápidos que SQL para certos tipos de operações (ex: buscas simples por chave).

Desvantagens:

  • Menos Consistência (às vezes): Algumas garantias de consistência do SQL podem ser mais relaxadas (o que pode ser bom ou ruim, dependendo do caso).

  • Consultas Complexas: Fazer buscas que envolvem cruzar dados de diferentes "tipos" pode ser mais complicado que um JOIN no SQL.

  • Falta de Padrão: Você precisa aprender a linguagem específica do banco que está usando.

Qual Mundo é Melhor? 🤔

Nenhum! Não existe "melhor" ou "pior", existe o mais adequado para cada missão.

  • Se você precisa de estrutura clara, relações bem definidas e garantia de que os dados estão consistentes (como num sistema financeiro, um cadastro de alunos, um e-commerce), o Relacional (SQL) costuma ser uma ótima escolha.

  • Se você tem dados que mudam muito de formato, precisa de altíssima velocidade pra leituras/escritas simples, ou tem um volume de dados que não para de crescer exponencialmente, o Não Relacional (NoSQL) pode ser mais interessante.

Muitas empresas grandes usam os dois tipos de bancos de dados, cada um para o que faz de melhor!

Para nossa jornada no Favelaware com Supabase, vamos focar no mundo Relacional com PostgreSQL. É uma base excelente e muito versátil pra maioria dos projetos que vamos querer construir.

Mas é legal saber que o mundo NoSQL existe, caso um dia você precise dele em outra missão!

No próximo capítulo, vamos mergulhar de cabeça na estrutura do nosso banco relacional: vamos aprender a criar as tabelas, colunas e linhas que vão guardar nossos preciosos dados.

Last updated