[未完待续] 探探的寻找算法与数据库优化
背景
探探的业务介绍
用户属性
数据量
活动行为
寻找行为
推荐规则
空间、年龄、性别、活跃时间、过滤喜欢过或不喜欢的
排序规则
颜值
响应时间要求
并发量
机器学习、颜值
痛点:过滤喜欢过或不喜欢的
网红,被N多人喜欢过。
被N多人不喜欢过。
喜欢过、不喜欢过N多人。(滑过N多人)
附近若干公里有很多人,但是由于以上限制,很少符合条件的人。
随着时间推移,用户滑动,喜欢过、不喜欢过的列表越来越大,不符合条件的人越来越多。
优化思路:
明细、(数组、BITMAP、ROARING BITMAP、估算类型)+明细、正反向。
明细
JOIN慢
UDF GET慢
数组
死锁
明细 + 延迟合并
BITMAP
roaring bitmap
估值算法
准确性无法满足需求
参考
http://docs.pipelinedb.com/builtin.html#t-digest-functions
https://github.com/zeromax007/gpdb-roaringbitmap
《PostgreSQL (varbit, roaring bitmap) VS pilosa(bitmap库)》
《阿里云RDS for PostgreSQL varbitx插件与实时画像应用场景介绍》
《基于 阿里云 RDS PostgreSQL 打造实时用户画像推荐系统》