问题描述
嗨,
我不是Oracle数据库的大专家,所以请原谅我摸索的描述。
我们正在使用一个系统,其中有两个使用数据库链接连接的数据库。A -> 查询和rpc-> B
有必要引入一个新的系统,让我们称之为C,它提供了一个类似的服务数据库B,但它们都需要并行运行,直到B最终被取代。
过去,在使用不同类型系统的其他情况下,我们使用了扼杀器模式。这是一种逐步迁移系统的技术,将自定义 “路由器” 放置在a和B之间。最初,它只是接受来自A的请求并将其转发给B。然后在下一步中,您引入一些逻辑来转移一些查询或调用到系统C,并像新的B一样响应。您可以增加C提供的查询和d呼叫的数量,直到可以关闭B为止。
这有意义吗?
我想知道这种模式是否可能与数据库链接?我们是否可以在a和B之间引入一个小型数据库,将其称为 “路由器”,它提供与B相同的接口,并且最初仅传递查询和调用。然后,我们可以添加一点路由逻辑来转移一些查询和调用到新的数据库,C或调用REST API代替?
我猜一个人不会简单地用Oracle数据库以外的任何东西拦截Oracle数据库链接。
我不是Oracle数据库的大专家,所以请原谅我摸索的描述。
我们正在使用一个系统,其中有两个使用数据库链接连接的数据库。A -> 查询和rpc-> B
有必要引入一个新的系统,让我们称之为C,它提供了一个类似的服务数据库B,但它们都需要并行运行,直到B最终被取代。
过去,在使用不同类型系统的其他情况下,我们使用了扼杀器模式。这是一种逐步迁移系统的技术,将自定义 “路由器” 放置在a和B之间。最初,它只是接受来自A的请求并将其转发给B。然后在下一步中,您引入一些逻辑来转移一些查询或调用到系统C,并像新的B一样响应。您可以增加C提供的查询和d呼叫的数量,直到可以关闭B为止。
这有意义吗?
我想知道这种模式是否可能与数据库链接?我们是否可以在a和B之间引入一个小型数据库,将其称为 “路由器”,它提供与B相同的接口,并且最初仅传递查询和调用。然后,我们可以添加一点路由逻辑来转移一些查询和调用到新的数据库,C或调用REST API代替?
我猜一个人不会简单地用Oracle数据库以外的任何东西拦截Oracle数据库链接。
专家解答
嗯,你可以做这样的事情:
-创建您的 “路由器” 数据库
-对于在B中访问的所有对象,在路由器DB中创建同义词/视图,以通过DB链接指向B中的对象,例如
-更新A中的DB链接以指向B
-逐步更改路由器DB中的视图/同义词以指向C,例如:
-完成后切换路由器数据库
当然,这在A和最终数据库之间引入了额外的网络跳跃层。这可能会减慢速度。特别是如果您有查询同时从B和C访问表。
您可以使用实体化视图将数据分阶段到路由器数据库来缓解这种情况。当然,这使得从B -> C切换对象变得更加复杂。
因此,需要考虑的另一种选择是:
C实际上需要是一个单独的数据库吗?或者它可以是B内的模式?
你可以坚持我上面描述的视图/同义词方法。但是,您只是在更新架构,而不是更改DB链接。
这避免了额外的网络往返,并将所有数据保存在一个数据库中。如果您想在旧系统和新系统中加入表,这可能会有所帮助。
但是,当然,这带来了一个更大的问题,那就是为什么您要尝试移动B -> C;)
-创建您的 “路由器” 数据库
-对于在B中访问的所有对象,在路由器DB中创建同义词/视图,以通过DB链接指向B中的对象,例如
create or replace view vw_b as select * from vb_b@dblink_to_b;复制
-更新A中的DB链接以指向B
-逐步更改路由器DB中的视图/同义词以指向C,例如:
create or replace view vw_b as select * from vb_b@dblink_to_c;复制
-完成后切换路由器数据库
当然,这在A和最终数据库之间引入了额外的网络跳跃层。这可能会减慢速度。特别是如果您有查询同时从B和C访问表。
您可以使用实体化视图将数据分阶段到路由器数据库来缓解这种情况。当然,这使得从B -> C切换对象变得更加复杂。
因此,需要考虑的另一种选择是:
C实际上需要是一个单独的数据库吗?或者它可以是B内的模式?
你可以坚持我上面描述的视图/同义词方法。但是,您只是在更新架构,而不是更改DB链接。
这避免了额外的网络往返,并将所有数据保存在一个数据库中。如果您想在旧系统和新系统中加入表,这可能会有所帮助。
但是,当然,这带来了一个更大的问题,那就是为什么您要尝试移动B -> C;)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
Oracle RAC 一键安装翻车?手把手教你如何排错!
Lucifer三思而后行
603次阅读
2025-04-15 17:24:06
【纯干货】Oracle 19C RU 19.27 发布,如何快速升级和安装?
Lucifer三思而后行
593次阅读
2025-04-18 14:18:38
XTTS跨版本迁移升级方案(11g to 19c RAC for Linux)
zwtian
498次阅读
2025-04-08 09:12:48
Oracle数据库一键巡检并生成HTML结果,免费脚本速来下载!
陈举超
481次阅读
2025-04-20 10:07:02
【ORACLE】记录一些ORACLE的merge into语句的BUG
DarkAthena
464次阅读
2025-04-22 00:20:37
Oracle 19c RAC更换IP实战,运维必看!
szrsu
440次阅读
2025-04-08 23:57:08
【ORACLE】你以为的真的是你以为的么?--ORA-38104: Columns referenced in the ON Clause cannot be updated
DarkAthena
438次阅读
2025-04-22 00:13:51
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
429次阅读
2025-04-17 17:02:24
火焰图--分析复杂SQL执行计划的利器
听见风的声音
372次阅读
2025-04-17 09:30:30
3月“墨力原创作者计划”获奖名单公布
墨天轮编辑部
361次阅读
2025-04-15 14:48:05