应用程序的两个实例连接到相同的,已更改的数据库

用户名

, 你好,

几天前,在接受采访时,有人问我一个奇怪的问题:

想象一下,您有2个节点,每个节点都有1个Java应用程序实例。每个实例在节点3处都使用相同的关系数据库。现在,您需要使用新架构对该数据库进行更新,但是您只需要升级一个节点。

因此,您有1个具有旧数据库配置的旧应用程序实例和1个具有新数据库配置的新应用程序实例,它们同时运行并连接到相同的数据库。

一段时间后,如果更新正常,则旧实例将更新为新版本。

我告诉他们我不知道该怎么做-因为我知道无法运行使用不同数据库版本的两个版本的应用程序(对列所做的某些更改无法完全记住)。

现在过了几天,我仍然找不到该问题的答案。我用谷歌搜索了答案,但什么都没找到。

您能否告诉我是否可行,请给我一些关键字以查找或链接到教程或文章?

问候

迈克·谢里尔(Mike Sherrill)

不要做会破坏事情的改变。(您已经知道这一部分。)

添加新的可为空的列不应破坏旧代码。添加新的非空列破坏旧代码。但是,使用一个或多个触发器来管理默认值,旧代码将继续工作。这类触发器通常不建议使用,以后再丢弃。

删除列将破坏新旧代码。因此,请弃用该列,更改代码以停止使用该列,然后将其删除。

基本原理很简单。(但是simple != easy。)这样做的方法不只一种,而且细节各不相同。

  • 如果您不确定某项变更不会破坏事物,请将其视为一项重大变更。

  • 确定旧代码中必须保持不变的内容。

  • 更改数据库以使您刚刚确定的那些事情继续有效。这可能涉及添加触发器,可更新视图,存储过程等。

  • 把这些东西写下来。您将经常使用它。

  • 更新代码。

  • 弃用并删除您创建的内容以保持其正常运行。

您应该能够在测试环境中捕获这类问题。(“我们所有人都有一个测试环境。我们中有些人很幸运能够拥有一个单独的生产环境。”-未知)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用jdk10两个容器 - 如何成功地从dockerized Tomee服务器上运行的应用程序连接到Dockerized DB2数据库/服务器?

无法将应用程序连接到数据库

如何使两个Web应用程序的数据库保持同步?

在RUNTIME时从Spring Boot应用程序中的两个相同数据库连接到一个数据库

通过嵌入式DLL将多个应用程序连接到一个Firebird数据库

具有相同数据库的两个Rails应用程序?

用于两个应用程序的liferay单个数据库

有没有办法将两个具有相同应用程序的容器连接到Kubernetes上的同一数据库?

关联不同数据库中的两个实体以及两个应用程序之间的通信

将Google Cloud App Engine应用程序连接到其Cloud SQL实例-允许数据库访问

两个Codenameone应用程序可以共享一个SQLite数据库吗?

Heroku上的数据库连接错误:将Web应用程序连接到Postgresql

将本地运行的springboot应用程序连接到在AWS VM实例上运行的数据库实例

在CloudFoundry的同一数据库上运行两个应用程序

数据库或消息队列,用于两个应用程序之间的数据交换

共享同一数据库Rails的两个应用程序

如何防止两个应用程序同时访问一个数据库

连接到SQL Server;连接到同一数据库的两个网站

单个应用程序的两个不同数据库框架可以共享同一连接对象吗?

两个流星实例连接到一个数据库-延迟问题

如何从两个Openshift应用程序访问MongoDB数据库?

Oracle数据库作为两个单独的Web应用程序的单个同步点

将一个应用程序连接到另一个应用程序的数据库时出错

单个应用程序中两个不同Firebase应用程序的通知和数据库

如何在一个 Angular 应用程序中访问两个 Mongo 数据库?

您可以使用具有相同 Firestore 数据库的两个 iOS 应用程序吗?

无法更新数据库以匹配当前模型......但仅限于两个应用程序之一

无法使用实体框架连接到 C# asp mvc 应用程序中的 Sql 数据库,但相同的代码适用于 Winform 应用程序

Docker 组合两个应用程序初始化数据库