如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做

时间:2023-02-03 15:09:12

摘要

DataLeap 是火山引擎数智平台 VeDI 旗下的大数据研发治理套件产品,帮助用户快速完成数据集成、开发、运维、治理、资产、安全等全套数据中台建设,降低工作成本和数据维护成本、挖掘数据价值、为企业决策提供数据支撑。

火山引擎 DataLeap 的 Data Catalog 系统通过汇总和组织各种元数据,解决了数据生产者梳理数据、数据消费者找数和理解数的业务场景,其中搜索是 Data Catalog 的主要功能之一。本文详细介绍火山引擎 DataLeap 的 Data Catalog 系统搜索功能的设计与实现。

背景

Data Catalog 能够帮助大公司更好地梳理和管理自己的资产,是 Data-drvien 公司的重要平台。一个通用的 Data Catalog 平台通常包含元数据管理,搜索,血缘,标签,术语等功能。其中,搜索是 Data Catalog 的入口功能,承担着让用户“找到数”的主要能力。在火山引擎 DataLeap 的 Data Catalog 系统中,每天有 70%以上的用户会使用搜索功能。

功能要求

业界主要的 Augmented Data Catalog 需要支持 Google 一样的搜索体验来搜索数据资产,以满足不同角色的用户的找数需求。我们的系统也一样,搜索需要支持的主要功能包括:

  • 支持多种不同类型资产的搜索。目前系统中已经包含 15+种数据源,可以分为几大类:数仓表比如 Hive,看板,数据集,实时表,Topic,对象存储,分布式文件系统如 LasFS 等。带来的主要挑战是不同类型的资产,搜索的字段和权重有明显差异。

  • 支持个性化。目前系统的用户遍布整个公司,角色涵盖数据工程师,数据分析师,产品经理,项目经理,销售和数据科学家等等,需要完成的数据工作任务差异也比较大,比如数据开发,数据治理,BI,数据分析和机器学习等等,因此个性化对 Data Catalog 的搜索尤为重要。

  • 支持各种业务元数据的高级筛选。数据资产除了名称/别名/描述等字段,通常还会有一些业务元数据,如项目/业务域/负责人/负责人部门/标签/业务术语/生命周期状态等。通过支持指定业务元数据进行筛选,帮助用户减小搜索范围,更快搜到对应资产。

  • 支持秒级的实时性。这里的实时性是指元数据的变更需要在秒级别反映到 Data Catalog 的搜索里,例如新建表需要在操作完成后 1~2 秒内即能搜到相应的表,删除表需要不再显示在搜索结果中。原因是用户新建或更新资产后通常会到我们的系统上查看相应的变更是否生效。用户手动在浏览器操作搜索的时间通常是秒级,超过这个时间会给用户带来困惑,降低整个 Data Catalog 的使用体验。

  • 支持 Google 类似的搜索推荐(Type as you search)功能。搜索补全功能是搜索的一个导航功能,可以在用户键入内容时提示他们可以输入的相关内容,从而提高搜索精度。这个功能对响应速度有一定的要求,同时由于数据资产的特殊性,前缀相同的资产数量较多,因此也需要根据资产的热度进行一定的排序。

  • 支持多租户。我们的系统不仅供公司内部使用,也提供公有云服务,因此支持多租户也是搜索的一个 P0 需求。

  • 支持多语言。数据资产的名称/描述/标签/术语等需要支持多种语言,搜索的输入也可能是不同的语言,最常用的比如英文和中文。不同语言的分词,专有名词字典,文本特征等都会带来一些挑战。

个性化的综合搜索

为了满足上述需求,火山引擎 DataLeap 采用了个性化综合搜索的方案。区别于联合搜索(federated search),用户需要指定搜索的具体资产类型或在搜索结果页对不同的资产分栏显示,综合搜索(unified search)允许用户在一个搜索框中进行搜索输入而无需指定搜索的资产类型,同时,搜索服务会在同一个搜索结果页返回不同类型的相关资产,并根据匹配程度和用户的个性化数据进行混合排序。优势是能给不同的用户针对不同资产的搜索需求提供统一的搜索体验,同时提供了用户跨类型圈定资产的能力。另外,综合搜索使得我们可以在页面上进行标准化透出,从而我们可以从技术上进行搜索标准化,达到新数据源接入即可搜索。

架构

整体架构

如何又快又好实现 Catalog 系统搜索能力?火山引擎 DataLeap 这样做