海量数据处理是指基于海量数据的存储和处理。
正因为数据量太大,所以导致要么无法在较短时间内迅速解决,要么无法一次性装入内存。
- 对于时间问题,可以采用巧妙的算法搭配合适的数据结构(如布隆过滤器、哈希、位图、堆、 数据库、倒排索引、Trie 树)来解决;
- 对于空间问题,可以采取分而治之(哈希映射)的方法,也就是说,把规模大的数据转化为规模小的,从而各个击破;
此外,针对常说的单机及集群问题:
- 单机就是指处理装载数据的机器有限(只要考虑 CPU、 内存和硬盘之间的数据交互);
- 集群的意思是指机器有多台,适合分布式处理或并行计算,更多考虑节点与节点之间的数据交互;
处理海量数据问题,有 10 种典型方法:
- 哈希分治
- simhash 算法
- 外排序
- MapReduce
- 多层划分
- 位图
- 布隆过滤器
- Trie 树
- 数据库
- 倒排索引