日志的用途

  • 实现ACID细节
  • 数据库间复制数据的一种方法
  • 数据库视角:物理日志(记录具体内容)和逻辑日志(记录引起改变的操作)
    • 个人看法:物理日志在空间占用上会优于逻辑日志(以一个值为例,物理日志每一条都是一个数据单位,但要表示对一个数据单位的操作一般来说需要不止一个单位),但相对来说若出错恢复更加不易

状态机复制原理

  • 如果两个相同的、确定性的进程从同一状态开始,并且以相同的顺序获得相同的输入,那么这两个进程将会生成相同的输出,并且结束在相同的状态。

  • 确定性的处理过程就是确定性的

处理和复制方案

  • 示意图
    主备模型、状态机模型(又称主-主模型)

    PS:文中叙述的主备模型应用物理日志,而状态机模型应用逻辑日志

日志结构化数据流与消息队列

  • 消息系统中的数据管道设计成日志的样子
    • 个人看法:消息生产消费系统还涉及到更复杂的控制需求如优先级、公平性等,也并不一定是像FIFO一样有时间顺序要求的队列,但一般叙述的日志结构特征重要的一点就是其顺序性?

ELT与数据仓库

  • ELT:Extraction-Transformation-Loading,数据提取、转换、加载
  • 数据仓库包含了规整的数据,是个批处理查询基础设施
  • 对于数据集中分析和处理,拥有高度集中的位置存放全部数据的规整副本对于数据密集的分析和处理是非常宝贵的资产
  • 把日志用作统一集成机制
  • 数据规整化和转换:
    • 只有针对目标系统聚合操作才应该加到加载过程中

构建可伸缩的日志

  • 人们普遍认为分布式日志是缓慢的、重量级的抽象
  • 只把它与『元数据』类的使用方式联系在一起,可能用Zookeeper才合适
  • 对于顺序读写可以方便地优化。日志可以把小的读写合成大的高吞吐量的操作

Written with StackEdit.