解决问题

用户画像是从业务角度了解用户特点和需求,帮助企业精准认识目标用户群体并进行业务优化的基石。企业在构建用户画像过程中积累了上亿用户,并生成了成千上万个标签维度。然而海量标签数据的实时快速更新、灵活的统计分析、高效的群体圈选成为了用户画像系统的一大技术痛点。
标签存储
标签数据非常稀疏,大量空缺值。
标签维度成千上万,且随着业务变化持续增长。
标签更新
批量更新数据量大,耗时长,效率低。
实时更新性能差,难以满足高并发更新场景不同标签更新频率不同。
查询分析
根据业务和技术特点构建的标签难以扩展,无法满足业务的多变需求。
难以通过灵活的多维分析,进行更加深入的数据挖掘分析。

技术优势

    有效支撑亿级用户万级标签数据的实时更新与查询分析,提供高效的随机读写性能。

    基于列式存储和动态Schema,可方便进行标签的动态添加。

列级更新

  • 大大提升更新性能,有效支撑海量实时数据的高效高并发随机更新。
  • 单指令清理列级数据,无需修改所有记录,高效便捷。

高效存储

  • 列式存储,大大降低查询时的磁盘IO,加快条件过滤和聚合计算。
  • 万维大宽表形式存储稀疏的标签数据,根据数据特点智能压缩,
    可随业务动态便捷添加标签维度。

灵活查询

  • 大宽表提供灵活高效的标签组合查询分析,满足业务多变的人群圈选需求。
  • 毫秒级的用户标签数据查询满足高并发使用场景。
  • 高效的查询性能赋能业务人员对标签数据进行多维分析,更好的了解用户。

高可用

  • 所有底层服务满足高可用要求。
  • 数据多副本保证数据的高可用,同时保障高并发。

高性能

  • 列式存储,只处理查询的列,降低磁盘IO和CPU使用。
  • 倒排索引、向量化计算、并行处理模型,充分利用系统资源。

可扩展

  • 通过水平扩容可实现性能的线性提升。
  • 系统提供完善的SPI接口,支持插件式功能扩展。

应用场景

产品设计
根据用户画像设计产品,可以避免产品设计和生产的盲目性,降低设计失误和投入风险。
产品运营
通过对用户产品使用行为分析,可以分析出各项产品要素的适用度,提升用户数量和粘性。
智能推荐
基于用户画像和产品画像的匹配度完成智能推荐,给用户精准推荐产品,给产品精准推荐用户。
精准营销
基于用户画像设计营销方案,高效触达,降低销售成本,提高销售效率。
竞品分析
通过客群画像对自有产品和竞品的客群特征分析,并融入产品画像之间的比较,做到知己知彼。
风险控制
通过用户画像对人的全面透视、精准分析、可靠预测,更精确地实现风险控制。

应用案例

某手机厂商客户原有用户画像系统中用户数高达6600w+,标签数1400+,原来使用ElasticSearch和Hbase存储标签数据。其中ElasticSearch用于标签数据的分析,HBase用于标签用户标签数据的查询。采用T+1的方式每天全量更新ElasticSearch内的标签数据,每次更新耗时长达6~8小时。随着业务的变化,业务人员希望能基于实时行为数据计算用户的实时标签。每十分钟的活跃用户高达千万,ElasticSearch无法满足实时标签更新的需求。

数果智能的Uindex通过融合多项技术的优势,基于列式存储并实现列级别的数据更新,保证了标签数据的高效实时更新,完美解决客户用户标签更新慢和无法实时更新的痛点。另外Uindex提供了多样化的查询和聚合分析,并保证数据的高效检索。同时Uindex完全兼容开源大数据Hadoop、Hive、Spark等,可通过Hive直接读写Uindex内的数据。

全量数据导入场景: 客户原来每天全量更新ES中的数据,耗时6~8小时,而Uindex全量更新只需要70分钟。
服务器配置:5台,CPU:32核,内存128GB,硬盘:1TB*12块。总数据量:6600万全量用户,标签总数1425
ES Uindex
数据量 6000万+ 6000万+
维度数 1000+ 1000+
耗时 6~8小时 70分钟
TPS 2778 14285
实时更新标签场景: 客户原来使用ES存储标签,只能T+1的方式全量更新,无法做到标签的实时更新。业务需要使用实时流计算引擎基于实时用户行为数据计算用户标签。客户当时每十分钟的活跃用户高达千万,所以进行了千万标签数据10个、20个标签维度的更新性能测试,测试结果如下表。
服务器配置:5台,CPU:32核,内存128GB,硬盘:1TB*12块。总数据量:6600万全量用户,标签总数1425
更新10维度 更新20维度
数据量 1000万 1000万
更新耗时 5分钟 5分钟
资源消耗 12%cpu,30G内存 15%cpu,30G内存
TPS 3.3万 3.3万
标签数据导出场景: 根据标签圈选出用户群后,需要将用户群导出到营销系统使用,通常需要导出用户唯一标识和一些附加信息。原来使用ES导出1000万记录耗时5~10分钟。客户对Uindex从标签数和记录数两个维度进行了性能测试,比ES提升了几倍,具体测试结果如下表。
服务器配置:5台,CPU:32核,内存128GB,硬盘:1TB*12块。总数据量:6600万全量用户,标签总数1425
个数 维度 100万耗时(s) 1000万耗时(s)
1 umid 4.7 45
2 umid、imei 9.8 69
3 umid、imei、sn 13.6 115
4 umid、imei、sn、uid 14.1 122
5 umid、imei、sn、uid、recharge_7d、wallpaper 15.6 126
高并发查询用户详情: 在CRM系统中需要根据用户ID查询详情信息,客户对集群中的一台服务器进行了并发测试,每个并发连续查询2万次,并发查询结果如下表。
服务器配置:1台,CPU:32核,内存128GB,硬盘:1TB*12块。总数据量:6600万全量用户,标签总数1425
标签数 并发数 请求次数 耗时(毫秒) QPS
2 20 2万 3012 6640
6 20 2万 3180 6289
SQL查询
服务器配置:1台,CPU:32核,内存128GB,硬盘:1TB*12块。总数据量:6600万全量用户,标签总数1425
说明 Sql语句 耗时
统计记录数 select count(*) from update_test; 84(ms)
统计记录数
(一个过滤条件)
select count(*) from update_test
where startup_themes='start_1';
280(ms)
分组统计行数并排序 select themes_set_ring, count(*) from update_test
group by themes_set_ring
order by themes_set_ring;
560(ms)
分组统计行数并排序
(一个过滤条件)
select themes_set_ring, count(*) from update_test
where push_sub_apps='sub_8'
group by themes_set_ring
order by themes_set_ring;
68(ms)

开启全新数智化时代