数据结构 |
应用场景 |
示例 |
哈希表 |
要求所有键值对放入内存,查找可以在常数时间内完成。 |
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 智能推荐系统 |
关于海量数据常用的数据结构
时间: 2024-10-22 11:11:29