基于行的数据库看起来像:
001:10,Smith,Joe,40000;
002:12,Jones,Mary,50000;
003:11,Johnson,Cathy,44000;
004:22,Jones,Bob,55000;
基于列的数据库类似于:
10:001,12:002,11:003,22:004;
Smith:001,Jones:002,Johnson:003,Jones:004;
Joe:001,Mary:002,Cathy:003,Bob:004;
40000:001,50000:002,44000:003,55000:004;
为什么像RedShift这样的服务声称能够更好地压缩数据?或者更普遍的是为什么基于列的数据库似乎支持压缩?看起来这两种格式都可以轻松压缩。
答案 0 :(得分:2)
几乎所有压缩算法都利用了一些数据被重复的事实,因此可以进行压缩:
基于行的存储:每条记录都包含不同的数据类型,因此重复很少
在基于列的存储中:每个记录由相同类型的值组成,通常包含重复项
您的样本数据:
基于行的数据库中的所有行都是不同的,无法进行重复数据删除
在列中 - 至少姓氏有Jones
2次,所以压缩算法不是存储2次,而是存储一次,并在第二次出现时提供一些参考(更小)