Chase Richards 从 2011 年起领导 Marketly 的工程工作,直至 2020 年公司被收购。他现在是品牌保护公司 Corsearch 的工程副总裁。他最近参加了我们的聚会,并分享了他的 ClickHouse 使用经验。
Corsearch 成立于 2018 年,是 Wolters Kluwer 的一个专业分支机构。这家新公司通过多次收购迅速扩张,巩固了其专业知识,成为品牌保护解决方案的领导者。Chase Richards 担任工程副总裁,在领导增强 Corsearch 品牌保护解决方案(面向全球组织)的工程工作中发挥着关键作用。其重点在于跟踪国际商标并检测冲突和侵权、反假冒措施以及内容保护(防止盗版和网络欺诈),这意味着需要筛选大量无害或无害的授权数据以查找侵权行为和不良行为者。早在 2017 年(还在 Marketly 的时候),Chase 面临一些挑战
- 事务型数据库的局限性 - 将 MySQL 等基于行的数据库应用于分析时,在构建面向外部客户的交互式数据驱动用户界面时,会阻碍可扩展性和灵活性。
- 操作复杂性 - 使用多个数据库后端(包括 MySQL、BigQuery 和 MongoDB)来支持面向客户的关键应用程序,这意味着更多时间用于维护而不是构建新功能。
采用 ClickHouse 进行反盗版
Corsearch 的主要面向客户的报告产品之一是搜索引擎保护服务,该服务支持反盗版和内容保护业务。Corsearch 每小时抓取数百万个搜索结果,以查找侵权内容。他们投入巨资开发复杂的搜索引擎监控指标,从 SEO 和 SEM 的最佳实践(如排名跟踪和流量份额)中汲取灵感。他们专注于使用户界面对试图优化搜索引擎足迹和概况的营销团队来说熟悉且有吸引力,只是将这个想法颠倒过来。Chase 说:“我们告诉营销团队,盗版者本质上是在侵犯他们的领地——搜索结果位置中的房地产。” Corsearch 为他们提供了反击的可见性和工具。
但是,报告界面需要对数百个指标进行实时分析,并且这种体验必须是交互式的,否则营销团队在使用时会感到沮丧。这意味着数十个针对所有活跃用户的近期和历史数据的并发查询必须在毫秒内执行。MySQL 数据库不适合处理包含 10 多个可过滤维度以及基于时间序列数据的每日、每周和每月分组的工作负载。“我们开发了杀手级指标并构建了前端。但我们是在预先聚合的 MySQL 表集上运行的,并且在数据周围进行了大量的表分区。这在操作上很复杂,而且仍然无法扩展。” 随着应用程序使用量的增长,这个问题变得更加明显——查询越来越慢,用户开始离开应用程序。Chase 在聚会上说:“它在一开始运行良好,然后我们的客户系统不断增长——这对我们的初创企业来说是个好消息——但这意味着数据不断增长,而使用 MySQL,当然,存在索引约束,并且您受限于基于行的技术。”
“我们获得了一些惊人的数据。仅压缩率就使服务器和部署的管理变得容易得多。”
切换到 ClickHouse 以进行实时分析
数据库变更是由 Chase 推动的,他花费了无数个小时阅读社区内容,寻找新的技术和优化性能的方法。他通过 2017 年的几篇 Percona 和 Cloudflare 博客发现了 ClickHouse:“我被鼓励尝试 ClickHouse。很明显,ClickHouse 可以成为提高效率、可靠性和可扩展性的潜在来源。” 团队开始用敏捷、可扩展的解决方案替换笨重的 MySQL 设置,从而简化操作并增强客户体验。“我围绕 ClickHouse 构建了一个可直接替换的原型,使用了与 MySQL 中几乎相同的表结构,并且在 2019 年之前已全面投入生产,用于所有客户。” 该原型获得成功,并成为该产品的全新架构。“它至今仍在生产中,并且仍然是管道的一部分。”
由此产生的好处超出了使应用程序正常工作。ClickHouse 对时间序列数据的压缩率远远超过 MySQL(见下文),这导致运行应用程序所需的服务器更少,从而简化了服务器管理。“我们获得了一些惊人的数据。仅压缩率就使服务器和部署的管理变得容易得多。” 当然,ClickHouse 不会停滞不前,并且在每个版本中都会改进数据压缩和性能。Chase 解释说:“ClickHouse 变得越来越好了。例如,低基数在性能和压缩率方面取得了巨大进步。”
利用向量搜索增强反盗版工作
最近,Corsearch 在其现有的基于启发式的欺诈检测方法中添加了基于向量的分析。Corsearch 使用来自语言模型的嵌入来创建网页内容之间的语义相似性搜索(跨网站和时间),用于查找使用与已知盗版网站类似语言的网站,并识别网站提供的内容中的重大更改(通常表明网站已关闭或被阻止)(盗版生态系统中经常发生的事件)。Chase 解释说:“通过利用专家模型和嵌入,我们检测网页中的实质性更改,并识别共享类似特征的页面之间的关联。”
Chase 和他的团队对 ClickHouse 与专用的向量数据库进行了比较分析,发现虽然它们可能为近似索引提供更好的性能,但它们仍然是专用系统,需要补充的技能集才能采用和维护。相反,Corsearch 能够在 ClickHouse 中直接执行受多个维度约束的向量距离计算,以及其他用于检测盗版的方法,并借助 SQL 语法实现。因此,无需维护额外的基础设施或学习新的语言。
采用 ClickHouse 进行可观察性
在另一个重要的用例中,Corsearch 采用 ClickHouse 来监控其搜索引擎抓取设置。搜索引擎服务负责解析来自 Google、Yahoo 和 YouTube 等主要搜索引擎的结果,并且必须无缝运行。Chase 和他的团队没有使用现成的可观察性工具,而是开发了自定义检测来跟踪搜索引擎操作,将遥测数据发送到 ClickHouse,并使用 Grafana 来可视化结果并提醒潜在问题。最近,这种可观察性方法被称为基于 SQL 的可观察性,并且已被 Uber、eBay 等科技领导者采用。
从模式的角度来看,这是一个简单的表设计,仅包含两个表。一个表促进通用指标系统,允许跟踪各种指标(例如队列深度)。另一个表封装了 Chase 所称的“工作原子单元”,它跟踪尝试抓取网页的尝试。该基础设施能够轻松创建图表和时间序列指标。每一列实际上都成为它自己的时间序列,确保数据可以随时物化成其原始形式。
“它对我的小团队来说效果非常好,” Chase 在聚会上说。虽然监控系统是定制的,但 Chase 承认如果他现在开始,他会先考虑使用OpenTelemetry,因为它正在成为一个明确的标准。ClickHouse 的性能和资源效率优势也扩展到此用例:“该系统设法存储了超过 100 亿行跨越四年的数据,磁盘占用空间不到 325 GB,” Chase 分享道。
未来方向
ClickHouse 是 Corsearch 数据基础设施的关键组成部分,它释放了业务核心关键功能,整合了跨多个用例的分析数据管理,并简化了运营:“ClickHouse 在捕获网络流量数据方面发挥着至关重要的作用,我们通过将其整合到单个 ClickHouse 集群中来简化复杂的数据管道,从而全面提高了效率和性能。”
展望未来,Chase 分享了计划使用 ClickHouse Cloud 来进一步简化其运营:“我非常期待在我们的生产工作负载中尝试 ClickHouse Cloud。看到在那里开发的用于运行 ClickHouse 的云原生架构,这真的非常酷,它提供了额外的差异化优势。”在聚会演示之后,Corsearch 已开始使用 ClickHouse Cloud 存储我们每天从数百万张抓取的图像生成的嵌入,用于相似性搜索——这使团队能够利用该服务提供的低运营开销和无限存储,并同时在相同的数据集上实现更快的线性距离扫描。