数据仓储

来源:互联网 发布:权力的游戏编剧知乎 编辑:程序博客网 时间:2024/04/28 17:25

参考资料

http://db.csail.mit.edu/madden/high_perf.pdf

  

  

三种常用的并发模型

  • 共享内存(share-memory)
  • 共享硬盘(share-disks)
  • 无共享(share-nothing)

  

共享内存(例如SMP)的系统中,多个CPU共享一个内存系统和一组硬盘。优点是编程简单,不需要实现复杂的分布式锁/提交协议。但扩展性受限:memory bus将成性能瓶颈、复杂的CPU的L2 Cache一致性算法。所以,CPU核数一般不会太大.

  

共享硬盘的系统中,每个处理结点有自己的内存,但是共享存储,如通过SAN(Storage Area Network)或 NAS(Network attached storage)。共享硬盘有共享内存系统类似的扩展性限制:网络带宽;另外,因为没有共享内存,所以必须实现复杂的分布式锁和提交协议以保证一致性(基于消息/message,网络开销)。

  

为了提高共享硬盘系统的性能,有些厂商实现了共享缓存(share-cache)的设计,访问数据的步骤

  • 首先检查本地缓存池
  • 如果没有,检查集群中其他节点的缓存池
  • 如果没有,访问硬盘

      

这种系统设计,对OLTP场景工作良好,但是对于OLAP/数据仓储不太适用。OLAP/数据仓储的访问模式是顺序扫描,cache命中率低而导致1、2步不必要的开销。

  

在无共享(shar-nonthing)系统中,每个处理器都有自己的内存和硬盘。数据被垂直划分到各个节点,每个节点处理自己的数据(包括锁的维护、buffer pool)。无共享集群可以有廉价的普通PC组成。但是做设计数据关联时,依然会有分布式锁、提交协议、网络的性能开销,所以数据划分很重要,以使得各节点尽量独立而减少依赖。

  

  

数据仓储中普遍用的技术

  • 列式存储
    • OLAP业务一般读取几个字段,而不是整行
    • 列式存储中列数据顺序存放,IO效率高
    • 列式存储,方便数据压缩(同一列的数据类型相同)
  • 压缩

  

0 0