Pular para o conteúdo
Tecnologia

Baixar 10 GB para achar uma linha: como consultar um arquivo do R2 pedindo só os blocos certos

Um arquivo de 10 GB no bucket não precisa sair inteiro para responder uma pergunta pequena. Veja como o wremoto do jsonW lê só os blocos necessários no Cloudflare R2 e no S3, com os preços oficiais e os limites do projeto.

Por Equipe Wortic 9 min de leitura
Baixar 10 GB para achar uma linha: como consultar um arquivo do R2 pedindo só os blocos certos

A página de preços do Cloudflare R2, atualizada em 30 de outubro de 2026, informa que não há cobrança de saída de dados para a internet em nenhuma classe de armazenamento. Isso muda o que pesa na conta de quem consulta um arquivo guardado na nuvem: a leitura deixa de crescer com o tamanho do arquivo e passa a crescer com o pedaço lido e com o número de requisições. O jsonW foi desenhado para ler só esse pedaço. Este texto mostra como isso funciona, o que muda em custo e em tempo e o que o projeto ainda não mediu. Para o formato completo, veja o site do jsonW e o repositório no GitHub.

Por que baixar o arquivo inteiro é o problema

Quando o dado está num bucket e a pergunta é pequena, a rotina mais simples baixa o arquivo inteiro, descompacta e só depois filtra. Quem decide tecnologia precisa perguntar outra coisa: quanto do arquivo precisa mesmo sair do bucket para responder ao negócio. A resposta costuma ser uma fração pequena.

O projeto também aponta um risco à parte. Cada passagem de um formato para outro pode desfazer informação, como um preço que vira texto ou um CPF que perde o zero à esquerda. Por isso, ler só o pedaço certo do arquivo original ajuda duas vezes: gasta menos e preserva o dado.

Como o jsonW decide o que baixar

Um arquivo .jsw é guardado em blocos. O cabeçalho traz o esquema. O rodapé traz a lista dos blocos e as zonas, que anotam o menor e o maior valor de cada coluna em cada bloco. Com essas anotações, o wremoto descobre quais blocos não podem ter a linha procurada, e esses blocos nunca são baixados.

Na prática, a primeira leitura é pequena, da ordem de poucos kilobytes. Só depois vêm os blocos que podem responder à pergunta.

flowchart LR
    A[Pergunta: preco > 100] --> B[Cabeçalho e rodapé: esquema, blocos e zonas]
    B --> C{Zona do bloco pode ter a resposta?}
    C -->|não| D[Bloco fica no R2]
    C -->|sim| E[Range: baixa só esse bloco]
    E --> F[Linhas que passam]

Passo a passo com o wremoto

Os comandos seguem a documentação do projeto. Troque o nome do bucket e do arquivo pelos seus.

  1. Guarde a chave do R2 num arquivo, nunca na linha de comando, e restrinja a leitura desse arquivo:

    printf 'chave:segredo\n' > ~/.cred/r2 && chmod 600 ~/.cred/r2
  2. Aponte o wremoto para esse arquivo:

    export WJSW_R2_CRED=~/.cred/r2
  3. Veja quantas linhas e blocos existem e quanto foi baixado só para abrir o arquivo:

    wremoto info r2://meu-bucket/vendas.jsw
  4. Peça um trecho, por exemplo 5 linhas a partir da linha 1000000:

    wremoto ver r2://meu-bucket/vendas.jsw 1000000 5
  5. Filtre pela condição:

    wremoto filtrar r2://meu-bucket/vendas.jsw "preco > 100"

Se o arquivo estiver num servidor HTTP com suporte a Range, o comando é o mesmo, com a URL no lugar do endereço r2://.

Como testar no seu caso

  • Escolha uma pergunta que a equipe faz todo mês, por exemplo, as vendas de um SKU acima de um valor.
  • Rode wremoto info e anote quanto foi baixado para abrir o arquivo.
  • Compare esse número com o tamanho total do arquivo e com o tempo da rotina atual.
  • Confira o número de leituras no painel de métricas do R2 e aplique os preços da Classe B.

O que muda em custo e em tempo

Os valores abaixo estão na página de preços do R2, na classe Standard, salvo quando indicado:

  • Armazenamento: US$ 0,015 por GB-mês, com 10 GB-mês gratuitos por mês.
  • Leituras (Classe B, que incluem o GetObject): US$ 0,36 por milhão, com 10 milhões gratuitos por mês.
  • Classe Infrequent Access: US$ 0,01 por GB recuperado, com duração mínima de 30 dias.

Daí saem três consequências práticas:

  • No R2, a economia em dinheiro vem menos da transferência, que é gratuita, e mais do volume lido e do número de leituras. Quanto menos blocos a consulta toca, menos Classe B ela gera.
  • Na API do S3, uma requisição GET não traz vários intervalos de dados. Uma consulta que toca muitos blocos espalhados faz várias chamadas. A página de preços da AWS lista a transferência de dados como um componente de custo, então o pedaço lido pesa mais em serviços que cobram por ela.
  • O arquivo ocupa menos espaço. O README mede 4,9 vezes menos que o JSONL, em 100 mil registros. Como o armazenamento é cobrado por GB-mês, o efeito aparece na conta de guardar. Isso vale para o seu dado só depois de um teste com ele.

No tempo, o README mede leituras de um campo em uma linha 3.281 vezes mais rápidas que o leitor JSON do próprio projeto. A medição é local. O projeto não publicou o mesmo teste com o R2.

