对于联机分析处理来说简直是太棒了。在这里例子中用了一个page专门存放lastLogin数据,另一个page专门存放hostname数据。相当于将原来行存储的一列(属性)放入一个page中。和之前必须扫描所有的page来相比,现在只需要扫描两个page即可。
image.png

列压缩

这种列存储很Nice!我们还可以将他们压缩。例如某个page保存的是一个月中每天的气温信息,那我们可以直接记录当天气温与昨天的差值即可,无需保存完整的温度。也可以去使用一些压缩算法,例如Gzip、Snappy算法。但是像mp3文件是无法压缩的,因为他实际上已经是压缩过了。但如果是一个文本文件通常就可以压缩,因为里面有大量的重复字符存在。原来每个page上只能存放1000个tuple,现在因为压缩可以存放更多tuple。当然现在在没有解压的情况下某些系统可以直接对压缩数据进行操作了

列存储(如何跟踪每个 tuple的不同属性)

Fixed-length Offsets:对于一列中的每一个值来说,他们的长度都是固定的,直接靠 offset 来跟踪。(常用)如果变长怎么处理?使用最大长度进行填充

image.png

Embedded Tuple Ids:在每个 attribute 前面都加上 tupleID

优缺点:

  • Advantages
    • 减少 I/O 操作
    • 更好的查询处理和数据压缩支持
  • Disadvantages
    • 涉及少量 tuples、多数 attributes 的查询低效