数据的一致性(大数据收集数据的方法)
数据一致性通常是指关联数据之间的逻辑关系是否正确完整,数据存储的一致性模型可以看作是存储系统和数据用户之间的一种约定。如果用户遵守这个协议,就可以得到系统承诺的访问结果。
常用的一致性模型有:
一、严格的一致性:
读取的数据总是最近写入的数据。这种一致性只有在全局时钟存在时才有可能,在分布式网络环境下无法实现。
b、序列一致性:
所有用户都以相同的顺序看到对相同数据的操作,但顺序不一定是实时的。
c、因果一致性:
只有具有因果关系的写操作才要求所有用户以相同的顺序看到,而没有因果关系的写操作是并行进行的,没有顺序保证。因果一致性可以看作是顺序一致性性能的优化,但是在实现时很难建立和维护因果依赖图。
d、管道一致性:
因果一致性模型的进一步弱化要求一个用户完成的写操作能够被其他所有用户有序感知,而来自不同用户的写操作不需要保证顺序,就像一个个流水线一样。相对容易实现。
E.弱一致性:
只有访问共享数据结构才需要确保序列一致性。对同步变量的操作顺序一致,全局可见,只有在没有写操作等待处理时才能执行,以保证对关键区域的顺序访问。在同步时,所有用户都可以看到相同的数据。
F.发布一致性:
弱一致性无法区分用户是要进入临界区还是要离开临界区,所以发布一致性通过两种不同的操作语句来区分。用户在需要写的时候获取对象,写完之后在发布和获取-发布之间形成一个临界区。提供发布一致性意味着所有用户应该能够在发布操作发生后看到它。
G.最终一致性:
当没有新的更新时,更新最终会通过网络传播到所有的副本点,所有的副本点最终会保持一致,也就是说,用户无法保证在某个时间点之前的中间过程中会看到新写入的数据。有一个关键的要求是可以采用最终的一致性模型:可以接受读出陈旧的数据。
H.增量一致性:
系统将在delta时间内达成一致。在此期间会出现不一致的窗口,这可能是由日志传送过程引起的。