预写日志(WAL)介绍

预写日志(WAL,Write Ahead Log)是关系型数据库中用于实现事务性和持久性的一系列技术。简单来说就是,做一个操作之前先讲这件事情记录下来。

举个例子:很多人都会有自己的备忘录,记录自己干了哪些事,这里的WAL日志就好比备忘录,记录了你做了哪些操作。


为什么要使用WAL呢?比如你的备忘录里面有如下记录:

  1. 2015.12.25 理发
  2. 2015.12.28 整容
  3. 2015.12.31 修指甲 (别乱想,博主并非女孩)

如果某一天你忘记了自己是如何变成现在这个样子的,那你可以去翻看你的备忘录,然后按照备忘录的记录依次执行,你就能找到答案。

为什么要使用WAL呢?上面的解释比较秀逗,本节说一下真正的原因:真正的执行操作可能数据量会比较大,操作比较繁琐,并且写数据不一定是顺序写,所以如果每一次操作都要等待结果flush到可靠存储(比如磁盘)中才执行下一步操作的话,效率就太低了。换一种思路,如果我们在做真正的操作之前,先将这件事记录下来,持久化到可靠存储中(因为日志一般很小,并且是顺序写,效率很高),然后再去执行真正的操作。这样执行真正操作的时候也就不需要等待执行结果flush到磁盘再执行下一步,因为无论在哪一步出错,我们都能够根据备忘录重做一遍,得到正确的结果。

这篇文章应该是本博客最简短的一篇了,但是我觉得我解释得够清晰形象了,你们觉得呢?

你可能感兴趣的:(HBase)