背景
我们是英国人,有几个数据库:DbFront_UK和DbBack_UK。我们最近冒险进入美国,现在有2个新的Dbs:DbFront_US和DbBack_US。 DbFront包含执行交叉数据库连接到DbBack的sprocs,反之亦然。美国和英国的数据库永远不应该通信。
美国代码和Db变更很快完成,并与英国的变化分开。现在我有一个合并代码库和dbs的任务。然而,合并代码很简单,dbs更难。有很多sprocs加入 DbFront_UK.schema.table 所以我不能再有一个可以部署到两个Dbs的SP了。
限制:
所有这4个数据库都在Rackspace的同一台服务器上。没有办法拆分它们,我只能有一个SQL实例。
问题:
提供可轻松部署和管理的单组数据库对象的最佳方式是什么?我们不断改进我们的产品,因此SP变化的可能性很高。
选项:
if UK call this SP, if US call this one
。这样做的好处是,它可能更容易识别SP在哪里,并且新开发人员更容易理解。危险在于它是一项繁琐的工作而且很丑陋,在美国dbs中会存在SP,其英国后缀永远不会被称为。但是我们为这两种环境都有相同的Db对象集任何想法都表示赞赏。
由于
答案 0 :(得分:1)
我在SQL Server中知道没有简单的方法可以做到这一点,但是你可以在前端数据库中为后端数据库中的每个表和/或SP创建一个同义词:
use TestStuff; -- My frontend db
create schema backend; -- or whatever schema you want
create synonym backend.EPValue for RCDEV.ops.EPValue -- RCDev is the backend
select * from backend.EPValue
或者,您可以创建视图:
create view backend.EPValue as select * from RCDev.ops.EPValue
然后SP将使用同义词或视图。
对于Oracle,您可以在每个Front数据库中创建数据库链接(无法记住语法,对不起)到相应的后端,并且SP使用链接名称。
对于其他数据库类型......好吧,请指定您正在使用的那个!