ClickHouse教程 — 第二章 ClickHouse快速入门

news2025/1/23 4:03:26

ClickHouse教程 — 第二章 ClickHouse快速入门

  • 1 ClickHouse简介
  • 2 ClickHouse特点
  • 3 clickhouse缺点
  • 4 clickhouse为什么快
  • 5 ClickHouse引擎
    • 5.1 数据库引擎
    • 5.2 数据表引擎
      • 5.2.1 表引擎类型
    • 5.3 数据类型
  • 6 ClickHouse使用语法
  • 7 代码操作ClickHouse

1 ClickHouse简介

参考1:ClickHouse官方介绍
参考2:ClickHouse介绍
参考3:篇一|ClickHouse快速入门

推荐阅读参考1

ClickHouse俄罗斯Yandex 于 2016 年开源的用于在线分析处理查询(OLAP :Online Analytical Processing)MPP架构的列式存储数据库(DBMS:Database Management System),能够使用 SQL 查询实时生成分析数据报告,主要用于Web流量分析。ClickHouse的全称是Click Stream,Data WareHouse

ClickHouse非常适用于商业智能领域,除此之外,它也能够被广泛应用于广告流量、WebApp流量、电信、金融、电子商务、信息安全、网络游戏、物联网等众多其他领域。

2 ClickHouse特点

列式存储
行式存储的好处:
想查找某个人所有的属性时,可以通过一次磁盘查找加顺序读取就可以;但是当想查所有人的年龄时,需要不停的查找,或者全表扫描才行,遍历的很多数据都是不需要的。

列式存储的好处

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

DBMS功能
几乎覆盖了标准 SQL 的大部分语法,包括 DDL 和 DML、,以及配套的各种函数;用户管理及权限管理、数据的备份与恢复。

多样化引擎
目前包括合并树、日志、接口和其他四大类20多种引擎。

高吞吐写入能力
ClickHouse采用类LSM Tree的结构,数据写入后定期在后台Compaction。通过类 LSM tree的结构, ClickHouse数据导入时全部是顺序append,写入后数据段不可更改,在后台compaction时也是多个段merge sort后顺序写回磁盘。顺序写的特性,充分利用了磁盘的吞吐能力。

数据分区与线程及并行

ClickHouse将数据划分为多个partition,每个partition再进一步划分为多个index granularity(索引粒度),然后通过多个CPU核心分别处理其中的一部分来实现并行数据处理。在这种设计下, 单条 Query 就能利用整机所有 CPU。 极致的并行处理能力,极大的降低了查询延时。

所以, ClickHouse 即使对于大量数据的查询也能够化整为零平行处理。但是有一个弊端就是对于单条查询使用多cpu,就不利于同时并发多条查询。所以对于高 qps 的查询业务并不是强项。

ClickHouse 像很多 OLAP 数据库一样,单表查询速度优于关联查询,而且 ClickHouse的两者差距更为明显。

关联查询:clickhouse会将右表加载到内存。

3 clickhouse缺点

  1. 列式存储不支持事务。
  2. 不擅长根据主键按行粒度进行查询(虽然支持),故不应该把ClickHouse当作Key-Value数据库使用。
  3. 不擅长按行删除数据(虽然支持)。

4 clickhouse为什么快

  1. C++可以利用硬件优势。
  2. 摒弃了hadoop生态。
  3. 数据底层以列式存储。
  4. 利用单节点的多核并行处理。
  5. 为数据建立索引一级、二级、稀疏索引。
  6. 使用大量的算法处理数据。
  7. 支持向量化处理。
  8. 预先设计运算模型-预先计算。
  9. 分布式处理数据。

5 ClickHouse引擎

ClickHouse引擎分为 数据库引擎数据表引擎

5.1 数据库引擎

数据库引擎,默认情况下,ClickHouse使用Atomic数据库引擎。它提供了可配置的table enginesSQL dialect

  1. MySQL
    MySQL引擎用于将远程的MySQL服务器中的表映射到ClickHouse中,并允许您对表进行INSERTSELECT查询,以方便您在ClickHouseMySQL之间进行数据交换。

    MySQL数据库引擎会将对其的查询转换为MySQL语法并发送到MySQL服务器中,因此您可以执行诸如SHOW TABLESSHOW CREATE TABLE之类的操作。

  2. MaterializeMySQL
    MySQL数据同步;将MySQL数据全量或增量方式同步到clickhouse中,解决mysql服务并发访问压力过大的问题。

  3. Lazy
    在最后一次访问之后,只在RAM中保存expiration_time_in_seconds秒。只能用于Log表。
    它是为存储许多小的Log表而优化的,对于这些表,访问之间有很长的时间间隔。也就是访问不频繁,压缩率高。

  4. Atomic
    默认的数据库引擎。它提供了可配置的table enginesSQL dialect

  5. PostgreSQL

  6. MaterializedPostgreSQL

  7. Replicated

  8. SQLite

5.2 数据表引擎

