Het transformeren en converteren van Protobuf-bestanden
MapForce ondersteunt het omzetten van Protocol Buffers (Protobuf) naar en vanuit andere gestructureerde dataformaten, zoals het in kaart brengen van bronnen of doelwitten. In de voortdurende zoektocht naar efficiëntere manieren om grote, gestructureerde datasets over te dragen, te bewerken en te beheren, heeft Google een dataformaat ontwikkeld dat onafhankelijk is van programmeertalen en platforms. Dit formaat is vergelijkbaar met XML, maar kleiner, sneller en eenvoudiger dan zelfs JSON-data. Er zijn tools beschikbaar om Protobuf te genereren en te gebruiken met behulp van Java, Python, C++, C#, Ruby en andere programmeertalen.
De structuur van elk Protobuf-bericht wordt gedefinieerd in een .proto-bestand, waarin elk veld en het bijbehorende gegevenstype wordt beschreven. Altova MapForce stelt gebruikers in staat om deze .proto-bestanden in een datamapping te gebruiken als bron of bestemming, samen met andere gegevens, waaronder XML, JSON, relationele databases, Excel-bestanden, platte bestanden, REST- en SOAP-webservices, en meer. Versies 2 en 3 van .proto-bestanden worden ondersteund.
Een MapForce datamapping zorgt voor compatibiliteit tussen bestaande XML-, JSON-, database- of verouderde dataformaten en nieuwe applicaties, door gebruik te maken van de efficiëntie van Protobuf.

Om te beginnen met het converteren en transformeren van Protobuf-bestanden, kunt u eenvoudig een .proto-bestand in de mapping invoegen via het menu "Invoegen" of via de knop in de sneltoegankingsbalk.

MapForce bevat een voorbeeld van een data-mapping met behulp van Protobuf, dat hieronder wordt weergegeven:

Het .proto-bestand dat als uitvoerbestemming wordt gebruikt, komt overeen met het voorbeeld dat beschreven staat in de online documentatie voor de contactenlijst "Personen". De brongegevens zijn een XML-bestand met veel extra elementen die niet nodig zijn voor deze Protobuf-stream. Tijdens het uitvoeren van de datamapping worden de benodigde elementen uit het XML-bestand geëxtraheerd om de uitvoerstream te creëren.
Let op dat het bestandstype voor de Protobuf-uitvoer een BLOB is, oftewel een binair groot object. MapForce stelt ontwikkelaars in staat om protocol buffer-datastromen te creëren, of protocol buffer-invoergegevens te lezen, zonder broncode te genereren in Java, C++ of een andere programmeertaal. Vervolgens hoeft de code niet te worden gecompileerd en uitgevoerd voor elk Protobuf-bestand, op basis van een nieuw .proto-bestand.
Bekijk de omgezet gegevens
Door op de knop "Output" onderaan het hoofdvenster van MapForce te klikken, wordt de dataomzetting uitgevoerd, waarbij het bestand "Altova_Hierarchical.xml" als databron wordt gebruikt. De resulterende datastroom wordt geopend in het preview-venster voor de uitvoer, in een representatie die lijkt op JSON:

Voor eenmalige behoeften kunnen gebruikers van MapForce het binaire bestand opslaan via een optie in het menu "Uitvoer":

Hieronder een gedeeltelijke weergave van de daadwerkelijke binaire gegevens, zoals getoond in een veelgebruikte hexadecimale viewer:

De efficiëntie van de Protobuf-stream is duidelijk zichtbaar in de binaire data. Alle extra informatie, zoals de namen van XML- of JSON-elementen, wordt verwijderd, evenals spaties, tabs, haakjes en andere tekens die normaal gesproken worden toegevoegd om de leesbaarheid voor mensen te verbeteren.
Kaart en transformeer Protobuf
Als u een Protobuf-stream ontvangt, kunt u deze koppelen aan uw interne bedrijfsgegevensformaat. De afbeelding hieronder laat een koppeling met een database zien:

De mapping maakt gebruik van verschillende functies voor dataverwerking om de binnenkomende binaire data te bewerken en aan te passen aan de structuur van de bestaande database tabel. MapForce ondersteunt data-mapping naar of vanuit alle populaire relationele databases en NoSQL-databases. Klik hier om de volledige lijst te bekijken.
Het resultaat van deze mapping is een SQL-script dat data van het binaire bestand in een database invoegt

Nadat het script is uitgevoerd, kunnen we de inhoud van de database controleren met behulp van DatabaseSpy, de SQL-editor van Altova:

Geautomatiseerde uitvoering
Productieworkflows kunnen vereisen dat gegevensomzettingen herhaaldelijk worden uitgevoerd om nieuwe datastromen te genereren op basis van dezelfde .proto-definitie, maar met behulp van verschillende brongegevens. In het eerste voorbeeld hierboven kan een ander XML-document als invoer worden gebruikt. Een gegevensomzetting van een database of van een REST-webdienst naar Protobuf kan regelmatig moeten worden uitgevoerd om de bijgewerkte brongegevens te verwerken.
In die of andere gevallen waarin herhaalde uitvoering vereist is, kunnen MapForce-gebruikers de datamapping opslaan als een uitvoeringsbestand voor MapForce Server via een eenvoudige menuoptie:

Het uitvoerbestand definieert de invoer, uitvoer en eventuele tussenliggende verwerkingsstappen die op de data moeten worden toegepast (waaronder sorteren, filteren, aangepaste functies of andere bewerkingen), en dit in een vorm die geoptimaliseerd is voor uitvoering in een serveromgeving. MapForce Server automatiseert de uitvoering van deze gecompileerde datamappingen via een commandoregel of een API-interface.
MapForce Server kan ook worden geconfigureerd met FlowForce Server, RaptorXML Server of StyleVision Server, afhankelijk van de behoeften van het bedrijf. Wanneer MapForce Server wordt beheerd door FlowForce Server, worden de datamappingen uitgevoerd als taakstappen van FlowForce Server, die kunnen worden gestart op een specifiek tijdstip of interval, of op basis van een gebeurtenis, zoals het aankomen van een nieuw bestand in een gemonitorde map.
Voor Protobuf-datamappingen waarbij de bron een databasequery of een REST-verzoek is, wordt de query uitgevoerd als onderdeel van de mapping. Wanneer de invoer een bestand is, zoals een JSON- of XML-document, wordt het nieuwe bestand opgegeven als een FlowForce-jobparameter tijdens runtime.
U kunt dit nu allemaal uitproberen met een Volledig functionele proefversie van MapForce.