当前位置: 首页 > 面试题库 >

合并数据库如何处理重复的PK

冯峻
2023-03-14
问题内容

我们有三个按地区物理隔离的数据库,其中一个位于洛杉矶,旧金山和纽约。所有数据库共享相同的架构,但包含特定于其区域的数据。我们正在寻求将这些数据库合并为一个数据库并进行镜像。我们需要保留每个区域的数据,但是将它们合并到一个数据库中。这给我们带来了很多问题,例如,我们肯定会有重复的主键,而外键可能是无效的。

我希望找到一个对这样的任务有经验的人,他可以提供一些技巧,策略和经验,以帮助我们完成合并。

例如,一种想法是创建组合键,然后更改我们的代码和存储库,以通过组合键(区域/原始pk)查找数据。但这需要我们更改所有代码和存储过程。

另一个想法是只导入数据,并让它生成新的PK,然后将所有FK引用更新为新的PK。这样,我们可能不必更改任何代码。

欢迎任何经验!


问题答案:

我对此没有任何亲身经验,但是在我看来,您应该应该能够为每个服务器唯一地映射PK-> New PK。例如,生成新的PK,以使来自LA服务器的数据具有PK%3
== 2,SF具有PK%3 == 1,而NY具有PK%3 == 0。如果服务器仅将FK关系存储到其自己的数据,则可以以相同的方式更新FK。

NewLA = OldLA*3-1
NewSF = OldLA*3-2
NewNY = OldLA*3

然后,您可以合并它们,并且没有重复的PK。就像您已经说过的那样,这实际上只是在生成新的PK,但是以这种方式进行构造可以使您轻松地更新FK(就像我所做的那样,假设每台服务器上的数据都是隔离的)。祝你好运。



 类似资料:
  • 问题内容: 我有一个临时数据库表,其中某些数据是重复的。 如上所示,有些行是多余的,可以合并为单个行而不会违反数据有效性。我想尽可能合并这样的行,结果应该像这样 如何做到这一点? 问题答案: 如果可以确保所有开始日期和结束日期都是连续的,请尝试以下操作:

  • 本文向大家介绍ASP.NET中GridView和Repeater重复数据如何合并,包括了ASP.NET中GridView和Repeater重复数据如何合并的使用技巧和注意事项,需要的朋友参考一下 这几天做一个项目有用到表格显示数据的地方,客户要求重复的数据列需要合并,就总结了一下GridView 和 Repeater 关于重复数据合并的方法。 效果图如下 : GridView : 前台代码 : G

  • 本文向大家介绍MySQL处理重复数据的方法,包括了MySQL处理重复数据的方法的使用技巧和注意事项,需要的朋友参考一下 有些 MySQL 数据表中可能存在重复的记录,有些情况我们允许重复数据的存在,但有时候我们也需要删除这些重复的数据。 本章节我们将为大家介绍如何防止数据表出现重复数据及如何删除数据表中的重复数据。 防止表中出现重复数据 你可以在MySQL数据表中设置指定的字段为 PRIMARY

  • 在我的例子中,我使用Spring boot和MySQL DB。我有两个数据库用户。 管理员用户由liquibase用来创建表。它有自己的数据源 现在我正在尝试将Spring批处理添加到服务中。我得到了一个重复的bean异常。当我将@Primary添加到liquibase datasource时,它得到了修复,但我们不想将其用于批处理的读/写操作。 如果我在Dev User数据源中添加@Prime,

  • 我有两个分支:和。我刚刚将合并回中,并且完成了该分支。我应该删除它还是让它坐着?删除它是否会导致数据丢失?

  • 问题内容: 这个问题已经在这里有了答案 : 在Java中将两个arrayList合并到一个新的arrayList中,没有重复且没有顺序 (14个答案) 7年前关闭。 我有两个arrayLists 我想要我的最终ArrayList,其中将包含一个元素的 所有 元素以及仅包含两个元素而不包含一个元素的元素。 因此ArrayList final = {A,B,C,D,E,F,G}。 我怎样才能做到这一点