转换和转换 Protobuf 数据
MapForce 支持将 Protocol Buffers (Protobuf) 映射到其他结构化数据格式,也可以将其他结构化数据格式映射到 Protobuf,作为映射的源或目标。 为了不断寻找更高效的方式来传输、处理和管理大型结构化数据集,Google 创建了一种与语言和平台无关的数据格式,它类似于 XML,但比 JSON 数据更小、更快、更简单。 提供了工具,可以使用 Java、Python、C++、C#、Ruby 等编程语言来生成和处理 Protobuf。
任何 Protobuf 消息的结构都定义在一个 .proto 文件中,该文件定义了每个字段的名称和值类型。Altova MapForce 允许用户将这些 .proto 文件作为源或目标,与其他数据一起导入到数据映射中,这些数据包括 XML、JSON、关系数据库、Excel、文本文件、REST 和 SOAP Web 服务等。支持 .proto 文件的版本 2 和 3。
MapForce 数据映射工具能够实现现有 XML、JSON、数据库或其他旧数据格式与采用 Protobuf 技术的全新应用程序之间的兼容性,从而提高效率。

要开始转换和处理 Protobuf 数据,只需使用“插入”菜单或快速访问工具栏上的按钮,将 .proto 文件插入到映射文件中即可。

MapForce 包含一个示例 Protobuf 数据映射,如下所示:

用于输出的目标文件(.proto 文件)与在线文档中描述的“人员联系人列表”示例相匹配。源数据是一个 XML 文件,其中包含许多与此 Protobuf 数据流无关的额外元素。在执行数据映射时,会从 XML 文件中提取必要的元素,以创建输出数据流。
请注意,Protobuf 输出的文件类型为 BLOB,即二进制大型对象。MapForce 允许开发者创建 Protocol Buffer 数据流,或者读取 Protocol Buffer 输入数据,而无需生成 Java、C++ 或其他语言的源代码,然后针对每个 Protobuf 二进制文件,根据新的 .proto 文件进行编译和执行。
查看转换后的数据
点击主界面“MapForce”数据映射窗口底部的“输出”按钮,即可执行数据映射,并将文件 "Altova_Hierarchical.xml" 作为数据源。生成的的数据流将在输出预览窗口中以类似于 JSON 的格式显示:

对于一次性需求,MapForce 用户可以通过“输出”菜单中的一个选项来保存二进制文件

以下是实际生成的二进制数据的一个片段,以常见的十六进制查看工具显示的格式:

Protobuf 传输流的效率体现在其二进制数据格式中。与 XML 或 JSON 相比,它移除了所有冗余信息,例如元素名称、空格、制表符、括号以及其他通常用于提高可读性的字符。
映射和转换 Protobuf 数据
如果您接收到一个 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 免费试用版.