Onde o dado continua exato

  • Valores monetários e decimais: o decimal exato nunca passa por ponto flutuante, então 12,50 continua 12,50.
  • Códigos, como CNPJ e SKU: os bytes são guardados como foram escritos, sem normalização nem corte, e o zero da frente não some.
  • Datas e horas: o tipo tempo guarda microssegundos em UTC.

Liberdade funcional e licença

O mesmo arquivo pode ser servido pelo próprio R2, por um Worker ou por qualquer CDN, porque o leitor só precisa de Range. Para filtrar no servidor, o wjsw-cgi roda em Apache, nginx, LiteSpeed, Caddy e IIS, com a visão por permissão obrigatória. Há SDKs em dez linguagens.

A licença permite o uso livre dentro do próprio produto, em quantos servidores forem necessários. Não é permitido revender o jsonW como serviço nem fazer engenharia reversa do núcleo.

Limites que valem saber

  • O wremoto roda nativamente em macOS e Linux. No Windows, ele funciona pelo WSL.
  • O README não traz medição de leitura remota no R2 nem de custo final. Os números de 4,9 vezes e 3.281 vezes são de teste local contra JSONL.
  • O README mostra a ida e volta com bancos de dados, não com o R2. A leitura remota é descrita como leitura parcial, e a integridade do arquivo continua sendo conferida pelo comando conferir.
  • Na classe Infrequent Access, cada leitura paga recuperação, então consultas repetidas em pedaços podem custar mais.
  • Os preços mudam. Confira a página do R2 antes de dimensionar.

Perguntas frequentes

O Cloudflare R2 cobra para ler um arquivo?

Não cobra saída de dados para a internet. Cobra as leituras (Classe B) e, na classe Infrequent Access, a recuperação por GB. A página de preços do R2 traz os valores atualizados.

Preciso baixar o arquivo .jsw inteiro para consultar?

Não. O wremoto lê o cabeçalho e o rodapé e baixa só os blocos que a pergunta pode precisar. Os blocos que o rodapé descarta nunca saem do bucket.

Funciona com S3 e não só com R2?

Sim. O README cita R2, S3 e qualquer servidor HTTP com suporte a Range. Cada pedido ao R2 ou ao S3 vai assinado em AWS SigV4.

Onde guardo a chave de acesso com segurança?

Num arquivo com permissão restrita, apontado pela variável WJSW_R2_CRED. A chave não deve aparecer na linha de comando.

O jsonW substitui o meu banco de dados?

Não. O projeto não exige troca de banco. O wcon leva os dados de um banco para um .jsw e os devolve sem perda.

Quanto dá para economizar com isso?

O projeto não publicou essa conta para o R2. Para estimar, rode wremoto info no seu arquivo, compare o que foi baixado com o tamanho total e aplique os preços da página do R2 ao seu caso.

Posso usar em produto comercial?

Sim, dentro do seu produto, pela licença de uso sustentável. Revender o jsonW como serviço não é permitido. Para outros acordos, o projeto indica o contato da Wortic.

O wremoto funciona no Windows?

Não diretamente. No Windows ele roda pelo WSL. Em macOS e Linux, roda nativamente.

Fontes

Perguntas frequentes

O Cloudflare R2 cobra para ler um arquivo?

Não cobra saída de dados para a internet em nenhuma classe. Cobra as leituras (Classe B) e, na classe Infrequent Access, a recuperação por GB. A página de preços do R2 traz os valores atualizados.

Preciso baixar o arquivo .jsw inteiro para consultar?

Não. O wremoto lê o cabeçalho e o rodapé e baixa só os blocos que a pergunta pode precisar. Os blocos que o rodapé descarta nunca saem do bucket.

Funciona com S3 e não só com R2?

Sim. O README cita R2, S3 e qualquer servidor HTTP com suporte a Range. Cada pedido ao R2 ou ao S3 vai assinado em AWS SigV4.

Onde guardo a chave de acesso com segurança?

Num arquivo com permissão restrita, apontado pela variável WJSW_R2_CRED. A chave não deve aparecer na linha de comando.

O jsonW substitui o meu banco de dados?

Não. O projeto não exige troca de banco. O wcon leva os dados de um banco para um .jsw e os devolve sem perda.

Quanto dá para economizar com isso?

O projeto não publicou essa conta para o R2. Para estimar, rode wremoto info no seu arquivo, compare o que foi baixado com o tamanho total e aplique os preços da página do R2 ao seu caso.

Posso usar em produto comercial?

Sim, dentro do seu produto, pela licença de uso sustentável. Revender o jsonW como serviço não é permitido. Para outros acordos, o projeto indica o contato da Wortic.

O wremoto funciona no Windows?

Não diretamente. No Windows ele roda pelo WSL. Em macOS e Linux, roda nativamente.

Fontes

Conheça: jsonW no Cloudflare R2 e no S3: consultar sem baixar o arquivo.

Quer isso funcionando na sua empresa?

Um consultor da Wortic olha o seu caso e mostra o caminho, sem compromisso.

Falar com um consultor

Equipe editorial

Equipe editorial da Wortic especializada em automacao, IA, ERP, CRM e crescimento operacional.

  • Automacao com IA
  • Gestao empresarial
  • CRM
  • ERP
  • Marketing digital

Isso funcionando no seu negócio.

Um consultor mostra o sistema do seu ramo, com a IA dentro.