信息论之进制压缩算法(在hbase索引压缩中的应用)
前言 大家都知道hbase的使用中,最重要的是rowkey的设计。而rowkey的设计中有三个关键点: 1、前缀预防读写热点 2、前缀适合查询场景 3、在满足1、2的前提下,关注索引的存储空间 关于1和2,介绍的文章很多。这篇文章主要分析一下索引的空间利用率,并试图推导出一套具有广泛应用价值的存储压缩思想。 信息的量化 我们先用世界杯的例子介绍一下信息论一个重要的概念信息量。 2018年的世界杯在俄罗斯举办,有32个国家参赛(为了方便说明,我们将32个国家进行编号1-32)。我们要猜冠军会是哪个国家。假设现在来了一个从未来穿越过来的机器人,它已经知道比赛结果。我们可以向它提问,它可以告诉我们,我们的猜测是“对”还是“错”,不过问它一次要给它一块钱。那么我们要问多少次(花多少钱)才能知道结果呢? 很容易知道,我们问它5次就能知道结果(先猜冠军出现在1-16号,如果猜对,则继续猜1-8号;以此类推),也就是说需要花5块钱。 如果我们对当今足球的格局多一些了解,我们可以猜的更聪明一点:比如我们把巴西、德国、意大利、英格兰、法国、西班牙、葡萄牙少数几个实力强的国家放到一组,其余大多数国家放大另...