PHP/MySQL - 比较来自2个不同数据库的表格

问题描述:

我有2个框架(Laravel - web,Codeigniter - API)和2个不同的数据库。我已经构建了一个函数(在API上),用于检测一个数据库(来自两个表)的更改并将更改应用到其他数据库中。PHP/MySQL - 比较来自2个不同数据库的表格

注意:没有办法在相同的数据库上运行Web和API - 这就是为什么我要做这件事。

无论如何,这是很重要的,每一个小的变化将被认可。如果案例是新记录或删除记录 - 它简单而没有问题。但是,如果记录存在于两个数据库中 - 我需要比较它们的值以检测更改,并且此部分变得具有挑战性。

我知道如何以最慢和沉重的方式做到这一点(挑选每个记录并进行比较)。

我的问题是 - 你如何建议让它工作在智能和快速的方式?

非常感谢。

只要MySQL用户对两个数据库选择的权利,你可以在查询资格数据库,像这样:

SELECT * FROM `db1`.`table1`; 
SELECT * FROM `db2`.`table1`; 

该数据库已被选中,当您连接到PHP没关系。查询中将使用正确的数据库。

当数据库/表名只有字母数字而不是SQL关键字时,刻度是可选的。

+0

由于安全性和性能方面的原因,SQL用户对这两个数据库都没有权限。我正在与API一起工作的重度网站。 – RonZ

根据“slave'数据库的响应时间有不增加开销太多两种选择:

  1. 如果你可以通过在前面同一个数据库中合并两个数据库一个或两个表,你可以使用FOREIGN KEYS让数据库为你做艰难的工作。
  2. 使用TIMESTAMP-字段,您可以设置此字段以便在行更新时由数据库自行更新。

选项1将是我最好的猜测,但是这可能意味着到正在运行的系统中的物理变化,如果FOREIGN KEYS是新的,你可能想测试,因为他们可以是一个真正的PITA(恕我直言)

选项2更容易实现,但您仍然必须手动检测对已删除/行的更改。