三种数据去重方式
1.数据存入mongodb时,可以对关键字进行复合索引。
2.对数据的关键字进行哈希映射,生成的指纹判断是否存在redis的指纹集合中,如果存在,说明数据重复。
3.布隆过滤器,可以实现大量数据去重。
存入数据库
- 根据数据量及用途
- 数据量在2000w以下mongdb、mysql都可以,超过2000w,使用mongdb。
- 若数据用于网页展示,存入mysql,用于数据分析,存入mongdb。
布隆过滤器
- 实现原理:hashmap
- 可以将值映射到HashMap的Key,在O(1)时间复杂度内返回结果,缺点:存储容量占比高,考虑到负载因子的存在,通常空间是不能被用满的,而一旦你的值很多例如上亿的时候,那 HashMap 占据的内存大小就变得很可观了。
- hashmap的默认初始长度16,每次扩展是2的幂
- index=HashCode(key)&(Length-1)
- 布隆:将一个值映射到布隆过滤器,使用不同的哈希函数生成多个哈希值,并对每个哈希值指定对应的位数组位置。
- 设计:
- m= - n*lnp / (ln2)**2
- p 失误率 n 样本数量 m 数组长度
- k=ln2 * m/n
- k 哈希函数个数
- m= - n*lnp / (ln2)**2