ClickHouse11-ClickHouse中文件引擎与物化视图的组合拳

全文概览:

  • 什么是物化视图
    • 使用场景
  • 如何实现这个需求
    • 建立一个使用表引擎的表,作为物化视图的目标表
    • 确定需要查询的SQL
    • 创建物化视图
    • 测试

文件引擎其实是一个不常用的特殊表引擎,结合【ClickHouse09-表引擎之文件引擎】一章节的基础介绍

这边有一个需求:
ClickHouse的日志数据存储在表中,不像其他数据库引擎有文件中的日志,能够方便同步和分析,那现在就想仿照其他数据库,将ClickHouse的查询日志表中数据部分过滤同步到文件中,便于其他日志组件将数据汇聚一起分析

流程:

table: query_log —> filter comment with sql —> create MATERIALIZED view —> save into files

这边还需要引入一个概念:物化视图

在这里插入图片描述

什么是物化视图

物化视图(Materialized View)是一种特殊类型的表

  • 它能够根据定义在其上的SQL查询结果自动更新数据
  • 它并不存储查询表达式本身,而是实际计算和存储了该查询的结果集
  • 当源表有新的数据插入、修改或满足特定条件时,物化视图会实时或者按照配置的策略执行预定义的聚合或其他计算,并将结果写入到物化视图对应的表中

使用场景

  • 通过Select请求聚合并查询数据
  • 在写入时将数据准备为新格式
  • 在写入到特定聚合时准备数据

比较常见的使用:按月、按年分表同步,针对原始表按照指标定期做数据聚合产生中间统计表等

如何实现这个需求

建立一个使用表引擎的表,作为物化视图的目标表

CREATE TABLE default.query_log_file
(`event_time` DateTime,`user` LowCardinality(String),`query_id` String,`read_rows` UInt64,`read_bytes` UInt64,`result_rows` UInt64,`result_bytes` UInt64,`memory_usage` UInt64,`exception` String
)
ENGINE = File(TabSeparated);

确定需要查询的SQL

SELECT   event_time,   user,   query_id AS query,   read_rows,   read_bytes,   result_rows,   result_bytes,   memory_usage,   exception  
FROM clusterAllReplicas('cluster_name', system, query_log)  
WHERE (event_date = yesterday()) AND query_duration_ms > 30000 AND (is_initial_query = 1) AND (query NOT LIKE 'INSERT INTO%')  
ORDER BY query_duration_ms desc  
LIMIT 100

创建物化视图

CREATE MATERIALIZED VIEW query_log_file_view TO default.query_log_file AS 
SELECT event_time,   user,   query_id,   read_rows,   read_bytes,   result_rows,   result_bytes,   memory_usage,   exception  
FROM system.query_log
WHERE query_duration_ms > 3 AND (is_initial_query = 1) AND (query NOT LIKE 'INSERT INTO%') 

测试

产生测试数据:执行一些查询、alter语句,最好是慢查询,查看是否被视图捕获,查看是否写入文件
如果写入文件,那么后续的采集就基于文件来处理即可,按周写入的format来解析


以上就是使用日志的功能,将物化视图和文件表引擎结合,做了一个样例,实际使用中物化视图还可以结合更多的表引擎发挥更大的价值

如果喜欢我的文章的话,可以去GitHub上给一个免费的关注吗?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/775124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter 常用插件Plugin整理并附带实例

最近有点空闲时间,正好写一篇文章,整理一下我们在Flutter开发中常用的插件Plugin使用并附带上实例。 在日常开发中,整个demo目前应该满足大家所有的开发需求,例如:http请求、列表刷新及加载、列表分组、轮播图、视频播…

AI浪潮席卷游戏业:未来5~10年,游戏或将由AI生成

一年前,因为AI失业的第一批人,在游戏行业出现了。游戏原画、翻译等外包团队开始遭遇砍单,AI绘画工具的发展速度和水平已经几乎可以媲美科班出身、初级经验的人类画师。 一年时间过去,在游戏制作的毛细血管中,越来越多…

SpringBoot3的RabbitMQ消息服务

目录 预备工作和配置 1.发送消息 实现类 控制层 效果 2.收消息 3.异步读取 效果 4.Work queues --工作队列模式 创建队列text2 实体类 效果 5.Subscribe--发布订阅模式 效果 6.Routing--路由模式 效果 7.Topics--通配符模式 效果 异步处理、应用解耦、流量削…

The C programming language (second edition,KR) exercise(CHAPTER 1)

E x c e r c i s e 1 − 2 Excercise\quad 1-2 Excercise1−2:测试结果如图1所示,这里需要注意的是转义字符序列 \ o o o \backslash ooo \ooo和序列 \ x h h \backslash xhh \xhh分别表示3个八进制数和2个十进制数对应的值对应于 A S C I I ASCII ASCII…

Django Cookie和Session

Django Cookie和Session 【一】介绍 【1】起因 HTTP协议四大特性 基于请求响应模式:客户端发送请求,服务端返回响应基于TCP/IP之上:作用于应用层之上的协议无状态:HTTP协议本身不保存客户端信息短链接:1.0默认使用短…

Chronos: 将时间序列作为一种语言进行学习

