Corsearch 用 ClickHouse 替换 MySQL 进行内容和品牌保护
本文字数:3357;估计阅读时间:9 分钟
作者:ClickHouse Team
本文在公众号【ClickHouseInc】首发
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 并没有停滞不前,每次发布都在改进数据压缩和性能。“ClickHouse 变得更好了。例如,低基数在性能和压缩比方面是一个巨大的飞跃,”Chase 解释道。
通过向量搜索加强反盗版工作
最近,Corsearch 在其现有的启发式欺诈检测方法中加入了基于向量的分析。Corsearch 使用语言模型的嵌入在网站内容之间创建语义相似性搜索,无论是跨网站还是跨时间,这有助于发现使用类似语言的已知盗版网站并识别网站内容的重大变化,通常表明它已关闭或被屏蔽(盗版生态系统中的常见现象)。“通过利用专家模型和嵌入,我们检测到网页内容的实质性变化,并识别出具有相似特征的页面之间的连接,”Chase 解释道。
Chase 和他的团队对 ClickHouse 与专用向量数据库进行了比较分析,发现尽管专用向量数据库在近似索引方面可能表现更好,但它们仍然是特殊用途的系统,需要特定的技能来采用和维护。相比之下,Corsearch 能够在 ClickHouse 中直接执行多维度限定的向量距离计算,并结合其他检测盗版的方法,借助 SQL 语法实现。因此,无需维护额外的基础设施或学习新的语言。
采用 ClickHouse 进行可观测性
在另一个重要用例中,Corsearch 使用 ClickHouse 监控其搜索引擎抓取设置。搜索引擎服务负责解析 Google、Yahoo 和 YouTube 等主要搜索引擎的结果,必须无缝运行。Chase 和他的团队没有使用现成的可观测性工具,而是开发了自定义埋点来跟踪搜索引擎操作,将遥测数据发送到 ClickHouse,并使用 Grafana 可视化结果并对潜在问题进行告警。最近,这种方法被称为基于 SQL 的可观测性,已经被 Uber、eBay 等技术领导者采用。
从架构上看,这个设计很简单,仅包含两个表。一个表用于通用指标系统,跟踪各种指标如队列深度。另一个表记录“工作原子单元”,用于跟踪抓取网页的尝试。这个基础设施能够轻松创建图表和时间序列指标。每列都可以成为独立的时间序列,确保数据可以随时恢复到原始形式。
“对于我的小团队来说,这非常有效,”Chase 在聚会上说道。虽然埋点是自定义的,但 Chase 承认,如果今天开始,他会优先考虑使用 OpenTelemetry,因为它正在成为标准。ClickHouse 在这个用例中也展示了其性能和资源效率优势:“该系统在磁盘上以不到 325 GB 的空间存储了四年内的 100 亿行数据,”Chase 分享道。
未来方向
ClickHouse 是 Corsearch 数据基础设施的关键元素,提供了业务核心的关键能力,整合了多个用例的分析数据管理,并简化了操作:“ClickHouse 在捕获网络流量数据方面发挥了重要作用,我们通过将复杂的数据管道整合到单一的 ClickHouse 集群中,提高了整体效率和性能。”
展望未来,Chase 计划进一步简化操作:“我很期待在我们的生产工作负载上尝试 ClickHouse Cloud。看到 ClickHouse 的云原生架构在那里的发展真的很酷,这提供了额外的差异化。”在聚会演讲之后,Corsearch 已经开始使用 ClickHouse Cloud 存储每天从数百万抓取图像中生成的嵌入,用于相似性搜索——这使团队能够利用该服务提供的低操作开销和无限存储,以及在相同数据集上实现更快的线性距离扫描。
征稿启示
面向社区长期正文,文章内容包括但不限于关于 ClickHouse 的技术研究、项目实践和创新做法等。建议行文风格干货输出&图文并茂。质量合格的文章将会发布在本公众号,优秀者也有机会推荐到 ClickHouse 官网。请将文章稿件的 WORD 版本发邮件至:Tracy.Wang@clickhouse.com
联系我们
手机号:13910395701
邮箱:Tracy.Wang@clickhouse.com
满足您所有的在线分析列式数据库管理需求
相关文章:
Corsearch 用 ClickHouse 替换 MySQL 进行内容和品牌保护
本文字数:3357;估计阅读时间:9 分钟 作者:ClickHouse Team 本文在公众号【ClickHouseInc】首发 Chase Richards 自 2011 年在初创公司 Marketly 担任工程负责人,直到 2020 年公司被收购。他现在是品牌保护公司 Corsear…...
常见的应急救援设备有哪些_鼎跃安全
在我们的生活中,应急事件的发生常常是突如其来的,它们对人民的生命财产安全构成重大威胁,同时也对社会稳定提出严峻挑战。在这样的紧急情况下,迅速开展有效的救援工作显得尤为重要。而在整个救援过程中,应急设备的使用…...
Vue 项目部署后首页白屏问题排查与解决
引言 在部署 Vue.js 项目时,有时会遇到首页加载后出现白屏的情况,这可能是由于多种原因造成的。本文将介绍一些常见的排查方法和解决方案,帮助开发者快速定位问题并解决。 1. 常见原因分析 首页白屏的问题可能由以下几个方面的原因导致&am…...
STM32 定时器移相任意角度和占空比,频率可调
由于使用了中断修改翻转的CCR值,对于频率超250K以上不太适用. void Motor1_Init(Motor MotorChValue) { GPIO_InitTypeDef GPIO_InitStructure;TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;TIM_OCInitTypeDef TIM_OCInitStructure;NVIC_InitTypeDef NVIC_Ini…...
C++ 与其他编程语言区别_C++11/14/17新特性总结
C11 decltype类型推导 decltype不依赖于初始化,根据表达式类推导类型 auto b :根据右边a的初始值来推导出变量的类型,然后将该初始值赋给bdecltype 则是根据a表达式来推导类型,变量的初始值与表达式的值无关表达式类型注意点&…...
玩转云服务:Google Cloud谷歌云永久免费云服务器「白嫖」 指南
前几天,和大家分享了: 玩转云服务:Oracle Cloud甲骨文永久免费云服务器注册及配置指南 相信很多同学都卡在了这一步: 可用性域 AD-1 中配置 VM.Standard.E2.1.Micro 的容量不足。请在其他可用性域中创建实例,或稍后…...
用18讲必看:宇哥亲划重点内容+核心题总结
25考研结束之后,张宇老师的风评可能会两极分化 其中一波把张宇老师奉为考研数学之神,吹捧「三向解题法」天下无敌。 另外一波对张宇老师的评价负面,在网上黑张宇老师! 为什么会这么说,因为张宇老师的新版36讲争议太…...
什么是安全生产痕迹化管理?如何做到生产过程中全程痕迹化管理?
安全生产痕迹化管理,简单来说,就是通过记录一些“信息”来确保安全工作的进展。这些方法包括记会议内容、写安全日记、拍照片、签字盖章、指纹识别、面部识别还有手机定位等。记录下来的文字、图片、数据和视频,就像一个个“脚印”࿰…...
VIsual Studio:为同一解决方案下多个项目分别指定不同的编译器
一、引言 如上图,我有一个解决方案【EtchDevice】,他包含两个(甚至更多个)子项目,分别是【DeviceRT】和【DeviceWin】,见名知意,我需要一个项目编译运行在RTOS上,譬如一个名叫INTime…...
Flat Ads资讯:Meta、Google、TikTok 7月产品政策速递
Flat Ads拥有全球媒介采买(MediaBuy)业务,为方便广告主及时了解大媒体最新政策,Flat Ads将整理大媒体产品更新月报,欢迎大家关注我们及时了解最新行业动向。 一、Meta 1、Reels 应用推广现可突出显示应用评分、点评和下载量 为了不断优化 Instagram 上的广告体验和广告表现,…...
嵌入式C++、ROS 、OpenCV、SLAM 算法和路径规划算法:自主导航的移动机器人流程设计(代码示例)
在当今科技迅速发展的背景下,嵌入式自主移动机器人以其广泛的应用前景和技术挑战吸引了越来越多的研究者和开发者。本文将详细介绍一个嵌入式自主移动机器人项目,涵盖其硬件与软件系统设计、代码实现及项目总结,并提供相关参考文献。 项目概…...
数据安全堡垒:SQL Server数据库备份验证与测试恢复全攻略
数据安全堡垒:SQL Server数据库备份验证与测试恢复全攻略 在数据库管理中,备份是确保数据安全的关键环节,但仅仅拥有备份是不够的,验证备份的有效性并能够从备份中成功恢复数据同样重要。SQL Server提供了一系列的工具和方法来执…...
嵌入式人工智能(40-基于树莓派4B的水滴传感器和火焰传感器)
虽然这两个传感器水火不容,我还是把他们放到一起了。本文是有线传感器的最后一个部分了。后面如果还有文章介绍有线传感器,也是补充学习其他内容不得已而为之。如果不是,就当我没说,哈哈。 1、水滴传感器 水滴传感器又称雨滴传感…...
EF访问PostgreSql,如何判断jsonb类型的数组是否包含某个数值
下面代码判断OpenUserIds(long[]类型的jsonb)字段,是否包含 8 basequery basequery.Where(m > Microsoft.EntityFrameworkCore.NpgsqlJsonDbFunctionsExtensions.JsonContains(EF.Functions, m.OpenUserIds, new long[] { 8 }));...
Qt 实战(8)控件 | 8.1、QComboBox
文章目录 一、QComboBox1、简介2、功能特性2.1、添加和移除项目2.2、设置和获取当前选中项2.3、模型/视图架构2.4、信号与槽 3、总结 前言: QComboBox 是 Qt 框架中一个非常实用的控件,它允许用户从一个下拉列表中选择一个项目。这个控件广泛应用于需要用…...
模拟算法概览
前言 LeetCode上的模拟算法题目主要考察通过直接模拟问题的实际操作和过程来解决问题。这类题目通常不需要高级的数据结构或复杂的算法,而是通过仔细的逻辑和清晰的步骤逐步解决。 适合解决的问题 模拟算法适合用来解决那些逻辑明确、步骤清晰且可以逐步执行的问…...
uniapp手写滚动选择器
文章目录 效果展示HTML/Template部分:JavaScript部分:CSS部分:完整代码 没有符合项目要求的选择器 就手写了一个 效果展示 实现一个时间选择器的功能,可以选择小时和分钟: HTML/Template部分: <picker…...
智慧医院临床检验管理系统源码(LIS),全套LIS系统源码交付,商业源码,自主版权,支持二次开发
实验室信息系统是集申请、采样、核收、计费、检验、审核、发布、质控、查询、耗材控制等检验科工作为一体的网络管理系统。它的开发和应用将加快检验科管理的统一化、网络化、标准化的进程。一体化设计,与其他系统无缝连接,全程化条码管理。支持危机值管…...
超市是怎样高效完成客流统计与客流分析
随着科技的进步,越来越多的超市开始采用现代化的客流统计系统来优化日常运营和提升顾客体验。本文将探讨超市客流统计面临的难题、客流统计系统的构成及其应用场景,以及系统如何通过高识别率和热力图分析等功能为超市带来实际效益。 一、景区客流统计难题…...
进程地址空间,零基础最最最详解
目录 建议全文阅读!!! 建议全文阅读!!! 建议全文阅读!!! 一、什么是地址空间 1、概念 2、主要组成部分 3、特点和作用 (1)虚拟化…...
全面解锁:通过JSP和Ajax实现钉钉签到数据展示及部门筛选功能
要在JSP页面中调用钉钉的签到接口,并将签到数据展示在页面上,同时提供部门筛选功能,你可以按照以下步骤操作: 准备钉钉API: 你需要首先获取钉钉开放平台的API凭证(如access_token)。请参考钉钉开…...
LLM应用-prompt提示:让大模型总结生成PPT
参考: https://mp.weixin.qq.com/s/frKOjf4hb6yec8LzSmvQ7A 思路:通过大模型生成markdown内容,通过markdown去生成PPT 技术:Marp(https://marp.app/)这里用的这个工具进行markdown转PPT 1、让大模型生成Ma…...
安全防护软件的必要性:从微软蓝屏事件谈起
最近微软遭遇了的大规模蓝屏事件,让全球很多用户措手不及。这次事件告诉我们,保护我们的电脑和数据,安全防护软件是多么重要。 微软蓝屏事件源于网络安全公司CrowdStrike的技术更新错误,导致全球范围内大量Windows用户系统崩溃&a…...
解开基于大模型的Text2SQL的神秘面纱
你好,我是 shengjk1,多年大厂经验,努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注!你会有如下收益: 了解大厂经验拥有和大厂相匹配的技术等 希望看什么,评论或者私信告诉我! 文章目录 一…...
对象转化成base64-再转回对象
title: 对象转化成base64,再转回对象 date: 2024-08-01 17:54:02 tags: vue3 对象转为base64 /** 将本地对象转为base64 */ function toBase(str) {// 将对象转换为JSON字符串const jsonString JSON.stringify(str);// 使用encodeURIComponent将JSON字符串转换为UTF-8的百分…...
vue运行或打包报错 “‘node --max-old-space-size=10240“‘ 不是内部或外部命令
"node --max-old-space-size10240" 不是内部或外部命令,也不是可运行的程序 解决办法: 在 node_modules 文件夹搜索 "%_prog%" 替换成 %_prog% (即去掉双引号)...
反爬虫限制:有哪些方法可以保护网络爬虫不被限制?
目前,爬虫已经成为互联网数据获取最主流的方式。但为了保证爬虫顺利采集数据,需要防范网站的反爬虫机制,降低IP被限制的风险,这样才能提高爬虫工作的效率。那么,如何防止网络爬虫被限制呢?下面介绍几种有效…...
『 Linux 』基于阻塞队列的生产者消费者模型
文章目录 生产者-消费者模型概述生产者消费者模型的高效性虚假唤醒信号丢失生产者消费者模型的模拟实现参考代码 生产者-消费者模型概述 生产者消费者模型是一种多线程设计模式,常见于解决多个生产者线程和多个消费者线程之间如何安全有效地共享数据; 该模型中存在三种关系,两个…...
vite+typescript项目 报错:找不到模块“./*.vue”或其相应的类型声明——解决方案
declare module *.vue {import type { DefineComponent } from vueconst vueComponent: DefineComponent<{}, {}, any>export default vueComponent }...
连锁企业组网的优化解决方案
对于连锁企业来说,建立高效的网络组网很重要,因为它直接影响到各分支机构之间的信息共享、管理效率和业务流程的顺畅。一个理想的解决方案需要从多个角度入手,以确保网络的稳定性、安全性和可扩展性。 首先,需要选择合适的网络拓扑…...
淄博网站制作公司托管/电子商务说白了就是干什么的
contest:Dashboard - Codeforces Round 859 (Div. 4) - Codeforces A:水题 题意:给定三个数,a,b,c。如果cab,输出“”,如果ca-b,输出“-”。(题目只有加减两种情况&am…...
wordpress修改注册表/制作网站需要什么技术
Python没有switch语句,只能通过模拟来对应实现:**方法一:使用dictionary**values {value1: do_some_stuff1,value2: do_some_stuff2,...valueN: do_some_stuffN,}values.get(var, do_default_stuff)()根据需求可以自行更改参数内容ÿ…...
网站建设术语/seo关键词搜索和优化
方案帖子地址:https://bbs.csdn.net/topics/392558819 简单描述一下需求场景: 页面同时并发多个相同的请求(即发送请求的代码是复用的),请求的响应时间不定(即后发请求的可能比先发的请求响应更快&#x…...
主机屋安装wordpress/店铺推广渠道有哪些
std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数…...
宁夏做网站建设公司/注册域名费用一般多少钱
如果项目有第三方jar包而部署服务器后启动项目jar包后报错说找不到你的第三方jar包class not found 只需在对应的pom文件里加入 <resource> <directory>src/main/resources/lib</directory> <targetPath>BOOT-INF/lib/</targetPath> <incl…...
网站开发的书/关键词排名查询网站
转自:http://www.jb51.net/article/84924.htm取整(向下取整):复制代码代码如下:select floor(5.534) from dual;select trunc(5.534) from dual;上面两种用法都可以对数字5.534向下取整,结果为5.如果要向上取整 ,得到结果为6&…...