繁体   English   中英

跨多个数据库的PDO事务,是否可能?

[英]PDO transaction across multiple databases, is it possible?

我的一个用户遇到以下问题:他们在两个不同的位置有两个商店,每个地方都有自己的数据库,但是,他们需要共享客户群和注册销售的材料列表。 目前,我们所做的是当客户注册新客户端时,在另一个位置的数据库上进行复制。 由于互联网连接不稳定,问题很快就会出现。 如果在注册时互联网出现故障,它会尝试复制,失败并携带不一致的数据库。

我考虑通过管理两个数据库的Pdo事务对数据库进行更新,但似乎你需要一个新的PDO实例$dbh1= new PDO('mysql:host=xxxx;dbname=test',$user,$pass); 对于每个数据库,我没有看到提交这两个更新的方法。 看看这个相关的问题,跨多个数据库进行分布式事务的最佳方法是什么 ,似乎我需要一些用于转换管理。 这可以通过PDO实现吗?

不,PDO无法做任何类似于分布式交易的事情(在任何情况下,这都是一个非常棘手的问题,没有银子弹存在)。

通常,在网络分区存在的情况下(即演员从网络上掉下来),可以证明您无法同时实现一致性和可用性(保证对您的查询的响应) - 请参阅CAP定理

您似乎需要重新评估您的需求并根据此分析的结果设计解决方案; 为了横向扩展数据处理或存储,您必须从第一天开始考虑扩展并相应地进行规划。

您只能实例化单个PDO对象。 因此,您需要使用查询切换数据库,然后在第二个DB中执行相同的查询。

最好的办法是进行交易,然后提交该交易(如果成功)。 然后做类似的事情

$dbh->query('USE otherdb');
$dbh->exec();

然后执行第二个事务,并根据它是否有效提交或回滚。

我不确定这是否真的能回答你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM