Desenvolvedor cria com IA a CLI Terox em poucos dias para consultar 128 shards do PostgreSQL de uma só vez
Um desenvolvedor backend e ex-DBA se cansou de procurar registros em uma centena de shards do PostgreSQL usando loops em torno do psql. Com ajuda da IA, criou a CLI Terox em um par de dias: um único arquivo de configuração com modelos de hosts, consultas a todos os shards e migrações com timeouts. A principal lição do vibe coding: primeiro defina os invariantes, depois peça o código.
Processado por IA de Habr AI; editado por Hamidun News
Quando você tem uma centena de shards do PostgreSQL, a pergunta simples «Em qual deles está este registro?» vira uma saga: encontrar o host, lembrar a porta e o banco de dados, abrir o psql, executar a consulta e passar para o próximo. Um desenvolvedor backend que antes trabalhava como DBA se cansou dessa rotina. Com ajuda da IA, criou o Terox em um par de dias: uma CLI interativa para clusters distribuídos em shards.
Qual problema ele resolve
No psql e no pgAdmin, a unidade de trabalho é uma conexão. Em um sistema distribuído em shards, é todo um conjunto de conexões. Um loop em bash em torno do psql serve para uma tarefa pontual, mas não se sustenta como ferramenta de uso diário: faltam limites de concorrência, cancelamento de consultas, registro de erros por shard e proteção contra acesso acidental ao ambiente de produção.
O Terox introduz entidades de nível superior: serviço → armazenamento → um, vários ou todos os shards. Hosts e bancos de dados são definidos por modelos; por exemplo, pgbouncer-shop-rs{p1:03}.example.net se expande em 128 endereços. Uma consulta direcionada a all é executada em todos os shards, os resultados são reunidos em uma única tabela com uma coluna shard, e os erros aparecem separadamente.
Como funciona na prática
O comando \find items item_id = 424242 percorre os shards, informa que o registro foi encontrado no shard_37 e muda automaticamente o contexto para ele. Sem precisar copiar o host ou adivinhar onde está o registro.
A implementação interna é cuidadosa. O parâmetro fanout_concurrency impede que o cliente acesse todos os 128 shards ao mesmo tempo. O pool de conexões de cada shard é criado sob demanda, cada shard tem seu próprio prazo limite e Ctrl+C cancela as consultas em execução. As leituras ocorrem em uma transação READ ONLY real do PostgreSQL, sem depender da análise do texto SQL. A escrita precisa ser habilitada explicitamente com \write on e é desativada quando o contexto muda.
Também há recursos específicos de diagnóstico (\activity, \blockers, \longtx, \sizes, \diff, \doctor) e um linter que detecta DELETE sem WHERE ou NOT IN com valores que podem ser NULL.
Migrações para casos excepcionais
O autor ressalta que as migrações habituais acompanham o deploy. O Terox atende a exceções em tabelas grandes e com alta carga. Sem a opção --allowed, o comando \migrate funciona como dry-run. Há suporte a execuções canary, lotes e --resume, enquanto uma soma de verificação impede que o rollout continue com um arquivo modificado.
Não existe uma transação compartilhada pelos 128 servidores, então alguns shards podem já ter confirmado as alterações. O relatório mostra explicitamente a aplicação parcial, e as migrações devem ser idempotentes. Para CREATE INDEX CONCURRENTLY e VACUUM, que não podem ser envolvidos em uma transação com SET LOCAL, o Terox alerta sobre a execução sem proteção e exige uma confirmação adicional em produção.
O que isso diz sobre vibe coding
O processo foi descrever o problema, encontrar um modelo mínimo de comportamento, obter uma implementação da IA, verificá-la manualmente e com testes, e transformar cada caso extremo em um novo teste. Assim surgiram o fechamento dos pools ao sair, um histórico sem senhas e os testes de condições de corrida.
A principal conclusão do autor: a IA implementa uma ideia equivocada com a mesma rapidez e o mesmo cuidado, em doze arquivos de uma só vez. Por isso, defina primeiro os invariantes: nenhuma conexão permanece aberta após a saída, o PostgreSQL garante o acesso somente leitura, a mudança de contexto desativa a escrita e uma falha parcial não aparece como sucesso. Assim, a conversa com a IA se torna trabalho de engenharia.
Limitações
A análise estática do Terox é heurística. Os limites de segurança continuam sendo definidos pelas permissões da role, pelas transações READ ONLY, pelo TLS e pelos timeouts. A ferramenta não substitui monitoramento, backups nem a compreensão dos planos de consulta, e não corrige a arquitetura de sharding.
A conclusão prática: se você acessa dezenas de bancos de dados regularmente, transforme seu loop em uma ferramenta que lembre as regras por você. E, ao trabalhar com IA, comece pelos invariantes antes de partir para o código.
- 12 de nov. de 2026Claude in Chrome exige autorização para cada clique em sites da categoria 3
- 12 de nov. de 2026AWS Quick ganha seis agentes para product managers: das reclamações de clientes à especificação
- 12 de nov. de 2026Anthropic fecha o Claude para empresas russas a partir de 12 de novembro, mesmo com entidade jurídica no exterior
- 12 de nov. de 2026A IA ajudou a escrever o código: o estúdio precisa definir os direitos sobre 3 partes do produto
Perguntas frequentes sobre a notícia
O que se sabe sobre Qual problema ele resolve?
No psql e no pgAdmin, a unidade de trabalho é uma conexão. Em um sistema distribuído em shards, é todo um conjunto de conexões. Um loop em bash em torno do psql serve para uma tarefa pontual, mas não se sustenta como ferramenta de uso diário: faltam limites de concorrência, cancelamento de consultas, registro de erros por shard e proteção contra acesso acidental ao ambiente de produção. O Terox introduz entidades de nível superior: serviço → armazenamento → um, vários ou todos os shards.
Como funciona na prática?
O comando \find items item_id = 424242 percorre os shards, informa que o registro foi encontrado no shard_37 e muda automaticamente o contexto para ele. Sem precisar copiar o host ou adivinhar onde está o registro. A implementação interna é cuidadosa. O parâmetro fanout_concurrency impede que o cliente acesse todos os 128 shards ao mesmo tempo. O pool de conexões de cada shard é criado sob demanda, cada shard tem seu próprio prazo limite e Ctrl+C cancela as consultas em execução.
O que se sabe sobre Migrações para casos excepcionais?
O autor ressalta que as migrações habituais acompanham o deploy. O Terox atende a exceções em tabelas grandes e com alta carga. Sem a opção --allowed, o comando \migrate funciona como dry-run. Há suporte a execuções canary, lotes e --resume, enquanto uma soma de verificação impede que o rollout continue com um arquivo modificado. Não existe uma transação compartilhada pelos 128 servidores, então alguns shards podem já ter confirmado as alterações.
Test Frontier LLMs & Autonomous Agents in One Workspace
Run Claude Opus 5.5, GPT-6, Gemini 3.1, and DeepSeek side-by-side in Nomad AI (nomadnet.ai) — unified model routing, deep research, and multimodal workflows under one subscription.
O essencial da IA — uma vez por semana
Sete histórias que realmente importaram, escolhidas a dedo. Sem ruído nem releases.
Pronto! Verifique seu e-mail para a confirmação.