热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

优化Oracle数据库应用集成的高效策略与实践

基本上这里的目标是所谓的松散耦合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 Service Principal 和 Microsoft Graph API 获取 AAD 用户列表
    本文介绍了一段通用代码示例,该代码不仅能够操作 Azure Active Directory (AAD),还可以通过 Azure Service Principal 的授权访问和管理 Azure 订阅资源。Azure 的架构可以分为两个层级:AAD 和 Subscription。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文探讨了MariaDB在当前数据库市场中的地位和挑战,分析其可能面临的困境,并提出了对未来发展的几点看法。 ... [详细]
  • PHP 编程疑难解析与知识点汇总
    本文详细解答了 PHP 编程中的常见问题,并提供了丰富的代码示例和解决方案,帮助开发者更好地理解和应用 PHP 知识。 ... [详细]
  • 优化ListView性能
    本文深入探讨了如何通过多种技术手段优化ListView的性能,包括视图复用、ViewHolder模式、分批加载数据、图片优化及内存管理等。这些方法能够显著提升应用的响应速度和用户体验。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 本文详细介绍如何使用Python进行配置文件的读写操作,涵盖常见的配置文件格式(如INI、JSON、TOML和YAML),并提供具体的代码示例。 ... [详细]
  • 技术分享:从动态网站提取站点密钥的解决方案
    本文探讨了如何从动态网站中提取站点密钥,特别是针对验证码(reCAPTCHA)的处理方法。通过结合Selenium和requests库,提供了详细的代码示例和优化建议。 ... [详细]
  • Java 中的 BigDecimal pow()方法,示例 ... [详细]
  • 本文详细介绍了如何在Linux系统上安装和配置Smokeping,以实现对网络链路质量的实时监控。通过详细的步骤和必要的依赖包安装,确保用户能够顺利完成部署并优化其网络性能监控。 ... [详细]
  • 数据管理权威指南:《DAMA-DMBOK2 数据管理知识体系》
    本书提供了全面的数据管理职能、术语和最佳实践方法的标准行业解释,构建了数据管理的总体框架,为数据管理的发展奠定了坚实的理论基础。适合各类数据管理专业人士和相关领域的从业人员。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 本文详细介绍了Akka中的BackoffSupervisor机制,探讨其在处理持久化失败和Actor重启时的应用。通过具体示例,展示了如何配置和使用BackoffSupervisor以实现更细粒度的异常处理。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
author-avatar
龙之图皮具
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有