我有2个框架(Laravel - web,Codeigniter - API)和2个不同的数据库。我已经构建了一个函数(在API上),它检测一个数据库(来自2个表)的变化,并在其他数据库中应用这些变化。
注意:没有办法在同一个数据库上运行Web和API - 这就是为什么我要做这件事。
无论如何,重要的是每一点变化都会得到认可。如果案件是新记录或删除记录 - 它很简单,没有任何问题。但是,如果两个数据库中都存在记录 - 我需要比较它们的值来检测变化,这一部分变得具有挑战性。
我知道如何以最慢和最重的方式做到这一点(选择每条记录并进行比较)。
我的问题是 - 您如何建议让它以智能和快速的方式运作?
非常感谢。
答案 0 :(得分:1)
只要mysql用户对两个数据库都有选择权限,您就可以在查询中限定数据库,如下所示:
SELECT * FROM `db1`.`table1`;
SELECT * FROM `db2`.`table1`;
连接到PHP时选择了哪个数据库并不重要。将在查询中使用正确的数据库。
当数据库/表名只是字母数字而不是SQL关键字时,滴答是可选的。
答案 1 :(得分:0)
根据“slave”数据库的响应时间,有两个选项不会过多地增加开销:
FOREIGN KEYS
让数据库为您完成艰难的工作。TIMESTAMP
- 字段,只要行更新,您可以设置该字段由DB更新。选项1将是我最好的猜测,但这可能意味着对正在运行的系统进行物理更改,如果FOREIGN KEYS
对您来说是新的,您可能需要测试,因为它们可能是真正的PITA(恕我直言)。
选项2更容易实现,但您仍然需要手动检测已删除/行的更改。