首页 > 数据库 >【ClickHouse 特点&数据类型&表引擎&SQL操作&副本&分片集群 01】

【ClickHouse 特点&数据类型&表引擎&SQL操作&副本&分片集群 01】

时间:2024-09-30 16:25:54浏览次数:5  
标签:存储 01 列式 数据类型 查询 引擎 SQL 数据 ClickHouse

概念:

ClickHouse是开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告

OLAP这样的适合做一些一次插入多次查询这样的操作(适合查询),对于新增更新删除就不太擅长了,所以ClickHouse是一种分析性数据库

HBase也是列式存储数据库

mysql、oracle关系型数据库,适合做CROD这样的增删改查的操作  -->行式存储。

一、Clickhouse特点:

1、列式存储

如何理解:举例:需要存储下面的数据

 1)采用行式存储时,数据在磁盘上的组织结构为:

 2)采用列式存储时,数据在磁盘上的组织结构为:

 查询:select xx属性 from 表,例如:查所有人的id属性,列式存储就只需吧id这一列拿出来就可以了,而行式存储就需要不停的查找或者全表扫描才能找到所有人的id,而遍历的很多数据其实是不需要的

新增、更新、删除:insert (id,name,age)from 表,新增和更新时,行式就可以直接把一行的数据插入或者更新即可,而列式只能先插入id,在插入name,最后插入age

所以像ClickHouse、Hbase这样的列式存储数据库,适合一次插入多次查询,而新增、更新、删除就不太适合了,相反像mysql、oracle这样的关系型数据库即行式存储,新增、更新、删除就更加的适合,而查询就相对不太适合

3)列式存储的好处:

  • 对于列的聚合,计数,求和等统计操作优于行式存储
  • 由于某一列的数据类型都是相同的,针对于数据存储更容易进行数据压缩,每一列选择更优的数据压缩算法,大大提高了数据的压缩比重
  • 由于数据压缩比更好,一方面节省了磁盘空间,另一方面对于cache也有了更大的发挥空间

2、DBMS的功能

几乎覆盖了标准SQL的大部分语法,包括DDL(建表语句)、DML(增删改查)以及配套的各种函数,用户管理及权限管理,数据的备份与恢复。

3、多样化引擎

ClichHouse和MySQL类似,把表级的额存储引擎插件化,根据表的不同需求可以设定不同的存储引擎。目前包括合并树(常用->Merge  Tree)、日志、接口、其他 四种大类20多种引擎。

表存储引擎:如mysql的存储引擎innodb(提供事务-->默认、且常用)、mariadb(不提供事务)

4、高吞吐写入能力

ClickHouse采用类LSM Tree的结构,数据写入后定期在后台Compaction(合并)。-->插入相同的数据时会通过version 号控制,只有在合并的时候采取进行去重。通过类LSM Tree的结构,ClickHouse在数据导入时全部是顺序append(追加)写,写入后的数据段不可更改,在后台Compaction时也是多个段merge sort后顺序写回磁盘。顺序写的特点,充分利用了磁盘的吞吐能力,即便在HDD上也有着优异的写入性能

  官方公开benchmark测试显示能够达到50MB-200MB/s的写入吞吐能力,按照每行100byte估算,大约相当于50w-200w/s的写入速度。

5、数据分区和线程级并行

ClickHouse将数据划分为多个partition(分区),每个partition在进一步划分为多个index granularity(索引粒度),然后通过多个cpu核心分别处理 其中的一部分来实现并行数据处理。在这种设计下,单条Query(查询)就能利用整机所有CPU。--->单条查询就会调用所有cpu那么多条查询占用cpu就很多, 所以ClickHouse一个 瓶颈就是很吃CPU,不利于同时并发多条查询

所以对于高QPS的查询业务ClickHouse并不是强项。

  • QPS: query per second 每秒查询次数
  • TPS:Transaction per second 每秒处理事务次数

由此:ClickHouse不适合存储初始数据,而适合处理过的包含大量字段的大宽表

ClickHouse像很多OLAP数据库一样,单表查询速度优于关联查询 -->所以在架构设计时尽量避免join这样的关联存储数据

二、ClickHouse安装

 

标签:存储,01,列式,数据类型,查询,引擎,SQL,数据,ClickHouse
From: https://www.cnblogs.com/frankruby/p/18441808

