关于海量数据常用的数据结构
| 数据结构 | 应用场景 | 示例 | 
| 哈希表 | 要求所有键值对放入内存,查找可以在常数时间内完成。 | l 提取某日志访问百度次数最多的IP l 统计不同电话号码的个数 | 
| 堆 | 插入和调整需要O(logn)时间,n为堆元素的个数,而获取堆顶元素只需要常数时间。 | l 求出海量数据前K大的数 l 求海量数据流的中位数 | 
| BitMap | 通常记录整数出现的情况,用来快速查找、数字判重、删除元素等。 | l 统计不同电话号码的个数 l 2.5亿个整数中查出不同重复的整数个数 | 
| 双层桶 | 两次寻址方式以节省内存,通常用在求第K大、中位数和数字判重。 | l 2.5亿整数找出中位数 l 海量数据的第K大的值 | 
| 反向索引 | 通过单词-文档,属性-实体建索引,方便后序查找 | l 基于关键词的搜索 l 搜索框输入的自动补全 | 
| 外排 | 借用硬盘空间实现海量数据排序 | l 1GB大小的文件,每行是一个词,内存1MB,返回频率最高的100的词 | 
| 前缀树 | 为集合内所有单词建立前缀树 | l 求出热门的查询字符串 l 求出重复率较高的词 | 
| MapReduce | 分布式处理,将数据交给不同机器去处理,划分数据,然后规约结果 | l 海量日志分析 l 数据挖掘 l 智能推荐系统 | 

 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号