从ClickHouse通往MySQL的几条道路

这篇具有很好参考价值的文章主要介绍了从ClickHouse通往MySQL的几条道路。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、应用背景简介

ClickHouse 是 Yandex(俄罗斯最大的搜索引擎)开源的一个用于实时数据分析的基于列存储的数据库,其处理数据的速度比传统方法快 100-1000 倍。ClickHouse 的性能超过了目前市场上可比的面向列的 DBMS,每秒钟每台服务器每秒处理数亿至十亿多行和数十千兆字节的数据。它是一个用于联机分析(OLAP)的列式数据库管理系统;(OLAP是仓库型数据库,主要是读取数据,做复杂数据分析,侧重技术决策支持,提供直观简单的结果)

那 ClickHouse OLAP 适用场景有:1)读多于写;2)大宽表,读大量行但是少量列,结果集较小;3)数据批量写入,且数据不更新或少更新;4)无需事务,数据一致性要求低;5)灵活多变,不适合预先建模。

MySQL是一个关系型数据库管理系统,广泛用于各种应用程序和网站开发。MySQL容易上手和学习,已经被广泛应用于各种生产环境中有良好的稳定性和可靠性,MySQL支持事务处理,能够保证数据的完整性和一致性,适合需要复杂数据处理和事务控制的应用。

在我们应用中的使用场景来看,简单来说通常会看中了clickhouse在处理大批量数据的写入和读取分析方面的性能,MySQL会主要负责一些基于模型进行指标二次加工的高频查询及复杂join的查询。

二、实际应用中存在的问题

在数据相关应用处理过程中,一般会按下图的分层进行数据处理;

  • 现有的一个实际应用场景中,会把MySQL中的数据进行全量的更替,即在新一批基于ck模型加工的数据插入MySQL库表时删除原表全量数据,来实现对于最新全量数据的刷新;
  • 该处理机制因为完全不用考虑历史数据的包袱,每批次都是全量加工和替换,是一种运行简单、有效、数据加工的准确率高的机制,在小业务量场景下可以节省开发量和时间,弊端是在大业务场景下性能端会出现与之关联的多种问题;这些告警可能包括因为读写频率高引起的CPU使用率过高、因为binlog产生量过大导致的磁盘使用量告警等;负责加工的后端应用也可能也会因数据加工量过大而引发内存使用率过高的风险。

基于现有架构设计和问题背景,需要对相关的问题进行一定的调研,来探索优化的可能性;

三、几种处理方法及适配的场景分析

1. 使用数据库触发器(Trigger):在 ClickHouse 表中创建触发器,当订单数据发生变化时,触发器可以将更新操作发送到 MySQL 表中进行更新。触发器可以监视 ClickHouse 表中的 INSERT、UPDATE 和 DELETE 操作,并将相应的操作转发到 MySQL 表中。在类似于同步数据表的场景下,触发器场景比较合适,但是在面对需要高度定制化的数据加工场景下,就显得不太合适了,也不方便调试。

2.此外,也会有通过外部触发器结合消息队列的方案可以支持处理这种情况。这里边会涉及到需要监听ClickHouse的binlog记录或者CDC(Change Data Capture)流,在数据发生变化时进行解析和转发。

3.也可以在应用层面,来监听ClickHouse数据库的数据变化,并在变化发生时发送相关的消息到消息队列。例如使用Debezium库来监听ClickHouse数据库的数据变化。你可以根据自己的需求来配置连接信息、监听的表等,并在监听器中编写业务逻辑处理数据变化事件。

这几种处理方式相对来说对于处理的变化量来说是比较大的,即所有对于数据库的操作过程都会被监听端响应处理,所以如果数据变化量非常大的话,那么监听消费端的压力也会随之上升;

4. 轮询查询:Java 应用可以定期轮询查询 ClickHouse 表的变化,通过比对新的订单数据和已有的订单数据,找出有变动的数据行,并进行相应的加工处理和更新操作。这其中的关键就是采用何种方法进行比对了。

  • 比对方法可以通过逐个字段的比对来筛选该行数据是否有变化,这种方法简单有效,但是瓶颈也比较明显:不适合处理大量数据,因为性能不算好;
  • 也可以通过把数据行进行哈希算法和摘要处理,来实现更快速的字段变化的比对,这种方式相对来说会更适合处理数据量大一些的场景;

当然,处理过程并不限于查询过程,有些场景是在查询阶段并不需要筛选数据,而是基于原始模型加工完的数据结果上进行字段值比对或哈希处理,用来标记处理完的数据结果是否有变化,有变化的更新无则不处理,从而减小对指标结果数据的更新范围;

以上内容是对于所与到问题的处理方法的一个浅显分析,如果您还有什么指标加工方面好的经验,欢迎指正和交流。

作者:京东物流 陈鲲

