sql - 在 Oracle 中部署相同 View 的多个版本

标签 sql database oracle views versioning

<分区>

欢迎任何有趣的评论或建议。

我们的应用程序通过 View 使用第 3 方供应商数据。企业要求我们的应用程序绑定(bind)到以前版本的 View 应该能够继续使用它们,而不是必须与 View 的每个更新的供应商版本同步。应用程序“A”应该能够使用 v.1.1 的 View ,而应用程序“B”使用 v.1.2 的 View ,两者都与全局模式/命名空间中的相同表交互。

人们建议用版本号命名 View ,但这对于与更新的 View 版本保持同步的应用程序来说似乎很麻烦。这个问题有更好的解决方案吗?也许将每个受支持的 View 版本保留在它自己的模式中,并让 View 从定义表和数据所在的全局模式中提取?

最佳答案

如果您要维护 View 层,您通常会通过将 v1.2 更改限制为向现有 View 添加额外的列或添加额外的 View 来保持版本之间的兼容性。不想升级的应用程序将继续使用现有 View 的现有列,而想要升级的应用程序可以使用新 View 。 Oracle 数据字典 View 是这种方法的一个很好的例子。在每个新版本中,都有许多新 View 为需要它的应用程序公开新功能。但是针对 Oracle 7 中的数据字典 View 编写的脚本将很乐意针对 11.2 数据库运行(效率可能较低)。

这实际上与维护任何其他类型的 API 没有什么不同。当您发布 1.2 版本时,您通常不会取消现有的 API 调用或强制用户向 API 传递额外的参数。相反,您将旧 API 调用引入新版本。当然,有时您可能不得不弃用 API 的某些部分并强制现有应用程序进行小幅升级。但这些情况相对较少,只需要应用程序更改进行该弃用调用的代码——应用程序不需要完全升级到新的 v1.2 API。

关于sql - 在 Oracle 中部署相同 View 的多个版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6928376/

相关文章:

.net - 证明 SQL 注入(inject)

sql - ORACLE - 如何创建将在 NLS_COMP=Linguistic 和 NLS_Sort=Binary_CI 时使用的索引

php - 在 MySQL 中使用 PCRE 正则表达式

java - 用于在存储模式的给定列上匹配输入字符串的 SQL

java.sql.SQLException : ORA-01017: invalid username/password; logon denied 异常

java - 基本插入在数据库中有效,但在 java 类中无效

MySQL过滤多行中的列值?

SQL子查询和列命名问题

mysql - 选择 * 数学运算

mysql - SQL/MySQL 中 OR 条件的数量