---
title: "Transformação e conversão de Protobuf"
date: "2022-02-10"
categories: 
  - "data-integration"
  - "database"
  - "json"
  - "protocol-buffers"
  - "xml"
tags: 
  - "data-integration"
  - "data-mapping"
  - "flowforce-server"
  - "mapforce"
  - "mapforce-server"
description: Descubra como mapear e transformar eficientemente Protocol Buffers (Protobuf) com o Altova MapForce, integrando-o com XML, JSON e bases de dados para uma gestão de dados mais eficiente.
---
Status: #blog

Tags:  #data-integration #data-mapping #flowforce-server #mapforce #mapforce-server

Categories: [data-integration](/blog/pt/category/data-integration.md) | [database + sql](/blog/pt/category/database-sql.md) | [json](/blog/pt/category/json.md) | [data-integration](/blog/pt/category/data-integration.md) | [xml](/blog/pt/category/xml.md)
# Transformação e conversão de Protobuf

O MapForce suporta a conversão de protocolos buffer (Protobuf) para e de outros formatos de dados estruturados, como.. [mapeamento de fontes ou destinos](https://www.altova.com/pt/mapforce). Na busca constante por métodos mais eficientes para transferir, manipular e gerir grandes conjuntos de dados estruturados, o Google criou um formato de dados neutro em relação à linguagem e à plataforma, semelhante ao XML, mas mais pequeno, mais rápido e mais simples do que, sequer, os dados JSON. Existem ferramentas disponíveis para gerar e trabalhar com o Protobuf utilizando Java, Python, C++, C#, Ruby e outras linguagens de programação.

A estrutura de qualquer mensagem Protobuf é definida num ficheiro .proto, que define o nome e o tipo de valor de cada campo. O Altova MapForce permite aos utilizadores importar estes ficheiros .proto para um mapeamento de dados, como fonte ou destino, juntamente com outros tipos de dados, incluindo XML, JSON, bases de dados relacionais, Excel, ficheiros de texto simples, serviços web REST e SOAP, entre outros. São suportadas as versões 2 e 3 dos ficheiros .proto.

O MapForce permite criar mapeamentos de dados que garantem a compatibilidade entre formatos de dados existentes, como XML, JSON, bases de dados ou formatos legados, e novas aplicações que utilizam a eficiência do Protobuf.

[![](/blog/images/shutterstock_59314045.jpg)](shutterstock_59314045.jpg)

<!--more-->

Para começar a converter e transformar dados Protobuf, basta usar o menu "Inserir" ou o botão da barra de ferramentas de acesso rápido para inserir um ficheiro .proto no mapeamento.

[![Protocolos de mapeamento de dados em formato de buffers no Altova MapForce](/blog/images/insert-new.png)](insert-new.png)

O MapForce inclui um exemplo de mapeamento de dados Protobuf, que é apresentado aqui:

[![Exemplo de protocolo de mapeamento de dados usando "protocol buffers" no MapForce](/blog/images/protocol-buffers-data-mapping.png)](protocol-buffers-data-mapping.png)

O ficheiro .proto utilizado como destino de saída corresponde ao exemplo descrito na documentação online para a lista de contactos "Pessoas". Os dados de origem são um ficheiro XML que contém muitos elementos adicionais que não são necessários para este fluxo Protobuf. Quando o mapeamento de dados é executado, os elementos necessários são extraídos do ficheiro XML para criar o fluxo de saída.

Note que o tipo de ficheiro para a saída Protobuf é BLOB, ou seja, Objeto Binário Grande. O MapForce permite aos programadores criar fluxos de dados Protobuf, ou ler dados de entrada Protobuf, sem gerar código fonte em Java, C++ ou qualquer outra linguagem, e, em seguida, compilar e executar o código para cada ficheiro binário Protobuf com base num novo ficheiro .proto.

### Visualizar os dados convertidos 

Clicar no botão "Saída" (Output) na parte inferior da janela principal de mapeamento de dados do MapForce executa o mapeamento, utilizando o ficheiro "Altova_Hierarchical.xml" como fonte de dados. O fluxo de dados resultante é aberto na janela de visualização de saída, numa representação semelhante a JSON:

[![Pré-visualização da saída dos protocolos de mapeamento de dados](/blog/images/output-preview.png)](output-preview.png)

Para necessidades pontuais, os utilizadores do MapForce podem guardar o ficheiro binário através de uma opção no menu "Saída":

[![Guardar a saída binária criada pelo protocolo de mapeamento de dados](/blog/images/data-mapping-save-output.png)](data-mapping-save-output.png)

Aqui está uma representação parcial dos dados binários gerados, conforme exibidos numa ferramenta comum de visualização hexadecimal:

[![Visão geral da saída binária gerada a partir do protocolo de mapeamento de dados (protocol buffers)](/blog/images/protocol-buffers-binary-view.png)](protocol-buffers-binary-view.png)

A eficiência do fluxo Protobuf é evidente nos dados binários. Todo o "peso" associado aos nomes dos elementos XML ou JSON é eliminado, juntamente com espaços, tabulações, parênteses e outros caracteres que normalmente são incluídos para facilitar a leitura humana.

### Mapear e transformar Protobuf 

Se receber um fluxo Protobuf, pode mapeá-lo para o formato de dados interno da sua empresa. A imagem abaixo mostra um mapeamento para uma base de dados:

[![Um mapeamento de dados de protocolo buffer, onde o protocolo buffer é a fonte e a tabela de base de dados é o destino.](/blog/images/protobuf-source-mapping.png)](protobuf-source-mapping.png)

A ferramenta de mapeamento utiliza diversas funções de conversão de processamento de dados para manipular os dados binários recebidos, de forma a corresponder à estrutura da tabela de base de dados existente. O MapForce suporta o mapeamento de dados para ou a partir de todas as bases de dados relacionais e NoSQL mais populares. Clique aqui para [ver a lista completa](https://www.altova.com/pt/mapforce#db_mapping).

A saída desta operação de mapeamento é um script SQL para inserir dados de um ficheiro binário numa base de dados

[![Um script SQL como resultado do mapeamento de um protocolo protobuf para um banco de dados.](/blog/images/db-insert-script.png)](db-insert-script.png)

Após a execução do script, podemos verificar o conteúdo da base de dados utilizando o DatabaseSpy, da Altova [Editor SQL](https://www.altova.com/pt/databasespy):

[![Conteúdo da tabela após a execução do mapeamento protobuf para o banco de dados.](/blog/images/table-contents.png)](table-contents.png)

### Execução automatizada

Os fluxos de trabalho de produção podem exigir a [execução repetida de mapeamentos de dados](https://www.altova.com/pt/mapforce-server) para gerar novos fluxos de dados com base na mesma definição .proto, mas utilizando diferentes fontes de dados. No primeiro exemplo acima, poderia ser fornecido um documento XML diferente. Um mapeamento de dados de um banco de dados ou de um serviço web REST para Protobuf pode precisar ser executado em intervalos regulares para incluir os dados de origem atualizados.

Em casos como estes, ou em outros em que seja necessário executar o processo repetidamente, os utilizadores do MapForce podem guardar o mapeamento de dados como um ficheiro de execução do [MapForce Server](https://www.altova.com/pt/mapforce-server) através de uma simples seleção no menu:

[![Ficheiro de execução do MapForce Server para protocolos de mapeamento de dados](/blog/images/MapForce-Server-execution-file.png)](MapForce-Server-execution-file.png)

O ficheiro de execução define as entradas, as saídas e quaisquer etapas de processamento intermediárias que devem ser aplicadas aos dados (incluindo ordenação, filtragem, funções personalizadas ou outras) de forma otimizada para a execução num ambiente de servidor. O MapForce Server automatiza a execução destas transformações de dados compiladas através de uma interface de linha de comandos ou API.

O MapForce Server pode também ser configurado com o FlowForce Server, o RaptorXML Server ou o StyleVision Server, dependendo das necessidades da empresa. Quando o MapForce Server funciona sob a gestão do FlowForce Server, as transformações de dados são executadas como etapas de trabalho do FlowForce Server, que podem ser ativadas num horário específico ou num intervalo de tempo, ou com base num evento, como a chegada de um novo ficheiro numa pasta monitorizada.

Para os mapeamentos de dados Protobuf em que a fonte é uma consulta de base de dados ou uma requisição REST, a consulta é executada como parte do mapeamento. Quando a entrada é um ficheiro, como um documento JSON ou XML, o novo ficheiro é especificado como um parâmetro do trabalho FlowForce em tempo de execução.

Pode experimentar tudo isto agora com um.. [Versão de avaliação gratuita do MapForce, com todas as funcionalidades](https://www.altova.com/pt/mapforce/download).
