プロトバッファの変換と変換処理

MapForceは、プロトコルバッファ(Protobuf)を、他の構造化データ形式との間で、マッピングのソースまたはターゲットとしてサポートしています。 Googleは、より効率的に大規模な構造化データセットを転送、操作、管理するための方法を常に模索しており、その結果、XMLに似た、しかしXMLよりも小型で高速かつシンプルなデータ形式であるProtobufを開発しました。 Protobufを使用するためのツールは、Java、Python、C++、C#、Rubyなど、さまざまなプログラミング言語で利用可能です。

Protobufメッセージの構造は、各フィールド名と値の型を定義する.protoファイルによって定義されます。Altova MapForceでは、ユーザーがこれらの.protoファイルを、XML、JSON、リレーショナルデータベース、Excel、フラットファイル、RESTおよびSOAPウェブサービスなど、他のデータとともに、データマッピングのソースまたはターゲットとして利用できます。.protoファイルのバージョン2と3がサポートされています。

MapForceのデータマッピング機能は、既存のXML、JSON、データベース、またはレガシーデータ形式と、Protobufの効率性を活用した新しいアプリケーションとの互換性を実現します。

Protobufの変換と加工を開始するには、まず「挿入」メニューを使用するか、クイックアクセスツールバーのボタンをクリックして、.protoファイルをマッピングに追加してください。

MapForceには、以下に示すように、Protobuf形式のデータマッピングのサンプルが含まれています

出力対象として使用される.protoファイルは、オンラインドキュメントに記載されている「Persons」連絡先リストの例と一致しています。ソースデータは、このProtobufストリームには不要な多くの追加要素を含むXMLファイルです。データマッピングを実行すると、必要な要素がXMLファイルから抽出され、出力ストリームが作成されます。

Protobuf形式の出力ファイルは、BLOB(Binary Large Object、バイナリラージオブジェクト)というファイルタイプになります。MapForceを使用すると、開発者はJava、C++、その他の言語でソースコードを生成したり、コンパイルしたり、実行したりすることなく、Protocol Bufferのデータストリームを作成したり、Protocol Bufferの入力データを読み取ったりすることができます。これは、新しい.protoファイルに基づいて、各Protocol Bufferのバイナリデータに対して処理を行うことを意味します。

変換されたデータを表示します

メインのMapForceデータマッピングウィンドウの最下部にある「出力」ボタンをクリックすると、マッピング処理が実行され、データソースとして「Altova_Hierarchical.xml」ファイルが使用されます。その結果得られたデータストリームは、出力プレビューウィンドウにJSON形式に近い形で表示されます

特定の要件に対応する場合、MapForceのユーザーは、出力メニューにあるオプションを通じて、バイナリファイルを保存することができます

以下に、一般的な16進数表示ツールで表示される、実際に生成されたバイナリデータの抜粋を示します

Protobufストリームの効率性は、そのバイナリデータに明確に表れています。XMLやJSONにおける要素名に付随する余分な情報や、人間が読みやすくするために通常含まれるスペース、タブ、括弧、その他の文字がすべて取り除かれています。

プロトバッファのマップと変換

Protobuf形式のデータストリームを受け取った場合、それを社内で使用しているデータ形式に変換することができます。以下の図は、データベースへの変換例を示しています

このマッピング機能は、受信したバイナリデータを既存のデータベーステーブルの構造に合わせて処理するために、いくつかのデータ処理変換関数を使用します。MapForceは、主要なリレーショナルデータベースおよびNoSQLデータベースとの間でデータマッピングをサポートしています。詳細はこちらをクリックしてください 完全なリストを見る.

このマッピング処理の結果として生成されるのは、バイナリデータからデータベースにデータを挿入するためのSQLスクリプトです

スクリプトの実行後、DatabaseSpy(Altova社製)を使用して、データベースの内容を確認することができます SQLエディタ:

自動実行

データ処理のワークフローでは、同じ.proto定義に基づいて新しいデータストリームを生成するために、データマッピングを繰り返し実行する必要がある場合があります。ただし、その際、異なるソースデータを使用します。上記の最初の例では、異なるXMLインスタンスドキュメントが提供される可能性があります。また、データベースやREST WebサービスからProtobufへのデータマッピングは、更新されたソースデータを取り込むために、定期的なスケジュールで実行する必要がある場合があります。

繰り返し処理が必要な場合、またはその他の同様の状況において、MapForceのユーザーは、簡単なメニュー操作を通じて、データマッピングをMapForce Serverの実行ファイルとして保存することができます

実行ファイルは、データに対して適用される入力、出力、および中間処理ステップ(ソート、フィルタリング、カスタム関数など)を定義し、サーバー環境での実行に最適化された形式で記述されています。MapForce Serverは、これらのコンパイルされたデータ変換処理を、コマンドラインまたはAPIインターフェースを通じて自動的に実行します。

MapForce Serverは、企業のニーズに応じて、FlowForce Server、RaptorXML Server、またはStyleVision Serverと連携するように構成できます。MapForce ServerがFlowForce Serverによって管理されている場合、データマッピングは、特定の時間や時間間隔で実行されるFlowForce Serverのジョブステップとして実行されるか、監視フォルダに新しいファイルが到着するなど、特定のイベントに基づいて実行されます。

Protobufデータマッピングにおいて、データソースがデータベースクエリやRESTリクエストの場合、そのクエリはマッピング処理の一部として実行されます。一方、入力がJSONやXMLなどのファイルである場合、新しいファイルは実行時にFlowForceジョブのパラメータとして指定されます。

今すぐ、以下の機能を試すことができます 完全機能を持つMapForceの無料トライアル版.