Chase Richards 领导了 Marketly 的工程工作,从 2011 年的初创公司到 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 不会停滞不前,并且在每个版本中都改进了数据压缩和性能。“ClickHouse 变得更好了。例如,低基数在性能和压缩率方面取得了巨大的进步,” Chase 解释道。
通过向量搜索增强反盗版工作
最近,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 的性能和资源效率优势也扩展到了这个用例:“该系统设法在磁盘上不到 325 GB 的空间中存储了超过 100 亿行,跨越四年,” Chase 分享道。
未来方向
ClickHouse 是 Corsearch 数据基础设施的关键要素,它解锁了业务核心的关键功能,整合了跨多个用例的分析数据管理,并简化了操作:“ClickHouse 在捕获网络流量数据方面发挥着至关重要的作用,我们通过将复杂的数据管道整合到单个 ClickHouse 集群中,从而简化了这些管道,从而全面提高了效率和性能。”
展望未来,Chase 分享了考虑使用 ClickHouse Cloud 以进一步简化其运营的计划:“我很高兴在我们的生产工作负载中尝试 ClickHouse Cloud。看到正在那里开发的用于运行 ClickHouse 的云原生架构真的很酷,这提供了额外的差异化优势。” 在聚会演示之后,Corsearch 已经开始使用 ClickHouse Cloud 来存储我们每天从数百万个抓取的图像生成的嵌入,用于相似性搜索——这使得团队能够利用该服务提供的低运营开销和无限存储,此外还在相同数据集上实现了更快的线性距离扫描。