这是一篇非常有意思的论文,它将时间序列分块并作为语言模型中的一个token来进行学习,并且得到了很好的效果。 Chronos是一个对时间序列数据的概率模型进行预训练的框架,它将这些值标记为与基于transformer的模型(如T5)一起使用。模型将序列的…

ActiveMQ Artemis 系列| High Availability 主备模式(消息复制) 版本2.19.1

一、ActiveMQ Artemis 介绍 Apache ActiveMQ Artemis 是一个高性能的开源消息代理,它完全符合 Java Message Service (JMS) 2.0 规范,并支持多种通信协议,包括 AMQP、MQTT、STOMP 和 OpenWire 等。ActiveMQ Artemis 由 Apache Software Foun…

C++ ——数组介绍和实例

文章目录 **定义数组****初始化数组****访问数组元素****一维数组与多维数组****数组与指针****数组的局限性****现代C中的替代方案** 以下是一个C程序实例,演示了如何定义、初始化、访问一维数组以及使用循环遍历数组: C ——数组 C 中的“数组”是一种…

vue2项目设置浏览器标题title及图标logo

工作中肯定会遇到要修改网页的标题title及图标logo 一、固定设置标题方案 方法一:在vue.config.js文件,添加如下代码: chainWebpack: config > {// 配置网页标题config.plugin(html).tap((args) > {args[0].title 标题return args})…

[TS面试]keyof和typeof关键字作用?

keyof和typeof关键字作用? keyof 索引类型查询操作符, 获取索引类型属性名, 构成联合类型 typeof 获取一个变量或者对象的类型 let str:string ‘hello’ // typeof str >:string keyof typeof 获取 联合类型的key enum A{A, B, C }type unionType keyof typeof A; /…

数字身份的革命:解锁 Web3 的身份验证技术

引言 随着数字化时代的到来,个人身份认证成为了日常生活和商业活动中不可或缺的一部分。传统的身份验证方式存在着安全性低、易伪造、不便利等问题,因此,人们迫切需要一种更安全、更便捷的身份验证技术。在这样的背景下,Web3的身…

macos下 jupyter服务安装和vscode链接密码设置 .ipynb文件

最近收到了一些后缀为.ipynb的文件, 这个文件就是使用jupyter编辑的,于是就需要安装一个jupyter服务, 对于最新版本的jupyter 网上很多的资料都已经过期了,这里以最新版本的jupyter为例。 jupyter lab安装 jupyter 这个工具包含…

微软正在改进其AI驱动的Copilot在Microsoft Teams中的工作方式,为会议聊天、总结等引入了新的召唤助手方式

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

CUDA安装 Windows版

目录 一、说明 二、安装工具下载 三、CUDA安装 四、cuDNN配置 五、验证安装是否成功 一、说明 windows10 版本安装 CUDA ,首先需要下载两个安装包 CUDA toolkitcuDNN 官方教程 CUDA:https://docs.nvidia.com/cuda/cuda-installation-guide-micro…

校园app开发流程-uniapp开发-支持APP小程序H5-源码交付-跑腿-二手市场-交友论坛等功能,学校自由选择!

随着科技的不断发展,智慧校园系统和跑腿外卖小程序已经成为当今社会的热门话题。作为未来的重要趋势之一,科技在教育领域中的应用越来越广泛。本文将探讨智慧校园系统和跑腿外卖小程序的开发过程,并阐述如何利用科技“育”见未来 一、智慧校…

接口自动化之 + Jenkins + Allure报告生成 + 企微消息通知推送

接口自动化之 Jenkins Allure报告生成 企微消息通知推送 在jenkins上部署好项目,构建成功后,希望可以把生成的报告,以及结果统计发送至企微。 效果图: 实现如下。 1、生成allure报告 a. 首先在Jenkins插件管理中&#x…

LVS负载均衡-DR模式配置

LVS:Linux virtual server ,即Linux虚拟服务器 LVS自身是一个负载均衡器(Director),不直接处理请求,而是将请求转发至位于它后端的真实服务器real server上。 LVS是四层(传输层 tcp/udp)负载均衡…

11.Notepad++

文章目录 一、下载和安装设置练习 以前在记事本上写的代码看上去有点累,因为所有的单词看上去都是黑色的,并且当代码出现问题后,它提示第三行,我们还需要一行一行去数。这些问题都可以由一个高级记事本: Notepad 来解…

Windows直接运行python程序

Windows直接运行python程序 一、新建bat脚本二、新建vbs脚本 一、新建bat脚本 新建bat批处理脚本,写入以下内容 echo off call conda activate pytorch python app.pyecho off:在此语句后所有运行的命令都不显示命令行本身,但是本身的指令是…

第二篇:3.1 广告印象(AD Impression) - IAB与MRC及《增强现实广告效果测量指南1.0》

--- 我为什么要翻译美国IAB科技公司系列标准 翻译计划 第一篇概述—IAB与MRC及《增强现实广告效果测量指南》之目录、适用范围及术语第二篇广告效果测量定义和其他矩阵之- 3.1 广告印象(AD Impression)第三篇广告效果测量定义和其他矩阵之- 3.2 可见度 …