来源:京东云开发者社区 自猿其说Tech 转载请注明来源文章来源地址https://www.toymoban.com/news/detail-749595.html

到了这里,关于从ClickHouse通往MySQL的几条道路的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 详解OpenCV的视频背景/前景分割(背景建模/前景提取)类cv::BackgroundSubtractorMOG2,并利用它实现对道路监控视频前景/背景的提取

    cv::BackgroundSubtractorMOG2和cv::bgsegm::BackgroundSubtractorMOG一样,都是基于高斯混合模型的背景与前景分割算法。 cv::BackgroundSubtractorMOG2是对cv::bgsegm::BackgroundSubtractorMOG的改进,经过改进,它实现了自适应高斯混合模型参数的更新,增强了复杂场景背景检测的性能。 具体的算法原理可

    2023年04月18日
    浏览(32)
  • ClickHouse技术研究及语法简介

    本文对Clickhouse架构原理、语法、性能特点做一定研究,同时将其与mysql、elasticsearch、tidb做横向对比,并重点分析与mysql的语法差异,为有mysql迁移clickhouse场景需求的技术预研及参考。 Clickhouse是一个用于联机分析(OLAP)的列式数据库管理系统(DBMS)。 ClickHouse 采用典型的分组

    2024年02月09日
    浏览(37)
  • 【大数据进阶第三阶段之ClickHouse学习笔记】ClickHouse的简介和使用

    ClickHouse是一种 列式数据库管理系统(DBMS) ,专门用于 高性能数据分析 和 数据仓库 应用。它是一个开源的数据库系统,最初由俄罗斯搜索引擎公司Yandex开发,用于满足 大规模数据分析和报告的需求 。 开源地址:GitHub - ClickHouse/ClickHouse: ClickHouse® is a free analytics DBMS for bi

    2024年02月03日
    浏览(41)
  • 【用户画像】ClickHouse简介、特点、安装和部署

    之前数仓和画像的处理都是批处理,一般在夜间进行,花费时间很长,按照脚本和调度去完成,后来的处理称为即时处理,即时处理要求计算的时间非常之短,存放在hive中,肯定是不行的,这种需求既要求从一定的数据量中提取(如果是小数量可以从MySQL提取),同时需要速

    2024年02月12日
    浏览(34)
  • 微信小程序设置背景图的几种方式

    原本在html中可以通过background-image来设置背景图片 但是在wxss中出现 解决方法 1.使用网络图片: 2.base64格式的图片,访问图片转 BASE64 编码 | 菜鸟工具上传图片生成base64 3.使用标签

    2024年02月11日
    浏览(65)
  • 微信小程序中(设置成背景图的几种方式)

    1、使用网络图片 2、使用base64格式图片,访问图片base64编码  将背景图片使用编码base64进行转换, 网址如下: base64图片在线转换工具 - 站长工具 3、使用标签    注意有小朋友可能要用html那一套,使用background-image不适用于微信小程序 background-image: url(\\\"../images/local_image.png\\\")

    2024年04月25日
    浏览(33)
  • 计算机视觉的应用13-基于SSD模型的城市道路积水识别的应用项目

    大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用13-基于SSD模型的城市道路积水识别的应用项目,辅助城市交通管理。今年第11号台风“海葵”后部云团的影响,福州地区的降雨量突破了历史极值,多出地方存在严重的积水。城市道路积水是造成交通拥堵、车辆事故

    2024年02月09日
    浏览(42)
  • 通向架构师的道路之apache_tomcat_https应用

    通过上一章我们知道、了解并掌握了Web Server结合App Server是怎么样的一种架构,并且亲手通过Apache的Http Server与Tomcat6进行了整合的实验。 这样的架构的好处在于: ü   减轻App Server端的压力,用Web Server来分压,即Web Server只负责处理静态HTML内容,而App Server专职负责处理Java请

    2024年02月14日
    浏览(36)
  • Qt中正确的设置窗体的背景图片的几种方式

    原文链接:https://blog.csdn.net/yanche521/article/details/51017601 Qt中正确的设置窗体的背景图片的方法大致有两种,下面将逐个讲解: 使用stylesheet设置窗体的背景图片的时候,可以直接按照下图的操作去进行即可,如下图所示: 但是,需要注意的是: 1.在QWidget中这种方法是不行的,

    2024年02月05日
    浏览(61)
  • 【clickhouse】ClickHouse与MySQL之间实时同步数据(MySQL引擎),将MySQL数据实时同步到clickhouse

    参考1:MySQL(通过该配置实现了实时同步) 参考2:experimental MaterializedMySQL 参考3:[experimental] MaterializedMySQL(包含设置 allow_experimental_database_materialized_mysql) MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERT和SELECT查询,以方便您在ClickHouse与MySQL之间进行

    2024年01月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包