
PlanetScale lança TIN, extensão de busca full-text para Postgres
O que é o TIN
A PlanetScale anunciou o TIN ("Text INdex"), uma extensão de busca full-text para Postgres. A empresa apresenta o TIN como uma busca de texto rápido, completa e confiável, e destaca que busca full-text é uma das funcionalidades mais pedidas por seus clientes. O produto acompanha o lançamento do Neki, Postgres sharded da PlanetScale, que tem planos a partir de US$ 5/mês.
O TIN serve para construir funcionalidades de busca em aplicações. A empresa cita dois exemplos distintos: uma plataforma de e-commerce que precisa retornar os dez melhores produtos contendo todas as palavras-chave buscadas, e uma plataforma de descoberta jurídica (legal discovery) que precisa retornar todos os documentos que contenham uma ou mais palavras-chave de um conjunto, sem se importar com ranking.
Benchmarks
A PlanetScale rodou benchmarks para avaliar o desempenho em vários desses casos de uso. O corpus usado nos testes é um export de perguntas e respostas do Stack Exchange: 85 GB com 150 milhões de documentos. Cada substring foi interpretada de três formas - como conjunção, como disjunção e como consulta de frase - somando 3.762 consultas. Os testes foram executados em uma instância EC2 AWS i7i.8xlarge com armazenamento NVMe local e CPU moderna com suporte a AVX-512. A empresa afirma que padronizou overhead e replicação para que qualquer pessoa possa reproduzir os benchmarks de índices concorrentes usando o mesmo tipo de instância e limites de container.
Os resultados publicados cobrem quatro cenários:
- Consultas mistas (conjunção, disjunção e frase), top-10 por score BM25, sem escritas concorrentes - comparando TIN contra ParadeDB.
- Consultas de conjunção e frase, top-10, sem escritas concorrentes - comparando TIN contra ParadeDB e o GIN do Postgres.
- Consultas de disjunção, top-10 por BM25, com um cliente concorrente alvo de 1.000 escritas - comparando TIN contra ParadeDB e pg_textsearch; o GIN fica ausente aqui porque estoura memória em consultas de disjunção.
- Cenário em que o índice cabe inteiro nos shared buffers, comparando TIN, ParadeDB e GIN.
A empresa reconhece que o desempenho do TIN nos benchmarks "pode ser difícil de acreditar" e dedica uma seção a explicar os motivos técnicos.
Por que o TIN é rápido
A explicação técnica do artigo cobre vários mecanismos:
Identificação de documentos: a maioria dos sistemas de busca full-text organiza os índices em segmentos e precisa consultar identificadores de documentos em estruturas externas ao índice. Segundo a PlanetScale, se uma busca casa com 10 milhões de linhas, o ParadeDB e o pg_textsearch precisam procurar 10 milhões de identificadores. O TIN usa identificadores de 48 bits, descritos pela empresa como extremamente eficientes, de modo que consultas de conjunção e disjunção se reduzem a operações mais diretas. Quando o TIN pede ao Postgres os dados físicos das tuplas por trás de cada resultado, evita-se parte dessa indireção.
MVCC: o TIN implementa uma solução própria para lidar com o controle de concorrência multiversão (MVCC) do Postgres.
Segmentos e merge: na criação de um novo índice para uma tabela, o TIN adota uma abordagem que reduz write amplification e elimina a maior parte do custo de CPU e I/O normalmente associado à fusão de segmentos.
A PlanetScale conclui convidando os leitores a testar o TIN em seus próprios dados de texto e diz que espera ver o que será construído com a extensão.
Correção
Uma errata de 20 de setembro de 2026 informa que o número originalmente divulgado de consultas no benchmark do Stack Exchange estava errado: eram 3.762 consultas, e não as 1.719 reportadas na primeira versão do artigo.