探讨大数据量处理<续篇>
接上面说用到NOSQL,但这个概念太笼统,hadoop做法: (在我看来1-3点算是NOSQL产品处理的了)
1,首先一般是用MAP/VALUE进行分布式存储
保证可靠性:
分布式缓存,一般比如N个分布式节点,存储时同时放进M个中,你查询数据只要从N-M个中读到没此数据即为无(Quorum NRW),当然还可以进行日志记录法:
记录每次的日志操作,当机器宕机可以从日志中恢复内存中的数据,redis就有这种模式做法
2,然后对相同的操作进行合并 ,即MAP/reduce 操作(MapReduce)
如何reduce操作:可以通过bloom-filter 算法①初刷, 进行找出相同的对象操作,然后对它进行reduce
3,然后进行文件存储(文件系统)
4,进行运算(拆逻辑层)
5,入库(持久化存储层)
上面每一点都可以去研究,做起来都不简单;
如淘宝对应的
1,2 Tair; 3 TFS;4HSF;5 TDDL;
-----------------------------------------------------------------------------------------------------------------------------------------------
① bloom-filter 算法简单来说就是把一系列对象进行HASH值存储,然后定义一个足够大的BIT数组把对应位数的值设置为1,然后比较对象是否存在时可以从BIT数组中查找,当找到对应值有一个为0证明改对象肯定不存在;此算法好处是高效,空间最大利用率,但不能保证找出全是1的为存在对象,只能找出有一个为0的对象肯定不存在;
WEB大数据量处理的目标思路:
我认为就是用低成本的硬件做分布式,实现大数据量处理的高性能(即保证数据的可用性,只需要最终一致性),可扩展性的处理;
补充上面的
其实上面说的的数据库还可以很多方面的优化, 比如80/20的原则,比如树节点存储,比如其它数据库优化
说白了, 大数据处理就是一个字 ‘拆’
另:这篇文章我也是尝试研究,有偏差请指出,共同学习,文章慢慢补充中