表引擎是 ClickHouse 的一大特色。可以说, 表引擎决定了如何存储表的数据。包括:

  1. 数据的存储方式和位置,写到哪里以及从哪里读取数据。
  2. 支持哪些查询以及如何支持。
  3. 并发数据访问。
  4. 索引的使用(如果存在)。
  5. 是否可以执行多线性请求。
  6. 数据复制参数。

5.2.1 表引擎类型

参考1:表引擎
表引擎大致可分四个种类。

  1. 合并树家族
    适用于高负载任务的最通用和功能最强大的表引擎。这些引擎的共同特点是可以快速插入数据并进行后续的后台数据处理。 MergeTree系列引擎支持数据复制(使用Replicated* 的引擎版本),分区和一些其他引擎不支持的其他功能。

    该类型的引擎
    MergeTree最常用

    ReplacingMergeTree最常用

    SummingMergeTree

    AggregatingMergeTree

    CollapsingMergeTree

    VersionedCollapsingMergeTree

    GraphiteMergeTree

  2. 日志引擎系列
    具有最小功能的轻量级引擎。当您需要快速写入许多小表(最多约100万行)并在以后整体读取它们时,该类型的引擎是最有效的。

    该类型的引擎:
    TinyLog

    StripeLog

    Log

  3. 集成的表引擎
    用于与其他的数据存储与处理系统集成的引擎。

    该类型的引擎:
    Kafka比较常用,采集回来的数据先存Kafka然后同步到clickhouse

    MySQL比较常用。

    ODBC

    JDBC

    HDFS

  4. 特别
    该类型的引擎:
    Distributed

    MaterializedView

    Dictionary

    Merge

    File

    Null

    Set

    Join

    URL

    View

    Memory

    Buffer

5.3 数据类型

 数据类型

6 ClickHouse使用语法

ClickHouse的语法与MySQL语法比较接近。在此就不做过多介绍了,可参考:SQL参考

7 代码操作ClickHouse

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

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

相关文章

D. Challenging Valleys

You are given an array a[0…n−1] of n integers. This array is called a “valley” if there exists exactly one subarray a[l…r] such that: 0≤l≤r≤n−1, alal1al2⋯ar, l0 or al−1>al, rn−1 or ar<ar1. Here are three examples: The first image shows…

网页数据抓取工具-数据采集软件

随着时代的不断的发展&#xff0c;我们已经进入一个大数据数字时代&#xff0c;每个人在互联网上都离不开数据的汇总分析以及数据的应用&#xff0c;不管是整理行业的数据&#xff0c;还是分析同行的数据。今天小编就教大家如何用数据采集软件快速抓取到你想要的信息&#xff0…

服务器cpu一直处于100%解决思路

故障描述 网友截图咨询:cpu一直处于100%,请问是什么原因所致?突然出现的,从昨天14点左右就这样子,服务器很卡,将所有网站,web服务,mysql服务,防火墙都停止了,cpu一直处于100%没有改变。 原因分析 cpu突然满载,可能的原因有很多,最常见的就是被cc攻击了导致的。 …

iTOP3399开发板Qt蜂鸣器和LED测试

QLed 测试资料在网盘“iTOP-3399 开发板\iTOP-3399 开发板\02_iTop-RK3399 开发资料汇总&#xff08;不含光盘内 容&#xff09;\05_iTOP-3399 开发板 Qt 应用开发资料\3399 开发板 QT 测试-QtLED 和 buzzer”目录下&#xff0c;我们将要运行 QLed 程序到开发板的 Qt 系统上。参…

【LeetCode每日一题】——118.杨辉三角

文章目录一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【解题思路】七【题目提示】八【时间频度】九【代码实现】十【提交结果】一【题目类别】 数组 二【题目难度】 简单 三【题目编号】 118.杨辉三角 四【题目描述】 给定一个非负整数 n…

CubeMX+VSCode+Ozone的STM32开发工作流(三)利用Ozone进行可视化调试和代码分析

neozng1hnu.edu.cn 本教程的示例代码是笔者参加RoboMaster机甲大师赛为机器人编写的控制器框架&#xff0c;你可以直接克隆仓库&#xff0c;阅读仓库下的Markdown文档获得更好的体验&#xff0c;记得点一个小⭐&#xff1a;basic_framework: basic_framework (gitee.com)所有安…

[附源码]Python计算机毕业设计宠物领养系统

项目运行 环境配置&#xff1a; Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术&#xff1a; django python Vue 等等组成&#xff0c;B/S模式 pychram管理等等。 环境需要 1.运行环境&#xff1a;最好是python3.7.7&#xff0c;…

Word处理控件Aspose.Words功能演示:使用 Python 查找和替换 Word 文档中的文本

很多时候&#xff0c;您需要替换 Word 文档中的特定文本或短语。MS Word 具有针对此类情况的内置功能&#xff0c;您可以一键替换所需的文本。在本文中&#xff0c;您将学习如何使用 Python 以编程方式查找和替换 Word 文档中的文本。当您需要替换一堆文档中的文本时&#xff0…

