数据存储架构从MySQL到ByteHouse,抖音精准推荐查询效率提升百倍

抖音依靠自身推荐系统为用户推送可能感兴趣的视频内容,其中离不开对兴趣用户的精准圈选。对兴趣用户的圈选主要通过理解核心用户的偏好特征,判断两者偏好的相似性,从而构建同类用户的兴趣圈层,实现精准推荐。

以往的兴趣圈层往往依赖单一的维度或标签,比如内容类型、时长、地理特征等,难以揭示用户兴趣的底层逻辑。例如,“重庆美女小姐姐吃播视频”“二次元古风舞蹈视频”,从表面上看,吃播与舞蹈、重庆与古风…..标签类型完全不相同。经过深度分析,运营人员发现喜欢两个视频竟然是同类人群。通过挖掘用户底层兴趣逻辑,将共同兴趣的人划分在同一个兴趣圈层中,并向他们推荐更多相关内容,是抖音兴趣圈层平台主要的能力之一。

要搭建这样一套兴趣圈层平台,不仅需要精细的算法策略,对底层数据存储架构也是一大挑战。之前,技术团队主要采用MySQL作为存储架构。作为一种行式存储的数据库,MySQL对于大量数据的处理效率不尽如人意,需要高配置硬件,甚至要采用分片、读写分离等策略来提升性能,导致硬件成本显著提高。其中,MySQL的瓶颈还体现在:

• 每日新增数据量庞大:抖音用户圈层基础信息表日增万级数据,圈层作者信息表日增百万数据,圈层用户信息表日增千万条左右数据,已经达到 MySQL 秒级千万级查询的性能瓶颈。

• 难以承接业务复杂的圈选条件:当前圈层架构较为简单且为区分查询场景,当业务需要较复杂的泛化圈选条件时,需要使用者在平台等待时间较长。

• 圈层标题维度多:当前圈层有越来越多的标签描述,由于不同业务方通过不同视角理解圈层,如垂类标签/圈层关键词描述/圈层质量分类/圈层画风等,目前圈层信息实体特征就达到几十种。

为了解决以上问题,技术团队逐步将底层存储引擎基于ByteHouse进行重构。ByteHouse是火山引擎推出的一款OLAP引擎,具备查询效率高的特点,在硬件需求上相对较低,且具有良好的水平扩展性,如果数据量进一步增长,还能通过增加服务器数量来提升处理能力。

MySQL与ByteHouse特性比较

经过技术团队分析,兴趣圈层信息由模型生产,按时间分区批量导入;兴趣圈层特征多,业务方按照诉求对和自身业务相关的特征进行筛选,且圈层以统计分析为主,综合看来面向OLAP业务的ByteHouse是一款最合适的存储架构。

在一些典型兴趣圈层的查询场景中,比如“查询用户名为098765432123450(示例数据),关系为非高价值,作者名称带有“xx”的圈层信息”,MySQL的查询耗时为2524ms,而ByteHouse仅需102ms。

基于 ByteHouse 替换 MySQL 重构抖音兴趣圈层平台后,不同场景的查询效率平均提升了 100 倍左右,大大提升了使用者体验。由于 ByteHouse 出色的查询性能和良好的数据压缩比,中等资源的服务器就能很好的满足需求,这也降低了综合硬件成本。

随着大数据和实时计算技术的发展,使用者对推荐的实时性要求越来越高。ByteHouse具备高效的数据处理能力,进一步为推荐场景提供更强大的查询分析支持。