1
业务背景随着闲鱼业务的发展,用户规模达到数亿级,用户维度的数据指标,达到上百个之多。如何从亿级别的数据中,快速筛选出符合期望的用户人群,进行精细化人群运营,是技术需要解决的问题。业界的很多方案往往需要分钟级甚至小时级才能生成查询结果。本文提供了一种解决大数据场景下的高效数据筛选、统计和分析方法,从亿级别数据中,任意组合查询条件,筛选需要的数据,做到毫秒级返回。
2
技术选型分析从技术角度分析,我们这个业务场景有如下特点:
需要支持任意维度的组合(and/or)嵌套查询,且要求低延迟;
数据规模大,至少亿级别,且需要支持不断扩展;
单条数据指标维度多,至少上百,且需要支持不断增加; 综合分析,这是一个典型的OLAP场景。
OLTP与OLAP
下面简单对比下OLTP和OLAP:
数据量瓶颈:mysql比较适合的数据量级是百万级,再多的话,查询和写入性能会明显下降。因此,一般会采用分库分表的方式,把数据规模控制在百万级。
查询效率瓶颈:mysql对于常用的条件查询,需要单独建立索引或组合索引。非索引字段的查询需要扫描全表,性能下降明显。
综上分析,我们的应用场景,并不适合采用行存储数据库,因此我们重点考虑列存数据库。
行式存储与列式存储
下面简单对比一下行式存储与列式存储的特点: