前记:本周进入系统设计与实践的最后一周,讲解的是海量数据的分析与处理。
海量数据的问题
1,数据量过大,数据中什么情况都可能存在。
2,软硬件要求高,系统资源占用率高。
3,要求很高的处理方法和技巧。
海量数据的“大”
所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。
此种情况下,针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如 Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树 ,针对空间,无非就一个办法:大而化小, 分而治之(hash映射) ,规模太大嘛就把规模大化为规模小的,各个击破。一般方法如下:
1,分而治之/hash映射 + hash统计 + 堆/快速/归并排序;
2,双层桶划分
3,Bloom filter/Bitmap;
4,Trie树/数据库/倒排索引;
5,外排序;
6,分布式处理之Hadoop/Mapreduce。
网友评论