我们如何在大型机上开发应用程序以在没有 DB2/z 的情况下访问 DB2/LUW?

Posted

技术标签:

【中文标题】我们如何在大型机上开发应用程序以在没有 DB2/z 的情况下访问 DB2/LUW?【英文标题】:How do we develop an application on the mainframe to access DB2/LUW without DB2/z? 【发布时间】:2014-05-29 05:45:22 【问题描述】:

我们开发了一个在大型机 (z/OS) 上运行的应用程序,它使用 CAF(调用附加工具)与 DB2/z 通信以存储其数据。

那些已经拥有 DB2/z(因此无论如何都必须为它付费)的客户并不担心,但是还有其他人希望在没有的情况下使用我们的应用程序也会产生数据库的费用。

由于费用原因,他们表示希望我们的产品不使用 DB2/z。在 z/OS 下,DB2 的许可费用相当高,我们的应用程序并不真正需要它提供的疯狂级别的可靠性。

所以他们希望我们做的是在 zLinux (SLES/RHEL) 或 DB2/LUW 下在与大型机完全分离的机器上运行 DB2。甚至在非 IBM 数据库中,尽管这可能会更难。

我们正在为我们的代码寻找一种希望最小的更改解决方案来实现这一目标。 DB2 拥有所有联合的东西,这将允许使用 DB2/z 的程序无缝访问在其他地方运行的实例上的数据,但这仍然需要 DB2/z,因此不会降低成本。

将所有数据移出大型机并允许我们从应用程序中完全删除 DB2/z 依赖项的最简单方法是什么?

【问题讨论】:

我打算输入所有新用户的资料,说明哪些类型的问题可以在这里提出,哪些不能。即使它是主题,它也将取决于您系统内部的许多因素以及您公司的实践,您很幸运能得到一个您没有浪费时间的答案。找个好顾问。您有付费客户,我认为没有一种便宜的方法可以确保他们满意,即使咨询的结果是一种可以可靠地让他们满意的低成本实施。 比尔,我想在接触任何人之前先了解一下潜在的解决方案。而且我不确定您为什么认为这是对工具、库或最喜欢的场外资源的请求(当然,假设这是您的近距离投票)——这是一个非常具体的编程问题:CAF 与代码有很大关系我们正在寻找一种方法来做同样的事情,在我们的程序中。可能是我的措辞不清楚,我会尽量澄清。 嗯,是我。我无法选择太宽泛和意见并选择产品,所以我选择了一个。我选的任何一个都可以被认为是“错误的”。我不是 DB2 人,所以它可能有某种编程方式。您想要一个在多个操作系统上运行的系统。只需最少的代码更改。可能是多个数据库系统,至少是 DB2 的不同混合。不能显示有用的短代码。您甚至不知道带有嵌入式 sql 的 Enterprise COBOL for z/OS 程序还能编译到哪里。 “我用什么代替 CAF?”。答案可能对许多人有用,但并不意味着主题 这是一个关于在 z/OS 应用程序中抽象持久层的编码技术的问题,因此我相信它是一个话题。 OP 的问题:您的应用程序是用什么编程语言编写的;您是否以 OCO 的形式提供您的应用程序? @cschneid,它是用专有的 PL/X 编写的,与 PL/1、Pascal、C 和那些语言没有什么不同。但是,我们可以与 LE 等接口,所以我不确定该语言是否有那么重要(尽管我很乐意提供它)。它以 OCO 形式发货,但如果需要,我们可以在发货前进行任何必要的更改,例如使用出口等。我宁愿希望有一些简单的东西,比如“DB2 Connect for z/OS”,它的成本最低,允许 z 上的应用程序与其他 DB2 平台(当然没有 DB2/z)通信。我可能会把一块大石头推上山 :-) 【参考方案1】:

基于@NealB 的回答,创建层的另一种方法是在您的应用程序层中没有 SQL,而是调用子例程来完成您的 I/O。您表明您愿意创建自定义构建,因此您可以为常用的持久层创建一组例程。

调用“数据库连接”模块,对于 z/OS 上的 DB2 将执行 CAF 调用,对于 z/Linux 上的 DB2 将(比如说)建立到 DBMS 的 SSL 连接。在内存中维护一个结构,其中包含指向必要数据结构的指针联合,以便与您选择的 DBMS 进行通信。

FWIW 我见过这样做的供应商代码,允许业务逻辑独立于 DBMS 实现。有些商店使用 VSAM,有些使用 DB2,有些使用 IMS。数据模型很混乱,但有时它们是中断。

【讨论】:

【参考方案2】:

这不是答案,只是一些想法和观察。

我能想到的一种方法是将您的应用程序分层到一个 I/O 层和一个 应用层。应用程序将在 Z/os 上运行,而 I/O 层将在 托管数据库的任何机器。所有数据访问都将通过远程过程调用 通过 TCP/IP 或 UDP。这将是大量的设置和配置工作。更糟糕的是,它可能只是 适用于只读类型操作,因为管理事务 ACID(原子性、一致性、隔离性、持久性) 属性在更新操作面前变成了一场真正的噩梦。

正如 cschneid 指出的那样,您可以尝试使用“滚动您自己的”数据库管理系统 开源;但这也可能会导致比它解决的问题更多的问题。

我认为您对“将一块大石头推上山坡”的观察总结了这一点。

【讨论】:

以上是关于我们如何在大型机上开发应用程序以在没有 DB2/z 的情况下访问 DB2/LUW?的主要内容,如果未能解决你的问题,请参考以下文章

C# - 在没有许可证的情况下连接到 DB2 z/os 大型机

如何自动化 jcl 在大型机上运行 cobol 程序

使用 FtpWebRequest 附加到大型机上的文件时出现问题

如何使用 SQL 在 IBM DB2 Z/OS 中的表上显示当前权限

DB2 Z/OS:查找表中缺失的数据

连接 iPhone 以在 Xcode 中处理后没有设备日志输出