数据库到数据库通信


Database to Database communication

我正在计划为与我合作的公司建立一个网站。该公司是一家电子产品批发商,希望获得更好的网络形象。他们目前的POS系统使用PervasiveSQL作为数据库。我将使用MySQL作为网站数据库和PHP作为语言。

但是,我想将这个网站

与这个当前的数据库集成;我想让网站使用它自己的数据库,以防万一发生入侵,一切都不会受到损害。当网站接受订单时,我希望它也被复制到他们的POS系统中。

我该如何完成此操作?我是否只在代码中编写第二个 INSERT 语句并插入到两个数据库中?有没有一种方法,当数据库将某些内容插入到表中时,它将触发一个事件,该事件将插入的信息放入另一个数据库中?我问这个问题是因为当新产品或客户帐户添加到原始POS系统中时,我希望将该信息放在网站数据库中。

根据您的描述,您可以做的是让网站使用只读凭据访问 POS 系统的数据库。 这样你就不需要复制数据了。 如果该网站被利用,攻击者将无法获得对 POS 数据库的写入访问权限。

如果需要从 Web 应用写入 POS 数据库,

并且担心是否授予其直接访问权限,则可以在两者之间放置一个 Web 服务(只能从内部网络访问),并调用该服务,而不是直接访问 POS 数据库。 实际上,放置Web服务也是从POS系统读取的好方法。

基本上,复制数据和保持同步可能是一个大问题,最好避免使用此选项。

您没有说明如何对数据库连接进行编码,但是很有可能同时连接到多个数据库,因为没有任何限制。

假设您正在使用 PDO。

要连接到 2 个数据库,您可以使用:

$db1 = new PDO('mysql:host=localhost;dbname=database1;charset=utf8', 
'username1', 'password1');
$db2 = new PDO('mysql:host=localhost;dbname=database2;charset=utf8', 
'username2', 'password2');

这将导致 2 个数据库引用$db 1 和 $db 2

若要插入到这两个数据库中,请使用查询提交中的引用

$result1 = $db1->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");
$result2 = $db2->exec("INSERT INTO table(firstname, lastname) VAULES('John', 'Doe')");