data serialization parquet protobuf big-data json binary file-extensions

Guia de Formatos de Serialização de Dados: Parquet, Avro, Proto e mais

Do JSON legível a formatos binários de alto desempenho. Aprenda as diferenças entre as extensões .parquet, .avro, .proto, .ndjson, .cbor, .bson e .har.

2026-04-11

Guia de formatos de serialização de dados: Parquet, Avro, Proto e mais

No mundo da engenharia de dados e do desenvolvimento de software, a forma como armazenamos e transmitimos dados é fundamental. Embora o JSON seja o rei das APIs web devido à sua legibilidade, ele costuma ser muito volumoso ou lento para processamento de Big Data, mensagens de alta frequência ou depuração especializada.

Este guia explora as extensões de arquivo especializadas usadas para serialização de dados além do JSON e CSV básicos.


Tabela de referência rápida: Formatos de serialização de dados

Extensão Nome completo Formato Principal caso de uso
.ndjson, .jsonl JSON delimitado por nova linha Texto (ASCII) Arquivos de log, streaming de dados, importações de Big Data
.parquet Apache Parquet Binário (Colunar) Análise de Big Data (Hadoop, Spark, AWS S3)
.avro Apache Avro Binário (Baseado em linha) Serialização de dados com esquemas (Kafka)
.proto Protocol Buffers Texto (DSL) Definição de interfaces gRPC e estruturas de dados
.bson JSON Binário Binário Armazenamento e troca de dados no MongoDB
.cbor Representação concisa de objetos binários Binário IoT, ambientes de baixa largura de banda
.har Arquivo HTTP Texto (JSON) Depuração de solicitações de rede em navegadores
.edn Notação de dados extensível Texto (tipo Lisp) Ecossistema Clojure, configuração de metadados

1. JSON amigável para stream (.ndjson, .jsonl)

O JSON padrão exige que um arquivo inteiro seja lido na memória para ser analisado (ele começa com [ e termina com ]). Isso é impossível para arquivos de log de 100 GB.

  • NDJSON / JSONL: Cada linha é um objeto JSON válido e independente.
  • Por que usar? Você pode ler um arquivo linha por linha sem carregar tudo. Se o arquivo for truncado ou corrompido, você perderá apenas a última linha, não o conjunto de dados inteiro.

2. Armazenamento colunar de Big Data (.parquet, .orc)

Os bancos de dados tradicionais armazenam dados linha por linha. Os bancos de dados analíticos geralmente preferem o armazenamento colunar.

  • Parquet: O padrão da indústria para Big Data. Por armazenar dados por coluna, ele pode compactar dados de forma muito mais eficaz e permite "pular" colunas desnecessárias para uma consulta específica.
  • ORC: Optimized Row Columnar. Semelhante ao Parquet, mas usado principalmente no ecossistema Apache Hive.

3. Serialização baseada em esquema (.avro, .proto)

Ao contrário do JSON, onde os nomes das chaves ("first_name") são repetidos em cada registro, os formatos baseados em esquema separam as "regras" dos "dados".

  • Avro: O esquema é armazenado como JSON, mas os dados são binários. É o padrão para o Apache Kafka por ser rápido e suportar a evolução do esquema.
  • Protobuf (.proto): Desenvolvido pelo Google. Você define sua estrutura de dados em um arquivo .proto e um compilador gera o código para sua linguagem preferida. É a base do gRPC.

4. Alternativas binárias ao JSON (.bson, .cbor, .msgpack)

Se você gosta da flexibilidade do JSON, mas precisa de mais velocidade ou arquivos menores, os formatos binários são a solução.

  • BSON: Usado internamente pelo MongoDB. Suporta mais tipos de dados que o JSON (como Data e dados binários).
  • CBOR: Projetado para ser extremamente pequeno e eficiente. É amplamente usado em dispositivos IoT (Internet das Coisas), onde cada byte de largura de banda conta.
  • MessagePack: Semelhante ao CBOR, é "como JSON, mas rápido e pequeno".

5. Formatos especializados (.har, .edn)

  • HAR (HTTP Archive): Se você já "exportou" um rastreamento de rede do Chrome ou Firefox DevTools, é um arquivo .har. Na verdade, é apenas um arquivo JSON enorme contendo cada cabeçalho, cookie e corpo de resposta da sua sessão de navegação.
  • EDN: Usado principalmente no mundo Clojure. É mais poderoso que o JSON porque suporta nativamente tipos personalizados (tags) e estruturas de dados mais complexas.

Como visualizar esses arquivos

  • NDJSON/JSONL: Use qualquer editor de texto ou a ferramenta de linha de comando jq.
  • Parquet: Requer visualizadores especializados ou bibliotecas Python (como pandas ou fastparquet).
  • Protobuf: Geralmente, você precisa do arquivo de definição .proto para decodificar os dados binários.
  • HAR: Você pode arrastá-lo e soltá-lo de volta no Chrome/Firefox DevTools ou usar um Visualizador de HAR Online.

Perguntas frequentes (FAQ)

P: Por que meu arquivo Parquet é menor que meu CSV?

R: O Parquet usa técnicas avançadas de compactação, como "codificação de dicionário" e "codificação de comprimento de execução". Como armazena dados por coluna, os valores em uma coluna (como "País") costumam ser idênticos, permitindo taxas de compactação enormes em comparação com arquivos de texto.

P: Posso editar um arquivo .proto?

R: Sim, os arquivos .proto são arquivos de texto legíveis por humanos onde você define suas estruturas de dados. No entanto, você não pode "editar" diretamente os dados binários produzidos a partir deles — você deve usar o código compilado.

P: O .bson é o mesmo que JSON?

R: Não exatamente. O BSON é uma representação binária que inclui dados do tipo JSON, mas também adiciona tipos como Buffer, Long e Decimal128, que o JSON padrão não suporta.


Ferramentas relacionadas no Tool3M

  • Conversor de JSON para CSV: Converta seus dados estruturados em uma tabela simples.
  • Guia de serialização binária: Saiba mais sobre Protobuf e MessagePack.