|

O que é Protobuf?

O que é Protobuf? Foto por Pawel Czerwinski em Unsplash

Protobuf, ou “Protocol Buffers”, é um formato de dado multiplataforma usado para serializar dados estruturados. Ele é uma alternativa ao uso do JSON, porém menor e mais rápido. É útil para armazenar dados ou ao desenvolver programas que se comunicam entre si através de uma rede.

O que é Protobuf?

Protocol buffers são métodos extensíveis para serializar dados estruturados, independentes de linguagem e de plataforma. São majoritariamente usado em protocolos de comunicação e para armazenamento de dados. Uma vez definido como os seus dados devem ser formados, você pode utilizar um código-fonte gerado especialmente para ler e escrever dados estruturados de uma variedade de fontes e linguagens.

Exemplo

Vejamos aqui como um arquivo .proto se parece:

// polyline.proto
syntax = "proto2";

message Point {
  required int32 x = 1;
  required int32 y = 2;
  optional string label = 3;
}

message Line {
  required Point start = 1;
  required Point end = 2;
  optional string label = 3;
}

message Polyline {
  repeated Point point = 1;
  optional string label = 2;
}

Por que usar Protobuf?

O Protobuf está rapidamente passando o uso do JSON como o método de serialização mais popular. Protobuf foi criado pelo Google como uma ferramenta interna, com a intenção de ser mais leve e mais rápido que o XML. A sua origem se deu no ano de 2001, e anos depois de sua criação, em 2008, a ferramenta foi lançada publicamente com suporte a várias linguagens sob uma licença de código aberto.

Vantagens do Protobuf

  • Armazenamento de dados compacto
  • Interpretação rápida
  • Disponível em muitas linguagens de programação
  • Funcionalidade otimizada através de classes geradas automaticamente

Quem usa Protocol Buffers?

Muitos projetos utilizam protocol buffers, incluindo os seguintes:

Protocol Buffers podem não ser uma boa escolha?

Protocol buffers não são adequados para todos os tipos de dados. Em particular:

  • Protobufs tendem a assumir que mensagens inteiras podem ser carregadas na memória de uma única vez, e que não são maiores do que um objeto de grafo. Para dados que excedem alguns megabytes, considere uma solução diferente.

  • Quando protocol buffers são serializados, os mesmos dados podem ter serializações binárias diferentes. Você não pode comparar a equalidade de duas mensagens sem interpretá-las completamente.

  • Mensagens não são comprimidas. Enquanto mensagens podem ser usadas com zip ou gzip, algoritmos de compressão para um propósito especial, como aqueles usados por JPEG ou PNG, produzirão arquivos muito menores.

  • Protocol buffers não são suportados de maneira decente por lingugagens que não são orientadas a objetos, como Fortran e IDL.

  • Mensagens de protocol buffer não descrevem seus próprios dados. Você precisa do arquivo .proto correspondente para interpretar completamente a mensagem.

  • Protocol buffers não são um padrão formal de qualquer organização. Isto os torna não-adequados para uso em ambientes com exigências legais específicas.

Conclusão

Recomenda-se usar Protobuf quando:

  • Há exigência de serialização / desserialização rápida
  • Segurança de tipo é importante
  • Adesão ao Schema é exigida
  • Interoperabilidade entre linguagens é exigida
  • Quiser usar as ferramentas mais novas e modernas

Considere JSON ou outros formatos quando:

  • Quiser que os dados sejam legíveis por humanos
  • Dados são consumidos por um navegador
  • Adesão ao Schema não é uma preocupação

Espero que este conteúdo tenha ajudado a clarificar algumas questões envolvendo protobufs, os Protocol Buffers. Você já usa eles em seus projetos? Acha que ele ultrapassará o JSON? Receba meus artigos em primeira mão fazendo a assinatura dos emails na página Blog. Agradeço pela sua leitura! 👋