分布式关系型数据库如何保证数据的强一致性?

目前主流的开源或商用分布式关系数据库都能保证数据的强一致性不?是否存在丢数据风险?

参与8

2同行回答

bryanbryan  软件架构设计师 , 金融研发
为什么会出现强一致性?分布式数据库采用X86平台,相比于大机或者小型机,开放平台有不稳定的因素,需要考虑单个节点宕机后数据如何不丢失。那采取的方式就是将数据存储多份,使用多个节点。这种解决方式引入了一个问题:如何保证这些数据的一致性呢?最理想的目标是数据都时时刻刻完...显示全部

为什么会出现强一致性?分布式数据库采用X86平台,相比于大机或者小型机,开放平台有不稳定的因素,需要考虑单个节点宕机后数据如何不丢失。那采取的方式就是将数据存储多份,使用多个节点。这种解决方式引入了一个问题:如何保证这些数据的一致性呢?最理想的目标是数据都时时刻刻完全一致:
1.如果同步将所有数据都保持一致,那么这个请求时间太久了,客户端无法接受;
2.如果异步将所有数据都保持一致,如果这个节点挂了,其他节点存在还没完成数据同步就坏掉,从而造成数据丢失;
既然这样,那就采用折中的模式,既不所有节点写成功,也不单个节点写成功,只需要超过半数写成功,这有两个协议:paxos 和 raft。
这样就没有数据丢失的风险了吗?理论上,无论保存多少份,只要全部节点坏掉,都会数据丢失。唯一考虑的,全部坏掉的概率有多大?如果三个节点,全部坏掉的概率,肯定会大于五个节点全部坏掉的概率。所以数据越重要,保存份数越多。数据份数越多,硬件成本越高。这就是使用硬件成本换区数据安全的方式。最终,还得平衡数据安全性和经济成本。

收起
银行 · 2019-06-27
浏览1941
hellothellot  系统架构师 , 保险
副本可以设置成为强同步或者弱同步,强同步必须等备节点确认接收到数据更改后主节点才能执行后续操作,确保数据完全一致。所以一旦主节点发生故障后,可以通过管理工具自动切换至强同步的副本,也不会存在数据丢失的风险。...显示全部

副本可以设置成为强同步或者弱同步,强同步必须等备节点确认接收到数据更改后主节点才能执行后续操作,确保数据完全一致。所以一旦主节点发生故障后,可以通过管理工具自动切换至强同步的副本,也不会存在数据丢失的风险。

收起
保险 · 2019-05-17
浏览2028

提问者

jwlvinner
数据库管理员证券公司

问题来自

相关问题

相关资料

相关文章

问题状态

  • 发布时间:2019-05-16
  • 关注会员:4 人
  • 问题浏览:3365
  • 最近回答:2019-06-27
  • X社区推广