Php 建议跨碎片执行以下哪种数据复制选项?

Php 建议跨碎片执行以下哪种数据复制选项?,php,mysql,messaging,rabbitmq,sharding,Php,Mysql,Messaging,Rabbitmq,Sharding,这本书建议,要对博客应用程序进行分片,可能需要将评论数据放在两个分片上:首先,放在发表评论的人的分片上,然后放在存储帖子的分片上 因此,这就提出了如何可靠地复制这些数据的问题。建议跨碎片执行以下哪种数据复制选项 选项1:从PHP脚本中分别插入2个 优点:a)逻辑在应用层 缺点:a)用户被保留2次插入。b) 每个试图插入类似数据的客户端都需要复制此逻辑。 结论:似乎是合理的 选项2:形成联邦表并使用一些触发器来处理重复数据的插入 优点:a)应用层不需要担心多次插入 缺点:a)每个分片都需要与每个其

这本书建议,要对博客应用程序进行分片,可能需要将评论数据放在两个分片上:首先,放在发表评论的人的分片上,然后放在存储帖子的分片上

因此,这就提出了如何可靠地复制这些数据的问题。建议跨碎片执行以下哪种数据复制选项

选项1:从PHP脚本中分别插入2个
优点:a)逻辑在应用层
缺点:a)用户被保留2次插入。b) 每个试图插入类似数据的客户端都需要复制此逻辑。
结论:似乎是合理的

选项2:形成联邦表并使用一些触发器来处理重复数据的插入
优点:a)应用层不需要担心多次插入
缺点:a)每个分片都需要与每个其他分片建立联合连接;b) 联合会将在局域网内的机器上工作,但在两个不同的站点上呢。c) 如果到联邦服务器的连接失败怎么办
结论:这似乎不是个好主意

选项3:RabbitMQ等消息传递
优点:a)不同的客户端可以在一个位置插入数据,所有订阅者都可以使用该插入
缺点:a)复杂;b) 为了托管消息传递服务器和客户端,可能会增加开销;c) 不确定如何使用查找服务查找适当的碎片
结论:不确定

选项4:你的建议

我将非常感谢你的帮助

正如您所指出的,在各种碎片之间设置触发器是愚蠢的;切分的全部原因是独立的数据库 操作。所以你可以马上扔掉它

同时更新两个表是使用最少的方法 运动部件。从长远来看,它将是最容易维护的。 如果出现问题,它将是最容易调试的

但是,如果响应时间很重要,那么您可能会想到某种方法 消息传递方法:按条目表和队列a更新注释 按用户表更新注释的消息。如果需要一个小时 要处理的消息,或者如果它在系统崩溃中丢失 --没什么大不了的,你总能康复。决不能使用消息传递方法来更新这两个表

答复:链接: