clickhouse常见部署图及LowCardinality低基数类型优缺点

news/2024/5/6 20:13:08/文章来源:https://blog.csdn.net/lixia0417mul2/article/details/127189946

clickhouse使用jdbc进行查询插入数据操作的部署图

一.读sql的核心是 读分布式表的数据(分布式表可以读取互为副本的本地表的数据,起到容灾的目的),然后使用nginx作为负载均衡器和反向代理,代理后端clickhouse的分布式表的服务器节点,jdbc连接的ip指定为nginx服务器所在的地址,nginx还可以记录每条sql操作的耗时
二.写sql的核心: 写sql也就是insert语句一般会直接操作本地表,至于哪些数据写到哪个clickhouse本地表的逻辑由客户端按照自定义的规则来定义,确定好哪些数据写到哪些clickhouse本地表之后,直接操作本地表,操作本地表的时候可以操作互为副本的本地表中的任何一个,或者轮流操作互为副本的本地表的任何一个,另外一个会自动同步数据

使用jdbc操作clickhouse的部署图

LowCardinality数据类型优缺点

一 LowCardinality数据类型定义

create table A
(id uInt32, name LowCardinality(String))
engine=MergeTree() order by id 

一般使用LowCardinality低基数类型修饰字符串变量,其还有一个别名StringWithDictionary,也就是使用字典编码实现的

二 LowCardinality字典编码实现原理

在这里插入图片描述
LowCardinality数据类型首先通过字典编码把具体的字符串转换成index数值,在随后的sql操作中都是操作的index的值,直到最终结果返回给client之前才通过倒排索引把index映射到具体的字符串值中.

三 LowCardinality优缺点

1.LowCardinality可以节省存储空间,因为通过字典编码之后,只需要存放编码后的index值以及倒排索引,所以可以节省大量的磁盘存储(不过这个结论是相对的,也就是在某一列的基数值不超过百万级的时候,超过了这个值需要的存储反倒比原始String列更多的内存,所以也有一些公司改造LowCardinality类型,当某一列是高基数时fall back 回退到原始类型中去)
2.LowCardinality可以提升查询性能,其原因一方面来源于数据列的数据量的减少(原始字符串的列字段长度越长,能节省的磁盘空间就越大),另一方面来源于clickhouse对LowCardinality列在过滤,聚合等的优化。
3.LowCardinality类型对Insert数据写入和Merge数据合并有副作用,也就是会导致insert和merge操作变慢,当应用是实时写入的场景时,需要评估具体的影响

参考文章:
https://blog.csdn.net/nazeniwaresakini/article/details/111841320
https://zhuanlan.zhihu.com/p/562815347
https://www.cnblogs.com/bytedata/p/16635953.html

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

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

相关文章

什么是低代码

文章目录no code / low code / pro code按适用范围的维度来分类低代码的技术意义与商业价值技术意义商业价值行业状态速读平台分类不同的实现方式不同的使用群体不同的使用方式优秀开源项目推荐no code / low code / pro code no code:自己编程给自己用&#xff0c…

Yao‘s GC 的通信最优解:Half Gate

参考文献: Bellare M, Hoang V T, Rogaway P. Foundations of garbled circuits[C]//Proceedings of the 2012 ACM conference on Computer and communications security. 2012: 784-796.Zahur S, Rosulek M, Evans D. Two halves make a whole[C]//Annual Interna…

MyBatisPlus入门宝典(二)CRUD

目录 一.添加 二.相关注解 三.修改 四.删除 五.查询 六.条件构造器 七.分页查询 八.全局配置 一.添加 1.配置文件开启SQL日志打印 # 开启SQL日志 mybatis-plus:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl 2.测试添加方法: …

Unity URP 色彩之旅

Unity URP 色彩之旅 这一切只是色彩科学的冰山一角… 文章目录Unity URP 色彩之旅1 我们是如何感知世界的?1.1 首先要有光!1.2 人眼响应1.3 奇怪的大脑2 我们是如何描述颜色的?2.1 CIE 1931 RGB Color Space2.2 CIE 1931 XYZ Color Space2.3 …

JavaScript高级学习笔记:数据_变量_内存

1. 什么是数据? 2. 什么是内存? 3. 什么是变量? 4. 内存,数据, 变量三者之间的关系 变量保存的是内存中存储的地址值,而变量赋值就是将一个变量保存的内容拷贝一份到另一个变量中 这里面的.就是找obj对应地址值,中内存保存的相应数据 那么是不是所有…

SRv6----报文转发流程

按照下图路径,报文需要从主机H1转发到主机H2,H1将报文发送给节点A处理。节点A、B、D和F均为支持SRv6的设备,节点C和节点E为不支持SRv6的设备。 我们在SRv6源节点A上进行了网络编程,希望报文经过B-C和D-E这两条链路,然后送达节点F&…

华为面向5G的室内覆盖数字化概述

概述 数字化技术催生各行业的不断创新:ICT、媒体、金融、保险在数字化发展 曲线中已经独占鳌头,零售、汽车、油气化工、健康、矿业、农业等也在加速 其进程。促进数字化进程的关键技术包括软件定义设备、大数据、云计算、区 块链、网络安全、时延敏感网…

(附源码)SSM医疗垃圾管理系统JAVA计算机毕业设计项目

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

美团java一面面经

目录1.了解static吗,static数据存在哪?生命周期什么样的2.了解final吗,讲讲下面这段代码的结果3.讲讲volatile吧4.讲讲两个锁的区别(reentrantlock和synchronized)5.讲讲线程池里线程的创建与销毁,核心线程可以销毁吗?…

.NET 开源项目推荐之 直播控制台解决方案 Macro Deck

在直播圈有个很受欢迎的直播控制台程序Macro Deck, 它是基于Apache 2.0协议开源的.NET 应用。流媒体是一个吸引数亿万玩家的严肃行业。 最受欢迎的游戏锦标赛的转播获得了数百万的观看次数,从商业角度来看,这也使游戏行业变得有趣。在直播圈有个很受欢迎的直播控制台程序Mac…

牛客网专项练习30天Pytnon篇第07天

1.在Python中,使用open方法打开文件,语法如下:open(文件名,访问模式),如果以二进制格式打开一个文件用于追加,则访问模式为:(C) A.rb B.wb C.ab D.a 解析: "r",&q…

看完这篇 教你玩转渗透测试靶机vulnhub——hackableII

Vulnhub靶机hackableII渗透测试详解Vulnhub靶机介绍:Vulnhub靶机下载:Vulnhub靶机安装:Vulnhub靶机漏洞详解:①:信息收集:②:FTP匿名登录:③:回弹shell:④&am…

Mybatis - 一二级缓存的原理

Mybatis - 一二级缓存的原理前言一. 一级缓存原理1.1 原理分析1.2 一级缓存 Key1.3 查询逻辑1.4 一级缓存的清除或失效场景1.5 一级缓存总结二. 二级缓存原理2.1 二级缓存的实验2.2 二级缓存的开启和相关配置解析2.3 二级缓存的封装Cache类2.4 二级缓存的存储2.5 二级缓存总结前…

指静脉代码学习---9.图像质量评价(分类)

一、论文背景 1.论文三--Song 本文提出了一种自适应增强框架的算法流程 先通过质量评价将图像分类,①针对高质量的图像,采用类似直方图均衡化的简单方法②低质量图像,采用类似滤波器增强的方法(虽然时效性较差,但是效果比较明显) ①对质量评价方法历程的概述:

Python 变量作用域

Python 变量作用域1.变量作用域2.局部变量3.全局变量4.同名的局部变量和全局变量5.global 语句1.变量作用域 Python 中规定每个变量都有它的作用域, 即变量只有在作用域范围内才是可见可用的。 作用域能避免程序代码中的名称冲突,在一个函数中定义的变量…

Java学习 --- 面向对象-继承

一、为什么需要继承 我们编写了两个类,一个是Pupil类,一个是Graduate类 问题:两个类的属性和方法有很多是相同的,怎么办? Pupil类: package com.javase.extend_;public class Pupil {public String nam…

docker搭建2048小游戏

下载2048游戏包 链接: https://pan.baidu.com/s/1E5RkGgfLSo3XYmvJ7RId_Q 提取码: 1gc5 复制这段内容后打开百度网盘手机App,操作更方便哦 打包成镜像 [root@docker ~]# ls game2048.tar [root@docker ~]# docker load -i game2048.tar [root@docker ~]# docker images REPOSI…

10月7日第壹简报,星期五,农历九月十二

10月7日第壹简报,星期五,农历九月十二1. 2022年诺贝尔文学奖揭晓,82岁法国女作家埃尔诺获奖。2. 我国新添4处世界灌溉工程遗产:四川省通济堰、江苏省兴化垛田灌排工程体系、浙江省松阳松古灌区和江西省崇义县上堡梯田全部申报成功…

【C语言】学生考勤管理系统

✅作者简介:一位CSDN万粉博主的小娇妻,一名在读大二学生,希望大家多多支持👍👍👍 🔥系列专栏:C语言 💬个人主页:梦园的CSDN博客 学生考勤管理系统1 问题描述2…

使用Vue和SpringBoot开发实验室耗材智能运维系统

作者主页:Designer 小郑 作者简介:浙江某公司软件工程师,负责开发管理公司OA、CRM业务系统,全栈领域优质创作者,CSDN学院、蓝桥云课认证讲师,开发过20余个前后端分离实战项目,主要发展方向为Vue…