[未完待续] 探探的寻找算法与数据库优化

less than 1 minute read

背景

探探的业务介绍

用户属性

数据量

活动行为

寻找行为

推荐规则

空间、年龄、性别、活跃时间、过滤喜欢过或不喜欢的

排序规则

颜值

响应时间要求

并发量

机器学习、颜值

痛点:过滤喜欢过或不喜欢的

网红,被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

《[转] 快速计算Distinct Count》

《PostgreSQL (varbit, roaring bitmap) VS pilosa(bitmap库)》

《阿里云RDS for PostgreSQL varbitx插件与实时画像应用场景介绍》

《基于 阿里云 RDS PostgreSQL 打造实时用户画像推荐系统》

Flag Counter

digoal’s 大量PostgreSQL文章入口