优化Oracle数据库应用集成的高效策略与实践
作者:龙之图皮具 | 来源:互联网 | 2024-10-22 17:04
基本上这里的目标是所谓的松散耦合https:en.wikipedi
你好,
有两个应用程序,我将其称为应用程序A和应用程序P。这两个应用程序都是第三方产品,修改应用程序的能力有限。但是,可以对数据库进行更改,例如添加过程和函数,创建表等。数据库是Oracle 11。
应用程序a需要在应用程序P中查询一些数据。我想做的是:
1.在应用程序P中,创建一个新的模式让我们称之为external_api。
2.在external_api中,创建一个函数 (让我们称之为get_data),该函数将具有来自应用程序a的数据的一个或多个参数,返回值将是来自应用程序P的数据的嵌套表集合 (嵌套表类型将在external_api中定义)。get_data函数将使用传入的参数 (来自应用程序A) 来检索数据,并构建嵌套表集合以返回。get_data将在同一数据库中查询其他模式中的表,以获取要填充集合的数据。(如果传入的数据无效,则会引发异常,可能是no_data_found,尽管我可能会在external_api中定义新的异常类型。)
3.在应用程序P中,创建一个新用户让我们称之为external_api_user。
4.将get_data函数上的execution授予external_api_user
5.创建从应用程序a到使用external_api_user连接的应用程序P的数据库链接
6.在应用程序A中,编写一个调用应用程序P中的get_data函数的过程。
通过这种方法,应用程序P将显示为应用程序A的 “黑匣子”。换句话说,应用程序A不必关注应用程序P的内部细节,例如表结构,列名等。如果供应商更改了应用程序P中的表和列,则所需要做的就是更改get_data函数中的查询,该查询检索数据,并且对应用程序A没有影响。
考虑到我实际上只能在数据库级别进行集成的限制,这是最好的方法吗?还是有另一种更好的方法?更一般地说,在数据库级别的应用程序之间集成的最佳实践是什么?
提前谢谢。
基本上这里的目标是所谓的松散耦合
https://en.wikipedia.org/wiki/Loose_coupling
您希望在应用程序 (以及这些应用程序中的组件) 之间建立合理的隔离级别。
我看不到您的建议有任何问题,只是补充说,在需要之前,我不会 “过度设计” 事情。所以
a) 独立的架构,基于API的方法-对我来说看起来不错。API提供了封装,单独的架构提供了良好的 “最不需要的特权” 容量
b) 数据库链接...我不会打扰的。如果在同一数据库中,则只需适当使用同义词/授权,同时仍保留上述 (a)。如果其中一个应用程序 * 确实 * 移至新数据库,则 * 然后 * 查看使用数据库链接。
c) 嵌套表。不要仅仅局限于这一点-在某些情况下,也许ref游标会更好,在其他情况下,也许是标量结果。除非绝对必要,否则我不会施加限制。
推荐阅读
-
本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ...
[详细]
蜡笔小新 2024-12-27 16:07:12
-
本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ...
[详细]
蜡笔小新 2024-12-27 16:38:48
-
-
本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ...
[详细]
蜡笔小新 2024-12-25 19:52:47
-
本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ...
[详细]
蜡笔小新 2024-12-25 18:20:32
-
本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ...
[详细]
蜡笔小新 2024-12-28 12:22:34
-
本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ...
[详细]
蜡笔小新 2024-12-28 10:36:30
-
本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ...
[详细]
蜡笔小新 2024-12-28 09:46:23
-
本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ...
[详细]
蜡笔小新 2024-12-28 08:39:55
-
本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ...
[详细]
蜡笔小新 2024-12-28 04:11:47
-
Java 中的 BigDecimal pow()方法,示例 ...
[详细]
蜡笔小新 2024-12-27 20:54:03
-
本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ...
[详细]
蜡笔小新 2024-12-27 19:31:05
-
本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ...
[详细]
蜡笔小新 2024-12-27 18:29:55
-
本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ...
[详细]
蜡笔小新 2024-12-27 16:11:49
-
本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ...
[详细]
蜡笔小新 2024-12-27 15:04:09
-
本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ...
[详细]
蜡笔小新 2024-12-26 13:21:38
-