相关文章

  • 题解:P6902 [ICPC2014 WF] Surveillance
    可以在cnblog中阅读。考虑弱化版链怎么做,每次选取左端点在当前位置前面的线段,跳到其中最大的右端点,可以维护一个数组表示起点为\(i\)的目标位置,可以做到\(O(n+k)\)。考虑多次询问一段区间\([l,r]\)的答案,这时如果暴力从\(l-1\)开始跳是\(O(n^2)\)的,只需要一个倍增数......
  • mysql写外键约束时不生效
    写了外键约束,删除父表内容发现删除成功解决方法查看两个表使用的引擎showcreatetable表名;发现ENGINE=MyISAM更改引擎ALTERTABLEempENGINE=InnoDB;重新写外键再次尝试删除父表内容失败MyISAM和InnoDB是MySQL中的两种存储引擎,各自有不同的特点:MyISAM:......
  • 基于PyQt5和SQLite的数据库操作程序
    基于PyQt5和SQLite的数据库操作程序:功能解析在现代办公和数据处理中,数据库操作是不可或缺的一部分。然而,传统的数据库管理工具往往界面复杂,操作繁琐,对于非专业人士来说存在一定的学习曲线。为了解决这个问题,我们开发了一款基于PyQt5和SQLite的数据库操作程序。该程序提供了一......
  • 01-什么是逻辑学?
    逻辑内容逻辑形式逻辑内容是具体的逻辑形式是通用的、普遍性的同一个思维形式可以具有不同的甚至相反的思维内容逻辑学就是从实际思维中抽出思维形式作为自己的主要研究对象的,涉及思维内容方面的问题不是逻辑学所研究的对象,而是其它具体科学所研究的对象。同一律、矛盾律与......
  • sql注入-基于MySQL
    SQL注入的失败——SQL语句的未知性导致的拼接失败SQL操作都会导致SQL注入的出现:select,insert,update,delete数据类型:数字型(无符号干扰)——select*fromnewswhereid=$id;字符型(有符号干扰)——select*fromnewswhereid='$id';搜索型(有多符号干扰)——s......
  • SQL 简介
    一、介绍SQL        可学习的链接SQL语法|菜鸟教程(runoob.com)https://www.runoob.com/sql/sql-syntax.htmlSQL (StructuredQueryLanguage:结构化查询语言)是用于管理关系数据库管理系统(RDBMS)。SQL通过一系列的语句和命令来执行数据定义、数据查询、数据......
  • 洛谷题单指南-分治与倍增-P6648 [CCC2019] Triangle: The Data Structure
    原题链接:https://www.luogu.com.cn/problem/P6648题意解读:在一个n行的数字三角形中,求所有边长为k的正三角形最大值之和。解题思路:1、枚举法枚举每一个边长为k的三角形,在其中求max,然后累加,n最多3000,时间复杂度是n^4,显然超时。2、倍增和ST思想此题非常类似于RMQ问题,也就是求区......
  • 象形闽都 数智榕城 | PostgreSQL中文社区技术沙龙 - 福州站
    在数字化浪潮席卷的时代,数据已成为推动社会进步与企业发展的核心动力。福建,作为东南沿海的经济与文化重镇,正以崭新的姿态拥抱数智未来。为促进福建地区数据库技术的交流与发展,我们诚挚邀请您参加“象行闽都,数智榕城——PostgreSQL数据库技术沙龙”。 活动主题:象行闽都、数智......
  • 第29篇 在Linux CentOS系统上部署SqlServer数据库,并实现内网穿透
    在Linuxcentos环境下安装部署sqlserver数据库,并结合cpolar内网穿透工具,创建安全隧道将其映射到公网上,获取公网地址,实现在外异地远程连接家里/公司的sqlserver数据库,而无需公网IP,无需设置路由器,亦无需云服务器。1.安装sqlserver下载SQLServer2022(16.x)RedHat存储库配......
  • 【25届计算机毕设选题推荐】基于python+MySQL的社区医院挂号就诊管理系统的设计与实现
    ✍✍计算机毕业编程指导师**⭐⭐个人介绍:自己非常喜欢研究技术问题!专业做Java、Python、小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。⛽⛽实战项目:有源码或者技术上的问题欢迎在评论区一起讨论交流!⚡⚡Java、Python、小程序、大数据实战项目集⚡⚡文末获取......