我们开发了一个在大型机(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依赖项的最简单方法是什么?
这不是一个答案,只是一些想法和观察。
我能想到的一种方法是将您的应用程序层分为I/O层和应用程序层。应用程序将在Z/os上运行,I/O层将在托管数据库的任何机器上运行。然后,所有数据访问都将通过TCP/IP或UDP上的远程过程调用进行。这将是大量的设置和配置工作。更糟糕的是,它可能只适用于只读类型的操作,因为面对更新操作,管理事务ACID(原子性、一致性、隔离性、持久性)属性成为一场真正的噩梦。
正如cschneid所指出的,您可以尝试使用开源“滚动您自己的”数据库管理系统;但这也可能会导致比它解决的问题更多的问题。
我想你关于“推大石头上山”的观察总结了这一点。
基于@NealB的回答,创建层的另一种方法是在应用程序层中没有SQL,而是调用子例程来完成您的I/O。您表示您愿意创建自定义构建,因此您可以为通常要求的持久层创建一组例程。
调用“数据库连接”模块,对于z/OS上的DB2,该模块将执行CAF调用;对于z/Linux上的DB2,该模块将(比如)建立到DBMS的SSL连接。使用指向所需数据结构的指针的联合来维护内存中的结构,以便与所选DBMS通信。
FWIW我见过这样做的供应商代码,允许业务逻辑独立于DBMS实现。一些商店使用VSAM,其他商店使用DB2和其他IMS。数据模型很凌乱,但有时它们是断裂的。
问题内容: 我试图将配置(例如URLs / etc)放入资源文件夹中,以供实用程序类使用。但是,我不想从任何地方的活动中传递上下文。我希望能够通过路径名(似乎使用assess /是为此用途设计的)来访问资源,而无需使用上下文来访问资源。 在这种特殊情况下,我希望单例实例化时在配置中使用某些东西。除了实例化期间的那一次之外,它不需要任何资源。因此,每次调用getInstance()时都必须传递Con
有没有可能,或者有没有人创建了一个过程,通过这个过程,他们使用DB2的LUW实例来进行测试数据、本机和cobol过程,同时实际使用DB2的大型机版本来运行他们的生产软件?也许另一个很好的问题是,这样做会不会是一件聪明的事情? 现在,我们的测试系统问题的一些显而易见的解决方案将是花费资源使大型机更快,或者甚至有一个专用的测试大型机(显然不必那么强大)。但是,正如所有与IBM共事的人都知道的那样,那些
我是Quarkus新手,正在使用Eclipse和Quarkus插件。 无论我是手动使用启动还是使用Eclipse夸克启动配置,应用程序似乎总是在运行测试。 我看到了类似的东西 有一段时间什么都没发生,直到我看到Quarkus标志、我的日志消息等。 也许我还没有仔细阅读文档,但我发现没有配置来关闭它并直接在开发模式下启动应用程序。 有人能帮我吗?
问题内容: 据我所知,没有主方法就无法执行,因为运行Java程序时。Java虚拟机将查找main方法。如果JVM无法找到main方法,它将显示运行时错误。线程main中的异常找不到main类。 但是我搜索了许多博客,其中一些人说,是的,如果Java程序中有静态块,则可以通过静态博客来完成,类加载器会在Java调用main()方法之前加载所有静态块! 真的有可能吗?它们的可用性如何? 问题答案: 现
我使用创建了一个应用程序构建文件。这将用和文件填充文件夹。 我在internet上进行了搜索,发现可以使用运行这些文件。不幸的是,这会产生以下错误输出: org.springframework.beans.factory.BeanCreationException:创建名为“org.springframework.boot.autocigure.orm.jpa.hibernatejpaAutoCo
由于Oracle发布了Java7Update25,我们的应用程序不再运行。 最初我们得到了一些关于代码库的警告 我们现在遇到的问题是,在控制台中,我们只得到以下行: 我们还会得到一个应用程序错误对话框,其中包含消息:无法启动应用程序。 “详细信息”按钮在异常中提供以下详细信息: 相关代码部分包括: (最后一行是第139行) (最后一行是发生异常的第24行) 有人能给我们一些提示(或者更好的解决方案