O Que É o Postgres? A Base de Dados por Trás de Muitas Apps, Explicada
O Postgres (oficialmente PostgreSQL) é uma base de dados relacional gratuita e de código aberto: um programa que guarda os dados de uma app em tabelas de linhas e colunas, liga essas tabelas entre si e responde a perguntas sobre elas numa linguagem chamada SQL. É conhecido por ser fiável, rigoroso a manter os dados corretos e suficientemente flexível para tudo, desde uma lista de inscrições até aos registos de uma grande empresa. Muitas apps web, e muitos dos serviços que as alojam, assentam nele.
Porque é que importa quando cria com IA
Quando um construtor de apps com IA acrescenta «uma base de dados» ao seu projeto, há uma boa probabilidade de ser Postgres. Não precisa de escrever SQL para o usar, mas um pouco de compreensão ajuda muito:
- Pode descrever os dados na forma que a base de dados precisa. «Os clientes têm muitas encomendas; cada encomenda tem muitos artigos» traduz-se diretamente em tabelas.
- Pode pedir as proteções certas. O Postgres consegue recusar dados errados por si — um email duplicado, uma encomenda para um cliente que não existe — se a IA configurar as regras.
- Consegue ler o que a IA fez. Os nomes das tabelas, as colunas e as relações são fáceis de verificar num visualizador de tabelas, mesmo que nunca toque no código.
Uma analogia do dia a dia: um arquivo muito rigoroso
Imagine um serviço de arquivo com um armário para cada tipo de coisa — um para clientes, um para encomendas, um para produtos. Cada cartão numa gaveta tem as mesmas caixas impressas para preencher. Cada cartão tem um número único, e um cartão de encomenda não repete os dados do cliente; apenas diz «cliente n.º 214», apontando para a gaveta dos clientes.
O funcionário é rigoroso. Não arquiva uma encomenda que aponte para um cliente inexistente. Não aceita um cartão com a caixa da data em branco se ela for obrigatória. E, se lhe pedir para passar dinheiro de um cartão de conta para outro, faz as duas metades ou nenhuma — nunca só uma.
Esse funcionário é o Postgres. As gavetas são as tabelas, as caixas impressas são as colunas, cada cartão é uma linha, e a ligação «cliente n.º 214» é uma chave estrangeira.
O que o Postgres faz bem
| Funcionalidade | O que significa em palavras simples |
|---|---|
| Tabelas e relações | Os dados vivem em tabelas que apontam umas para as outras, por isso nada é copiado em cinco sítios |
| SQL | Uma linguagem padrão para fazer perguntas: «todas as encomendas por pagar do mês passado, da mais recente para a mais antiga» |
| Transações (ACID) | Um grupo de alterações acontece por inteiro ou não acontece de todo, mesmo que o servidor avarie a meio |
| Restrições | Regras que a base de dados aplica por si: campos obrigatórios, emails únicos, ligações válidas entre tabelas |
| Índices | Atalhos de pesquisa para que as consultas continuem rápidas à medida que as tabelas crescem |
| JSONB | Guarda dados flexíveis, tipo documento, numa coluna quando uma estrutura fixa não encaixa |
| Pesquisa de texto completo | Pesquisa palavras em campos de texto sem um serviço de pesquisa separado, em casos simples |
| Extensões | Complementos como o PostGIS para mapas e localizações, ou o pgvector para guardar embeddings de IA |
| Segurança ao nível da linha | Regras dentro da base de dados sobre que linhas um dado utilizador pode ver |
O Postgres começou como um projeto de investigação na Universidade da Califórnia, em Berkeley, nos anos 80, e é desenvolvido de forma aberta por uma comunidade global desde os anos 90. Essa longa história é a razão por que costuma ser a escolha por omissão: está bem documentado, tem muito suporte e todos os grandes fornecedores de cloud oferecem uma versão gerida.
Exemplo prático: transformar uma folha de cálculo em tabelas
Suponha que gere um pequeno negócio de catering e controla tudo numa só folha de cálculo: cada linha é um evento, com o nome, o telefone e o email do cliente, a data, os pratos e o preço.
Os problemas surgem depressa. O mesmo cliente aparece em seis linhas com dois números de telefone diferentes. Os pratos estão escritos numa só célula como «canapés x40, salada x2», por isso não consegue somar quantos canapés fez este mês.
No Postgres, a mesma informação passa a ser quatro tabelas:
| Tabela | Colunas | Notas |
|---|---|---|
| clients | id, name, phone, email | O email tem de ser único |
| events | id, client_id, date, venue, status | client_id tem de corresponder a um cliente real |
| menu_items | id, name, unit_price | Uma linha por prato |
| event_items | event_id, menu_item_id, quantity | Liga eventos a pratos, com uma quantidade |
Agora o número de telefone de um cliente vive num só sítio. «Quantos canapés fizemos em março?» é uma única consulta SQL. E quando regista um novo evento com os seus pratos, uma transação garante que nunca fica com um evento só com metade dos pratos guardada.
É o passo que as pessoas saltam quando pedem a uma IA para «fazer uma app a partir da minha folha de cálculo». O guia para transformar uma folha de cálculo numa app vai mais longe.
Termos-chave
- Tabela, linha, coluna: um tipo de coisa, uma instância dela, uma informação sobre ela.
- Chave primária: o ID único de cada linha, normalmente
id. - Chave estrangeira: uma coluna que aponta para uma linha de outra tabela, como
client_id. - Esquema (schema): o desenho de todas as tabelas e colunas.
- Migração: uma alteração guardada e repetível ao esquema, como «acrescentar uma coluna
venuea events». - Consulta (query): uma pergunta ou instrução escrita em SQL.
- String de ligação (connection string): o endereço e a palavra-passe que o backend usa para chegar à base de dados. É um segredo — veja variáveis de ambiente e segredos.
- Postgres gerido: um serviço que executa, faz cópias de segurança e atualiza o Postgres por si.
Para as operações do dia a dia que toda a app faz sobre estas tabelas — criar, ler, atualizar, apagar — veja o que significa CRUD.
Erros comuns e ideias erradas
- Uma tabela gigante. Copiar a folha de cálculo coluna a coluna leva aos mesmos problemas de duplicação. Separe o que se repete em tabelas próprias.
- Guardar listas num só campo de texto. «canapés x40, salada x2» numa só coluna não pode ser contado nem pesquisado como deve ser. Use uma tabela de ligação.
- Sem restrições. Sem «o email tem de ser único» ou «cada evento precisa de um cliente», dados errados entram em silêncio e aparecem meses depois.
- Alterar a base de dados à mão em produção. Peça as alterações ao esquema como migrações, para que fiquem registadas e possam ser repetidas.
- Deixar o navegador falar diretamente com a base de dados. O frontend deve passar pelo seu backend, que verifica as permissões. A palavra-passe da base de dados nunca pertence ao código da página.
- «O Postgres é só para grandes empresas.» Corre igualmente bem para uma lista de espera com 50 linhas, e não terá de sair dele à medida que cresce.
- Achar que uma base de dados é uma cópia de segurança. Guarda dados; não o protege automaticamente de os apagar. Verifique que cópias de segurança o seu fornecedor oferece.
O que pedir ao seu construtor de IA
- «Guarda [coisas] numa base de dados. Tabelas: … com estes campos: … Liga cada [encomenda] a um [cliente].»
- «Torna o email único nos clientes. Torna estes campos obrigatórios. Não permitas uma encomenda sem cliente.»
- «Usa migrações para cada alteração ao esquema.»
- «Acrescenta índices para as pesquisas que mais fazemos: encomendas por cliente e por data.»
- «Todo o acesso à base de dados passa pelo servidor. Guarda a string de ligação em variáveis de ambiente.»
Se ainda não sabe o que é uma base de dados, comece por o que é uma base de dados e depois volte aqui. Uma app full-stack mostra onde a base de dados fica ao lado do frontend e do backend.
Postgres no Mythex
O Mythex dá a cada projeto que precise dela a sua própria base de dados Postgres dedicada. Não tem de a configurar: peça no chat («guarda os emails da lista de espera numa base de dados») ou use o comando /database, e o Mythex associa-a, injeta os dados de ligação na sua app e pode criar as tabelas por si. A base de dados de uma app publicada entra em modo de repouso após cinco minutos sem atividade e acorda no pedido seguinte, e paga-se apenas o tempo em que esteve de facto acordada, a partir do mesmo saldo de créditos usado para criar. Os detalhes estão na documentação da base de dados, e os modelos de painel são um bom sítio para ver apps com dados.
Perguntas
Postgres é o mesmo que PostgreSQL?
Sim. PostgreSQL é o nome oficial e Postgres é o nome curto habitual; ambos se referem à mesma base de dados relacional de código aberto.
O Postgres é gratuito?
Sim. O PostgreSQL é de código aberto ao abrigo da licença permissiva PostgreSQL License, pelo que pode usá-lo gratuitamente, inclusive em produtos comerciais. Paga apenas os servidores ou o serviço gerido que o executa.
Qual é a diferença entre Postgres e MySQL?
Ambos são bases de dados SQL relacionais gratuitas, e ambos servem para a maioria das apps. O Postgres é conhecido pela integridade rigorosa dos dados, por tipos de dados ricos como JSONB e arrays e por um grande ecossistema de extensões; o MySQL é conhecido pela simplicidade e por uma longa história no alojamento web.
O Postgres é bom para uma app pequena?
Sim. Funciona bem para uma lista de espera com uma só tabela e para sistemas de produção de grande dimensão, por isso não terá de mudar de base de dados à medida que a app cresce. Os serviços geridos facilitam a execução sem um administrador de bases de dados.