名词解释:ETL、CAP和MESI

2015-01-25 • 技术文章评论

ETL

ETL即Extract-Transform-Load,用来描述将数据从来源端经过萃取(Extract)、转置(Transform)、加载(Load)至目的端的过程。ETL这个词常用在但不限于数据仓库。ETL是极为复杂的过程,而手写程序不易管理,有愈来愈多的企业采用工具协助ETL的开发,并运用其内置的元数据功能来存储来源与目的的映射以及转换规则。 工具并可以提供较强大的功能来连接来源及目的端,开发人员不用去熟悉各种相异的平台及数据的结构,亦能进行开发。例子:taskctl+kettle的免费解决方案。

CAP

最近在做分布式数据库方面的工作,不可避免地讨论到CAP定理,CAP即一致性(Consistency)、可用性(Availability)和分区容忍性(Partition Tolerance)。

CAP定理指的是在分布式的环境下设计和部署系统时,有三个核心的系统需求,这三个要素最多只能同时实现两点,不可能三者兼顾。因此在进行分布式架构设计时,必须做出取舍。其中一致性和可用性很容易理解,那么什么是分区容忍性呢?其定义为除了整个网络的故障外,其他的故障(集)都不能导致整个系统无法正确响应。比如说,机器网线断了,那么partition就形成了。理解CAP定理的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。

这个定理起源于加州大学伯克利分校(University of California, Berkeley)的计算机科学家埃里克·布鲁尔(Eric Brewer),故也称布鲁尔定理。

MESI

MESI是Modified、Exclusive、Shared、Invalid的首字母缩写,在大学的计算机组成原理教材里都有,讲的是缓存一致性的问题,这里再写出来就作为复习吧。

失效(Invalid)缓存段,要么已经不在缓存中,要么它的内容已经过时。为了达到缓存的目的,这种状态的段将会被忽略。一旦缓存段被标记为失效,那效果就等同于它从来没被加载到缓存中。

共享(Shared)缓存段,它是和主内存内容保持一致的一份拷贝,在这种状态下的缓存段只能被读取,不能被写入。多组缓存可以同时拥有针对同一内存地址的共享缓存段,这就是名称的由来。

独占(Exclusive)缓存段,和S状态一样,也是和主内存内容保持一致的一份拷贝。区别在于,如果一个处理器持有了某个E状态的缓存段,那其他处理器就不能同时持有它,所以叫“独占”。这意味着,如果其他处理器原本也持有同一缓存段,那么它会马上变成“失效”状态。

已修改(Modified)缓存段,属于脏段,它们已经被所属的处理器修改了。如果一个段处于已修改状态,那么它在其他处理器缓存中的拷贝马上会变成失效状态,这个规律和E状态一样。此外,已修改缓存段如果被丢弃或标记为失效,那么先要把它的内容回写到内存中——这和回写模式下常规的脏段处理方式一样。

参考资料

http://zh.wikipedia.org/wiki/ETL

http://zh.wikipedia.org/wiki/CAP%E5%AE%9A%E7%90%86

http://www.infoq.com/cn/articles/cache-coherency-primer