Redis的分布式锁问题(九)Redis + Lua 脚本实现分布式锁

Redis的分布式锁问题&#xff08;九&#xff09;Redis Lua 脚本实现分布式锁 上集回顾 Lua的简单介绍 redis调用函数 set name jack set name Rose&#xff0c;再执行get name redis的 EVAL 命令 Lua脚本解决unLock业务流程 代码实现 unLock.lua RedisTemp…

APS自动排程在制药行业的应用

制药企业&#xff0c;作为流程工业的一种&#xff0c;既有流程工业所具有的共性也有特殊性&#xff0c;通过发酵、萃取、灌装等生物、化学、物理变化&#xff0c;产生新物质达到增值目的。通常以批量或连续的方式进行生产&#xff0c;需要严格的过程控制和安全措施。生产运行、…

hadoop 3.x大数据集群搭建系列4-安装Spark

文章目录一. 下载spark和scala并解压二. 配置SPARK_HOME环境变量三. 修改配置3.1 修改 spark-defaults.conf3.2 修改spark-env.sh3.3 修改slaves文件四. 将spark目录分发到其他节点五. 启动Spark集群六. 在web界面查看Spark UI七. 测试八. Yarn模式8.1 启动hdfs、yarn服务8.2 修…

笔记本电脑自带录屏吗?笔记本电脑怎么录屏

​现如今&#xff0c;电脑屏幕录制功能越来越成为我们生活中不可或缺的一部分。比如网课录制、游戏画面、软件教程等。很多小伙伴可能知道笔记本电脑拥有录屏功能&#xff0c;但是却不知道笔记本电脑怎么录屏。下面就让小编详细介绍一下&#xff0c;笔记本电脑录屏的方法。 一&…

骨传导耳机的利与弊有哪些?骨传导耳机到底好不好?

耳机大家应该都知道&#xff0c;但是骨传导耳机&#xff0c;大家或许就有点陌生了。目前网上也有很多关于骨传导耳机的科普和盘点&#xff0c;但是个人认为都过于零碎不明了&#xff0c;而我今天就用我玩骨传导耳机好几年的经验和知识&#xff0c;以骨传导用户的角度写了这篇文…

接口幂等设计

文章目录如何设计幂等幂等设计的基本流程建防重表根据状态机分布式锁获取 token如何设计幂等 既然这么多场景需要考虑幂等&#xff0c;那我们如何设计幂等呢&#xff1f; 幂等意味着 一条请求的唯一性。不管是你哪个方案去设计幂等&#xff0c;都需要一个全局唯一的ID&#xf…

【第五部分 | JS WebAPI】2:DOM 元素操作

目录 1-1 改变元素内容&#xff08;去除html和空格换行&#xff09; 1-2 改变元素内容&#xff08;保留html和空格换行 用的最多&#xff09; 1-3 获取元素的内容 [ 更多其它可操作的元素属性 ] 2-1 修改元素的属性 2-2 修改表单元素属性 2-3 使用this指向函数调用者 3…

day35 XSS跨站反射存储DOM盲打劫持

前言 #知识点&#xff1a; 1、XSS跨站-原理&攻击&分类等 2、XSS跨站-反射型&存储型&DOM型等 3、XSS跨站-攻击手法&劫持&盗取凭据等 4、XSS跨站-攻击项目&XSS平台&Beef-XSS 1、原理 指攻击者利用网站程序对用户输入过滤不足&#xff0c;输…

redis<二>spring使用redis,配置远程登录和密码

使用默认的redis配置 改pom, 加入redis依赖,版本可以不需要写&#xff0c;由spring的父工程控制。 <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis --> <!--整合redis--> <dependency><groupId>…

Spring Bean基础-4

1. 定义Bean: 什么是BeanDefinition? 什么是BeanDefinition?BeanDefinition 是 Spring Framework 中定义 Bean 的配置元信息接口, 包含: Bean 的类名Bean 行为配置元素, 如作用域、自动绑定的模式、生命周期回调等其他 Bean 引用, 又可称作合作者 (Collaborators) 或者依赖 …

Feign的简介及使用

一、Feign简介 Feign是一个声明式的http客户端&#xff0c;官方地址:https://github.com/OpenFeign/feign 其作用就是帮助我们优雅的实现http请求的发送&#xff0c;解决代码可读性差&#xff0c;编程体验不统一、参数复杂URL难以维护的问题。 二、使用Feign的步骤 1.引入依赖…

网络原理(Java网络编程)

1.局域网和广域网 局域网LAN: 即 Local Area Network,简称LAN. 局域网内的主机之间能方便的进行网络通信,又称为内网;局域网和局域网之间在没有连接的情况下,是无法通信的.局域网一般可以由交换机或路由器组建. 广域网WAN: 即 Wide Area Network,简称WAN. 广域网是将多个局域网…