使用 Raincode IMSql 在 Azure 上重新托管 IMS DC 和 IMS DB
此体系结构介绍如何使用 Raincode 的 IMSql 在 Azure 上实现信息管理系统 (IMS) 大型机应用程序工作负载。 将 IMS 数据库 (DB) 应用程序迁移到云原生解决方案比迁移关系数据库应用程序更复杂。 本文介绍如何将具有关键 IMS 特性和功能的大型机 IMS 工作负载无缝重新托管到 Azure。 您无需翻译或修改现有应用程序。
迁移前 IMS DB/DC 工作负载架构
数据流
以下数据流对应于上图:
- 用户使用 TN3270 和 HTTPS 等标准大型机协议,通过传输控制协议或 Internet 协议连接到大型机。
- 事务管理器与用户交互并调用应用程序以满足用户请求。
- 在应用程序层的前端,用户与 IMS 屏幕或网页进行交互。
- 应用程序代码使用 IMS DB(分层)后端数据层的存储功能。
- 所有离线大数据作均通过批处理作业执行。
- 除了事务处理外,其他服务还提供身份验证、安全性、管理、监控和报告。 这些服务与系统中的所有其他服务进行交互。
Azure 上的 IMSql 体系结构
下载此体系结构的 Visio 文件。
工作流程
以下工作流与上图相对应:
IMSql 终端服务器
传统上,本地用户通过 IBM 内部终端或终端仿真软件访问大型机 z/OS 界面。 具有地理位置分散的网络和数千个用户的应用程序可以通过任何形式的终端连接到大型机。 当 IMS 数据通信 (DC) 应用程序重新托管在基于云的分布式系统上时,您需要集中托管应用程序和资源,并为远程客户端设备发布它们。 您可以使用 IMSql 终端服务器在 Azure 上托管和发布应用程序和资源。
SQL Server 服务代理
在主机中,IMS DC 通过在控制区域中传输和处理消息,编排用户终端和应用程序之间的通信层。 重新托管后,SQL Server Service Broker 将编排此异步通信层。 Service Broker 通过其消息传递框架实现通信,并将消息扩展到单独的处理服务器、当前用户及其事务处理。
IMSql 处理服务器
处理服务器为 .NET Framework 或 .NET Core 中的 IMS 程序运行 Raincode 重新编译的代码。 它包含底层基础设施,使重新编译的程序能够以正确的功能等效性有效运行。 IMSql 处理服务器可以生成动态查询并调用 SQL Server 中的存储过程,这些存储过程是在重新编译 Data Language/One (DL/I) 调用期间创建的。
SQL Server 作为分层数据存储
数据在 IMS 中作为分层数据存储。 IMSql 在 SQL Server 上使用相同的模型。 此模型允许 IMSql 利用关系数据库的高性能,并在逻辑上实现 IMS 中的分层段。 它还允许系统使用分段独立扩展。 区段数据以原始 EBCDIC 格式存储,因此不需要为应用程序进行转换。 通过使用 SQL 平台即服务 (PaaS),IMSql 可以利用 Azure 提供的基础高可用性和灾难恢复功能。
DL/I 调用 API
IMSql API 可确保将通用面向业务的语言 (COBOL) IMS DL/I 调用转换为等效的 SQL 查询。 然后,它获取数据并以预期的格式将其返回给应用程序。 IMSql 还跟踪表记录上的程序位置,以执行创建、读取、更新和删除作,就像分层 DB 一样。 IMSql 可以在编译期间在 SQL Server 中创建存储过程,以响应性能密集型 DL/I 调用。
Raincode JCL
Raincode 作业控制语言 (JCL) 是一种与 z/OS JCL 兼容的解释器。 Raincode JCL 解释器使从 JCL 中嵌入的复杂业务逻辑过渡到 Azure 和 .NET Core 平台的过程尽可能顺利。 Raincode JCL 旨在运行由 Raincode COBOL、编程语言一 (PL/I) 和 ASM370 编译器编译的代码。 它可以轻松运行以大多数语言编写的步骤。 您可以通过实施用户编写的代码来配置和微调它,以便您可以根据自己的批量计划需求对其进行调整。
IMSql 数据视图
IMSql 基于副本或记录布局定义关系 SQL 视图,以便任何 Azure 服务和新应用程序都可以通过纯 SQL 语句访问 IMS 段。 IMSql 视图也是可写的,因此现代应用程序可以通过 SQL Server 以两种方式与 IMS 交互。
通过 IMSql 迁移数据
数据库对象迁移
原始 IMS 数据库描述 (DBD) 将从大型机中提取并传输。 IMSql 使用 DBD 信息生成 SQL 脚本,以在 Azure SQL 中生成目标数据库和表。
IMS DBD 中的每个段在 Azure 中都转换为一个表。
这些表由关键字段、搜索字段和 EBCDIC 中表示的完整 IMS 区段数据组成。
IMS 段树结构与 Azure SQL 表中的主键和外键关系一起保留。
初始数据加载
IMS DB 中的数据是通过大型机作业和常用的下载实用程序(如 DFSRRC00 和 DFSURGL0)提取的。
可以使用 Azure 数据工厂连接器(如文件传输协议 (FTP) 和安全文件传输协议 (SFTP))以及在 Unix 子系统服务上运行的基于 Java 的解决方案,将提取的二进制文件传输到 Azure。
IMSql 具有用于完成初始数据加载的内置加载实用程序。 此工具使用 SQL Server 大容量复制程序 (bcp) 实用程序。 它确保 bcp 运行,并且表之间所需的引用完整性与预期的分层结构相匹配。
此迁移解决了 IMS DB 中的一次性数据加载问题。 它不涉及共存和关联的数据同步。
用于迁移的 Dataflow
以下数据流对应于上图:
大型机非关系数据存储 (IMS DB) 有两个组件:DBD 和实际的 segment 数据。
IBM 实用程序提取并卸载 IMS 数据库信息。
DBD 文件和相应的二进制数据文件是单独生成的。
数据引入:
- Azure 数据工厂 FTP 连接器将大型机 IMS 数据集复制到 Azure 数据存储。
- 大型机 IMS 数据文件通过 SFTP 复制到 Azure Blob 存储。
- 大型机 JCL 用于运行自定义 Java 解决方案,该解决方案在大型机系统和 SFTP Blob Storage 之间移动数据。
通过使用 DBD 文件,IMSql 可以创建目标 DB 和表,同时保持必要的引用完整性。
创建数据对象后,IMSql 会按顺序将数据加载到相应的表中。
所有迁移的 IMS 数据都托管在 Azure SQL 托管实例中。
应用程序数据库由用于在线处理 IMS 和批处理的原始区段数据组成。
IMS 读取和写入视图由根据副本布局扩展的区段数据组成。
使用 Raincode zBridge 迁移 IMS 数据库数据
Raincode zBridge 有助于访问 Azure 上的大型机非关系数据,包括来自 IMS/DB 段的数据。 此数据在 Azure SQL 数据库中可用,用于分布式应用程序、报告和分析目的。
IMS 段数据文件与匹配的 COBOL copybook 或 PL/I include 一起导入到 zBridge 中。 数据显示为 SQL 行,这些行将大型机数字类型转换为 SQL 类型,并在需要时将字符串转换为 ASCII。 zBridge 还支持复杂的数据结构。
组件
此体系结构由以下 Azure 云服务组成。 以下部分介绍这些服务及其角色。
Azure 逻辑应用 是一个云平台,可在其中快速构建强大的集成解决方案。 大型机用户熟悉 3270 终端和本地连接。 他们可以使用逻辑应用 IBM 3270 连接器 来访问和运行 IBM 大型机应用。 在迁移的系统中,他们通过公共 Internet 或通过 Azure ExpressRoute 实现的专用连接与 Azure 应用程序交互。 Microsoft Entra ID 提供身份验证。
Azure 虚拟网络是 Azure 中专用网络的基本构建块。 虚拟网络支持在多种类型的 Azure 资源(如 Azure 虚拟机 (VM))之间以及与 Internet 和本地网络进行更安全的通信。 虚拟网络类似于在自己的数据中心内运行的传统网络,但它提供 Azure 基础结构的优势,例如规模、可用性和隔离性。
ExpressRoute 通过连接提供商提供的专用连接将本地网络扩展到 Microsoft 云中。 可以使用 ExpressRoute 与 Azure 和 Microsoft 365 等 Microsoft 云服务建立连接。
Azure 虚拟机规模集 提供自动化和负载均衡的 VM 缩放,可简化应用程序管理并提高可用性。
SQL 托管实例 是 Azure SQL 服务组合的一部分。 它是云中托管的、更安全的 up-to最新 SQL 实例。
Microsoft Entra ID 是一种基于云的企业身份和访问管理服务。 Microsoft Entra 单点登录和多重身份验证可帮助用户登录和访问资源,同时帮助防范网络安全攻击。
替代方案
可以在 Azure VM 中使用 SQL Server 作为 SQL 托管实例的替代方法。 我们建议在此体系结构中使用 SQL 托管实例,因为其优势包括高可用性、与各种 Azure 服务的无缝集成以及基础安全修补程序和维护的管理。
可以使用 Azure 单 VM 体系结构作为虚拟机规模集的替代方法。 您可能希望将单个 VM 用于具有恒定负载和性能需求且无需扩展的工作负载。 此体系结构使用虚拟机规模集来处理典型的 IMS 工作负载。
方案详细信息
大型机在线事务处理 (OLTP) 系统可以为大量用户处理数百万个事务。 IBM IMS 是一个健壮的经典大型机事务管理器,公司使用它来处理在线事务。 它有两个主要组件:IMS DC 组件和底层分层 DBMS IMS DB 组件。
IMSql 提供了一种在 Azure 上托管基于 IMS 的工作负载或基于 SQL Server 的本地分布式实现的方法。 IMSql 为运行 IMS 工作负载提供了整体解决方案,包括应用程序、数据和中间件组件。 它可以将分层 (IMS DB) 数据结构引入 SQL Server、Azure 虚拟机上的 SQL Server 和 SQL 托管实例中的关系数据模型。 它具有用于 IMS 应用程序 DL/I 调用的内置 API,并将数据层从分层工作负载扩展到用于关系数据的云原生应用程序。
此解决方案具有以下优势:
它实现了基础设施的现代化,并降低了与整体式大型机 IMS 工作负载相关的高成本、限制和僵化。
它通过实施云原生解决方案和 DevOps 来减少技术债务。
它将 IMS 数据库数据发送到不使用大型机的基于云的应用程序,包括 AI 和分析应用程序。
可能的用例
此解决方案可能有助于:
使用大型机 IMS 的银行、金融、保险、政府和零售行业。 其中许多组织在 IMS DB/DC 上运行其主要 OLTP 和批处理应用程序。
需要迁移任务关键型应用程序的 IBM zSeries 大型机客户。 这些客户希望保持与其他本地应用程序的连续性,并避免完全重新开发的影响。
注意事项
这些注意事项实施 Azure 架构良好的框架的支柱原则,即一套可用于改进工作负荷质量的指导原则。 有关详细信息,请参阅 Well-Architected Framework。
可靠性
可靠性有助于确保应用程序能够履行对客户的承诺。 有关详细信息,请参阅可靠性设计评审核对清单。
您可以在多个区域中部署此 OLTP 架构,并合并异地复制数据层。
Azure DB 服务支持区域冗余,并且可以在中断期间故障转移到辅助节点或启用维护活动。
安全
安全性提供针对故意攻击和滥用宝贵数据和系统的保证。 有关详细信息,请参阅可靠性设计审查检查表。
ExpressRoute 提供从本地到 Azure 的专用高效连接。
您可以使用 Microsoft Entra ID 对 Azure 资源进行身份验证。 您可以使用基于角色的访问控制来管理权限。
此解决方案使用 Azure 网络安全组来管理进出 Azure 资源的流量。 有关详细信息,请参阅网络安全组。
Azure DB 服务中提供了以下安全选项:
- 静止状态下的数据加密
- 动态数据掩码
- Always Encrypted 数据
有关如何设计高度安全的数据解决方案的一般指导,请参阅 SQL Server 数据库引擎和 Azure SQL 数据库的安全性。
成本优化
成本优化侧重于减少不必要的开支和提高运营效率的方法。 有关详细信息,请参阅成本优化设计评审核对清单。
虚拟机规模集通过在需求较低时最大程度地减少运行应用程序的不必要硬件实例的数量来优化成本。
SQL 托管实例提供各种定价层(如常规用途和业务关键型),以根据使用情况和业务关键性优化成本。
与即用即付价格相比,具有一年期或三年期合同的 Azure 预留和用于计算的 Azure 节省计划可节省大量成本。 在许多情况下,您可以通过实施预留实例大小灵活性来进一步降低成本。
Azure 混合权益 是一项许可权益,可帮助你显著降低在云中运行工作负载的成本。 它的工作原理是让你使用已启用本地软件保障的 Windows Server 和 Azure 上的 SQL Server 许可证。
要估计此解决方案的实现成本,请使用 Azure 定价计算器。 下面是 基于此解决方案的组件以合理比例进行的估计。
性能效率
性能效率是指工作负荷能够高效地缩放以满足用户需求。 有关详细信息,请参阅性能效率设计评审核对清单。
虚拟机规模集可确保有足够的 VM 可用来满足任务关键型联机和批处理需求。
Blob 存储是一个可扩展的系统,用于存储备份、存档数据、辅助数据文件和其他非结构化数字对象。
Database Engine Tuning Advisor 会分析数据库并提出可用于优化查询性能的建议。 您可以使用 Database Engine Tuning Advisor 来选择和创建一组最佳索引、索引视图或表分区。
可扩展性 是 PaaS 最重要的特征之一。 它允许您在需要时动态地将资源添加到您的服务中。 您可以使用 SQL 数据库轻松更改分配给数据库的资源,例如 CPU 功率、内存、输入/输出吞吐量和存储。 您可以使用 SQL 托管实例将资源动态添加到数据库,同时将停机时间降至最低。
In-Memory OLTP 是 SQL Server 和 SQL 数据库中提供的一种技术,用于优化事务处理、数据引入、数据加载和瞬态数据方案的性能。
供稿人
Microsoft维护本文。 以下参与者撰写了本文。
主要作者:
- Nithish Aruldoss | 工程架构师
- 紫水晶所罗门 |高级工程建筑师
其他参与者:
- Mick Alberts | 技术文档撰写人
要查看非公开的 LinkedIn 个人资料,请登录到 LinkedIn。
后续步骤
- 使用 FTP 连接器将文件从大型机复制到 Azure 数据工厂
- 使用 SFTP 将大型机文件传输到 Blob 存储
- 什么是虚拟网络?
- 什么是 ExpressRoute?
- Microsoft Fabric 文档
有关详细信息,请联系 Azure 数据工程 - 大型机现代化。
相关资源
请参阅配套架构:
更多相关资源: