因为分布式系统的本地操作和数据交换当做事件,则理想系统中,事件时间上的先后关系和因果关系如果是全序,则系统中的进程按照全序关系执行处理事件,很容易达成一致。
一、分布式数据库中为什么要使用Vector Clock
分布式系统的本地操作和数据交换当做事件,则理想系统中,事件时间上的先后关系和因果关系如果是全序,则系统中的进程按照全序关系执行处理事件,很容易达成一致。实际的情况是, 进程存在空间隔离、时钟漂移、网络延迟等原因导致事件的全序关系(注意,不能采用中央协调的方式)难以确定,其他答主提及Lamport的论文Time, Clocks and the Ordering of Events in a Distributed System,对此进行详细对确定事件的顺序进行了详细的表述,可以细心研读。
实际上我们可以通过Lamport clock和Vector clock获得事件的偏序关系, 不存在偏序关系的两个事件为并发。其实,dynamo,Riak用到的算法为version vector。 如果多个用户并发地修改存储在多节点上的需要保持某种约束的一组数值,而且只能有一个成功,怎么处理这种问题? 需要检查写写冲突! version vector就是一种检测写写冲突的算法,如果并发事务存在写写冲突,可以按照一定的策略只让一个事务commit,其他事务rollback。 我贴出的三篇文档已经给出了详细的实例,此处不在赘述了。 建议看看分布式事务,STM, spanner等相关知识。
延伸阅读:
二、Power BI是什么
Power BI(power business intelligence)是软件服务、应用和连接器的集合,它们协同工作以将相关数据来源转换为连贯的视觉逼真的交互式见解。 无论用户的数据是简单的 Excel 电子表格,还是基于云和本地混合数据仓库的集合,Power BI 都可让用户轻松地连接到数据源,直观看到(或发现)重要内容,与任何所希望的人进行共享。
Power BI 简单且快速,能够从 Excel 电子表格或本地数据库创建快速见解。 同时 Power BI 也可进行丰富的建模和实时分析,及自定义开发。 因此它既是用户的个人报表和可视化工具,还可用作组项目、部门或整个企业背后的分析和决策引擎。