问题
- 存储、运算(排序等)
背景知识
stl 容器
- 序列式
- 关联式
- 类比 关联式数据库
- 非关联数据库,document里也是kv
- 底层
- 红黑树
- set/map/multiset/multimap
- multi即允许重复
- insert_equal()而非insert_unique()
- set/map/multiset/multimap
- hashtable
- hash_set/hash_map/hash_multiset/hash_multimap
- HashSet实现了Set接口,HashMap实现了Map接口,HashSet扩展了HashMap,底层存储相同
- hashtable和hashmap : 前者继承Dictionary类、synchronized、不允许键或值为 null、Enumerator是fail-safe
- 红黑树
- hashcode
- equals为true,hashcode一定相等,反之不成立
- (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16)
解决方案
分而治之/hash映射 + hashmap统计 + 堆/快速/归并排序;
负载均衡算法
轮循算法(Round Robin)、哈希算法(HASH)、最少连接算法(Least Connection)、响应速度算法(Response Time)、加权法(Weighted)
hash
取余
一致性
- 分布式系统负载均衡的首选算法
- Hash 算法的一个衡量指标是单调性( Monotonicity ): 新增的key被hash到新的机子上
- 圆圈
topk
- 堆排序
- N个无重值topk的复杂度,N*O(logK)
- TOP10小,用最大堆,TOP10大,用最小堆
- trie tree
- 堆排序
同一个key在两台机子
- 全hash,同一个key到一台。然后分布式架构处理,如MapReduce,最后合并
- 暴力,每台都算出来,再加和
- 双层桶划分
- Bloom filter/Bitmap
- Trie树/数据库/倒排索引
- 外排序
- 分布式处理之Hadoop/Mapreduce
本文作者:
yuqing wang
本文链接: https://satyrswang.github.io/2021/10/06/海量数据/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!
本文链接: https://satyrswang.github.io/2021/10/06/海量数据/
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!