首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对多个单独的数据库实例执行查询

对多个单独的数据库实例执行查询
EN

Software Engineering用户
提问于 2015-12-05 08:39:09
回答 4查看 468关注 0票数 2

前提

我有许多数据库服务器(不同的DBMS实例,安装在不同的物理位置),每个服务器都包含数据并使用相同的模式。大多数数据在所有数据库中都是完全相同的,但不幸的是,并不是每一种情况都是如此。

我需要编写一个应用程序,该应用程序将对跨所有数据库的表发出查询(只进行选择,而不是插入、更新或删除),检索所有结果,以便工具能够比较这些结果,从而能够向用户报告可能的差异。

用例

例如,假设我有一个基于web的表单,用户可以在其中输入公司详细信息。提交表单将对所有数据库中的同一表发出插入(通过不同的数据库连接,每个数据库都是分开的)。当用户键入公司名称时,应用程序需要能够验证输入的值并不存在于所有数据库中。如果它存在或不存在于所有数据库中,那么一切都是好的。公司名称被使用或可以由用户使用。但是,如果值存在于某些数据库,而不存在于其他数据库上,则必须引发验证错误。

我的计划

我正在编写的工具是一个Java应用程序,使用JDBC (连接到多个Oracle数据库),所以现在我的想法是创建一个连接到我的每个数据库服务器。并行发出相同的查询,等待结果并进行比较。我的用例涉及少数用户和5-10个不同的数据库服务器(数据库迁移或从/主复制是完全不可能的)。

在过去,我已经回答了某人的问题,这个问题需要一个类似于我现在应该做的事情的解决方案

问题

有什么可能的方法来处理这样的情况?

EN

回答 4

Software Engineering用户

发布于 2017-02-28 13:30:34

我认为您要寻找的是Oracle数据库链接。

创建数据库链接

使用CREATE语句创建数据库链接。数据库链接是一个数据库中的架构对象,它允许您访问另一个数据库上的对象。另一个数据库不一定是Oracle数据库系统。

票数 2
EN

Software Engineering用户

发布于 2017-02-28 14:45:21

在我看来,所有RDBMS产品都具有跨多个数据库连接数据库和查询的功能。如果这是您有而且不能预见的跨数据库查询的唯一需求,我个人不会急于链接数据库来完成这一任务。我会考虑所有潜在的不利因素,并仔细考虑。我会担心引入性能影响,因为数据库不在同一位置,而且还可能使产品更难支持。后者将取决于您的IT组织是如何构建的,以及DBA制定的任何标准/实践。

如果不按照这个要求沿着链接的数据库路径前进,我会并行地启动后台线程,每个线程都连接到每个远程DB并查询类似的数据。

建立到每个DB的连接是一个相当昂贵的操作。如果您的应用程序已经定期连接到每个应用程序,那么数据库池将有所帮助,因为DB池将使连接保持打开和可用。

另一件需要考虑的事情是,听起来你的应用程序不拥有数据库和数据。显然,不管你用什么方法连接到另一个拥有应用程序的后端数据库,你都会依赖于另一个应用程序,而不是以破坏你的数据模型的方式来转换它的数据模型。

票数 1
EN

Software Engineering用户

发布于 2015-12-05 10:41:06

您的应用程序是否是所有数据库更新的单一点?如果没有,那么你将有很多问题与欺骗。

另一方面,如果应用程序是更新的单一点,那么在将更新保存到各个数据库之前,您可以使用NoSQL使用集中式缓存,并将其用作贯穿式缓存,这样您只需查询一个缓存就可以检查dups。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/304331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档