是否有书籍或任何文档描述了设计用于在两方之间共享数据的批处理(离线)流程的最佳实践?
我在 spring 批处理站点上找到了一些有用的信息,但它的级别很低: 批处理策略和批处理原则指南。
批处理有很多注意事项,例如:
- 数据传输方法(例如文件)
- 双方控制协议
- 错误处理
- 文件命名约定(如果使用文件进行传输)
- 同步双方之间的截止时间
- 等等
如果有一些权威文件或清单可以确保设计遵循该领域的最佳实践,那就太好了。
更新:
当我遇到它们时,我会在本节中添加答案。
一般批处理/离线处理信息
本节取自 @user1813068 的回答。
您可以在此链接以及此链接中找到一些架构设计模式,这些模式描述了合作伙伴之间的集成和数据同步的方法。
此维基百科页面还提供了架构模式的高级概述,并包括数据集成模式:架构模式。
《数据集成蓝图和建模》一书也非常好。
数据文件
本节的大部分内容都来自这里:source
使用页眉和页脚进行平面文件交换被认为是最佳实践。平面文件可以在没有页眉和页脚的情况下进行交换,并且文件的命名可以概括一些与页眉相同的信息。使用分隔文件时,始终需要字段列表标题。
标头
在系统之间交换数据时,接收方准确了解正在发送的数据类型非常重要。确保这一点的一种方法是提供一个标题行,其中包含有关数据内容及其处理方式的相关信息。
在处理平面文件时,文件名本身也可用于通知接收方文件的内容。但是,标题行为所有可用选项提供了更好的支持。
使用 API 时,可以以类似的方式提供这些标头字段。实施将由 API 服务的开发者决定。
如果包含标头,则它由一组数据组成,并且必须始终是文件中的第一个数据。
页脚
当使用基于文件的格式时,可能会提供页脚以指示没有更多数据需要处理。
处理时,应忽略在页脚行之后找到的数据。此外,在创建数据时,请注意页脚行之后的任何数据都将被忽略。
数据格式
分隔文件
事实上的行业标准是分隔文件。
逗号分隔(CSV 或逗号分隔值)文件通常需要数据封装,通常使用双引号 (");然后必须使用反斜杠 () 或双双引号 ("") 对双引号进行转义。由于针对 CSV 实现中的不一致,建议使用制表符作为分隔符,不进行封装。在这种情况下,必须从数据中删除制表符。分隔文件通常可以更快地处理 XML 文件。
XML 文件
业内有些人更喜欢 XML 文件。XML 允许更清晰地表示信息,因为它支持嵌套数据。许多公司对这种格式的支持有限或不支持,因此不推荐。
编码
UTF-8 编码
所有数据都应采用 UTF-8 编码,以确保所有系统之间的最大兼容性。
日期和时间
建议对所有日期和时间字段使用 UTC 时间,以防止混淆。
更多最佳实践:EDI 调度和文件传输