ClickHouse使用Docker部署

OLTP和OLAP介绍

基本业务量到达分库分表量级,则离不开数据大屏、推荐系统、画像系统等搭建,需要搭建以上系统,则离不开海量数据进行存储-分析-统计。
而海量数据下 TB、PB级别数据存储,靠Mysql进行存储-分析-统计无疑是灾难。所以就需要用到使用OLAP数据处理技术。

什么是OLTP

全称 OnLine Transaction Processing,联机事务处理系统, 就是对数据的增删改查等操作。
存储的是业务数据,来记录某类业务事件的发生,比如下单、支付、注册、等等。
典型代表有Mysql、 Oracle等数据库,对应的网站、系统应用后端数据库。
针对事务进行操作,对响应时间要求高,面向前台应用的,应用比较简单,数据量相对较少,是GB级别的。
面向群体:业务人员

当数据积累到一定的程度,需要对过去发生的事情做一个总结分析时,就需要把过去一段时间内产生的数据拿出来进行统计分析,从中获取想要的信息,为公司做决策提供支持,这个就是做OLAP了。

什么是OLAP

OnLine Analytical Processing,联机分析处理系统。

存储的是历史数据,对应的风控平台、BI平台、数据可视化等系统。

OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策,并且提供直观易懂的查询结果。

典型代表有 Hive、ClickHouse。

针对基于查询的分析系统,基础数据来源于生产系统中的操作数据,数据量非常大,常规是TB级别的。

面向群体:分析决策人员。

数据库里面行存储和列式存储

什么是行存储

传统的OLTP关系型数据库都是行存储。

一行中的数据在存储介质中以连续存储形式存在。

适合随机的增删改查操作 或者 在行中选取所有属性的查询操作,结合索引提升性能。

缺点

查询的全部记录的某几个字段,但由于这些字段在各行数据单元中,而整个行特别大(字段特别多),程序必须不断读取每一条的行记录取对应的字段,使得读取效率大大降低。
例子:找某个订单的话,就很方便,订单的全部信息都能获取; 但找全部订单总金额就需要遍历多个数据。

order_idtotal_amount
110
220
330

什么是列式存储

存储结构化数据时,在底层的存储介质上,数据是以列的方式来组织的。
存储完若干条记录的首个字段后,再存储这些记录的第二个字段,然后再第三个字段、第四个字段...
查询时只有涉及到的列会被读取,而不需要全表扫描,可以显著减少IO消耗,并降低查询响应时间。
例子:查询全部成交额,只需要把订单金额拿出来即可。

123
102030

总结

描述的是底层存储介质上,数据的组织形式,哪种组织对应哪种业务需求。
列存储在聚合、统计等操作性能会优于行存储。
列存储将多行记录的列连续存储在一起,一列接着一列。
列式存储是同个数据类型,会进行数据压缩率更高,更省空间。
列存储数据更新成本较高,一般适合读多写少的场景,适合 OLAP 分析型系统。

列式存储ClickHouse介绍和应用场景说明

ClickHouse的由来和应用场景

俄罗斯Yandex在2016年开源,使用C++编写的列式存储数据库,近几年在OLAP领域大范围应用。

官网:

https://clickhouse.com

GitHub:

https://github.com/ClickHouse/ClickHouse

 阿里云的ClickHouse 文档:

https://www.aliyun.com/product/clickhouse

分析型数据库管理系统基准测试

https://benchmark.clickhouse.com/#system=+lik|yL|gQ&type=-&machine=-ca2|gle|6ax|ae-|6ale|3al|gel&cluster_size=-&opensource=-&tuned=+n&metric=hot&queries=-

特点和应用场景

不依赖Hadoop 生态、安装和维护简单。
擅长对列的聚合、计数等统计操作性能强劲。
对列存储和压缩采用更好的算法,更节省成本。
拓展性强,在生产中经过实战测试,从单服务器部署到具有数千个节点的集群的线性水平可扩展性。
具有企业级安全功能和故障安全机制,可防止数据因应用程序错误和人为错误而损坏。
支持主流的大部分SQL语法和函数。
吞吐能力强,官方测试支持,支持多种存储引擎,满足多数业务场景。
广泛应用:互联网电商、在线教育、金融等领域用,用户行为数据记录和分析,搭建数据可视化平台。

Linux服务器Docker安装

安装并运行Docker

yum install docker-io -y

检查安装结果

docker info

运行Docker守护进程

systemctl start docker

停止Docker守护进程

systemctl stop docker

重启Docker守护进程

systemctl restart docker

查看容器

docker ps

停止容器

docker stop 容器id

修改镜像仓库,改完重启docker

vim /etc/docker/daemon.json
{
"debug":true,"experimental":true,
"registry-mirrors":["https://pb5bklzr.mirror.aliyuncs.com","https://hub-mirror.c.163.com","https://docker.mirrors.ustc.edu.cn"]
}

查看信息

docker info

Docker部署ClickHouse

镜像仓库地址

https://hub.docker.com

安装命令

docker run -d -e CLICKHOUSE_USER=admin -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=admin --name test_clickhouse --ulimit nofile=262144:262144 \
-p 8123:8123 -p 9000:9000 -p 9009:9009 --privileged=true \
-v /usr/local/clickhouse/log:/var/log/clickhouse-server \
-v /usr/local/clickhouse/data:/var/lib/clickhouse clickhouse/clickhouse-server

默认http端口是8123,tcp端口是9000, 同步端口9009

web可视化界面:http://你的ip:8123/play

命令

查看数据库:SHOW DATABASES
查看某个库下面的全部表:SHOW TABLES IN system
系统数据库是 ClickHouse 存储有关 ClickHouse 部署的详细信息的地方
默认数据库最初为空,用于执行未指定数据库的命令

数据库连接工具下载

https://dbeaver.io/download

创建ClickHouse数据库和表

创建数据库 

CREATE DATABASE test

创建表

CREATE TABLE clickstream (customer_id String, time_stamp Date, click_event_type String,page_code FixedString(20),  source_id UInt64
) 
ENGINE = MergeTree()
ORDER BY (time_stamp)

说明:
ClickHouse 有自己的数据类型,每个表都必须指定一个Engine引擎属性来确定要创建的表的类型
引擎决定了数据的存储方式和存储位置、支持哪些查询、对并发的支持。

数据类型说明

String类型替换来自其他数据库的 VARCHAR、BLOB、CLOB 和其他类似字符串的数据类型。

UInt64是一个 64 位无符号整数。

日期是在 ClickHouse 中存储日期的几种方法之一。

如果知道列中所有字符串的精确长度,则使用FixedString( n )数据类型。

插入数据

INSERT INTO clickstream VALUES ('customer1', '2021-10-02', 'add_to_cart', 'home_enter', 568239 ) 

查询数据

SELECT * FROM clickstream

数据类型和语法说明

数值类型(整形,浮点数,定点数)

整型

固定长度的整型,包括有符号整型或无符号整型 IntX X是位的意思,1Byte字节=8bit位

有符号整型范围
Int8 — [-128 : 127]

Int16 — [-32768 : 32767]

Int32 — [-2147483648 : 2147483647]

Int64 — [-9223372036854775808 : 9223372036854775807]

Int128 — [-170141183460469231731687303715884105728 : 170141183460469231731687303715884105727]

Int256 — [-57896044618658097711785492504343953926634992332820282019728792003956564819968 : 57896044618658097711785492504343953926634992332820282019728792003956564819967]

无符号整型范围
UInt8 — [0 : 255]

UInt16 — [0 : 65535]

UInt32 — [0 : 4294967295]

UInt64 — [0 : 18446744073709551615]

UInt128 — [0 : 340282366920938463463374607431768211455]

UInt256 — [0 : 115792089237316195423570985008687907853269984665640564039457584007913129639935]

浮点型(存在精度损失问题)

建议尽可能以整型形式存储数据
Float32 - mysql里面的float类型
Float64 - mysql里面的double类型

Decimal类型

需要要求更高的精度的数值运算,则需要使用定点数。

一般金额字段、汇率、利率等字段为了保证小数点精度,都使用 Decimal。

Clickhouse提供了Decimal32,Decimal64,Decimal128三种精度的定点数。

用Decimal(P,S)来定义:

P代表精度(Precise),表示总位数(整数部分 + 小数部分)
S代表规模(Scale),表示小数位数
例子:Decimal(10,2) 小数部分2位,整数部分 8位(10-2)

也可以使用Decimal32(S)、Decimal64(S)和Decimal128(S)的方式来表示

字符串类型

UUID

通用唯一标识符(UUID)是由一组32位数的16进制数字所构成,用于标识记录

61f0c404-5cb3-11e7-907b-a6006ad3dba0

要生成UUID值,ClickHouse提供了 generateuidv4 函数。

如果在插入新记录时未指定UUID列的值,则UUID值将用零填充

00000000-0000-0000-0000-000000000000

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

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

相关文章

Python 算数运算练习题

计算数字特征值题目描述 编写一个程序,接收用户输入的两个整数 a 和 b(a > b > 0),计算并输出以下结果:a 与 b 的和的平方a 除以 b 的商和余数a 与 b 的平均数(保留 2 位小数)示例请输入整…

【物种分布模型】R语言物种气候生态位动态量化与分布特征模拟——气候生态位动态检验、质心转移可视化、适生区预测等

R语言是一种广泛用于统计分析和图形表示的编程语言,强大之处在于可以进行多元数据统计分析,以及丰富的生态环境数据分析的方法,在生态学领域得到广泛应用。本次教程将通过R语言多个程序包与GIS融合应用,提升物种气候生态位动态量化…

【算法速成课2 | 题单】背包问题

专栏指路:《算法速成课》 前导: 动态规划问题中最入门、也最多变的,当属背包问题。 简单来说,就是在有限的空间,(花费最小的代价)达成最大的收益。 本文会讲一些常见的背包问题(可…

计算机视觉与深度学习 | 深度学习图像匹配算法在不同纹理复杂度场景下的鲁棒性和计算效率评估方法

如何评估深度学习图像匹配算法在不同纹理复杂度场景下的鲁棒性和计算效率? 文章目录 如何评估深度学习图像匹配算法在不同纹理复杂度场景下的鲁棒性和计算效率? 一、评估框架概述 1.1 核心评估维度 1.2 评估流程 二、纹理复杂度场景分类方法 2.1 纹理特征量化指标 2.2 场景分…

AI 提示词工程与上下文工程:从入门到深入的系统实践指南

前言近年来,随着大语言模型(LLM,Large Language Model)的快速发展,提示词工程(Prompt Engineering)与上下文工程(Context Engineering)逐渐成为 AI 应用开发中至关重要的…

救火!Linux服务器慢如蜗牛:一套从根源到应用的性能问题诊断全攻略

前言:从“玄学”到“科学” “服务又卡了!” 这是我们每个Linux运维/SRE工程师最不想听到,却又最常听到的一句话。随之而来的,往往是开发、产品、甚至老板的连环追问。此时,一个经验不足的工程师可能会立刻登录服务器&…

BYOFF (Bring Your Own Formatting Function)解析(80)

BYOFF (Bring Your Own Formatting Function)解析(80) 看起来不错!要注意的是,我们并没有真正使用任何自定义的特殊标记。其中 “Question”(问题)、“Answer”(答案)、井号(#)以及 EOS 标记,都是分词器词汇表中常见的条目。在本节后续内容中,我们将探讨自定义特…

秋招|MCU+RTOS技术栈——面试八股文整理3:STM32

目录 1.单片机启动流程 2.看门狗 3.最小系统 4.ROM、RAM、Flash 5.EPROM、EEPROM 6.Bootloader与OTA 1.单片机启动流程 单片机的启动流程是指从上电或复位开始到应用用户主程序执行的一系列自动操作过程,不同架构的单片机流程略有差异,但核心逻辑…

在 CentOS 9 上安装 Docker 的完整指南

1.准备安装环境(1)禁用防火墙与SELinux[rootlocalhost ~]# systemctl disable --now firewalld.service Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproj…

如何实现外语播客的中文同传?

Bayt播客可以将任何语言的外语播客(英文播客、日文播客、韩文播客等)转换成中文音频收听,实现同声传译。并且还提供中文和原文的双语字幕。帮助你跨越语言障碍,收听高质量外语内容 核心功能: 1、所有语言的播客均可转…

Spring Cloud ------ Gateway

一、什么是网关 经常面试的人肯定知道,在去公司面试时,通常不会直接去面试官那里面试,而是先去前台进行询问面试官的所在地,并进行一些相关登记。而网关对于一个微服务项目来说,就类似于一个前台,打到微服…

Go初级之九:Select 与并发控制

在Go语言中,select语句是处理并发编程的核心工具之一。它让我们能够优雅地管理多个通道操作,实现高效的并发控制。 1. Select 语句基础 1.1 Select 的基本语法 package mainimport ("fmt""time" )func main() {ch1 : make(chan stri…

使用 Acme.sh 获取和管理免费 SSL 证书

Acme.sh 是一个开源的 Shell 脚本工具,支持从 Let’s Encrypt 等证书颁发机构获取免费的 SSL/TLS 证书。它支持多种验证方式,并能自动续期证书,适合个人网站或企业使用。 目标 同时支持,主域名和泛域名 安装 Acme.sh获取源码 git …

docker-compose跨节点部署Elasticsearch 9.X集群

系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 例如:第一章 Python 机器学习入门之pandas的使用 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录 前言 一、环境准备 二、遇到的问题与分析 三、配…

【面试场景题】spring应用启动时出现内存溢出怎么排查

文章目录一、定位 OOM 类型二、基础排查:调整 JVM 参数与日志三、堆内存溢出(Heap Space)排查1. 分析堆转储文件2. 典型场景与解决四、元空间溢出(Metaspace)排查1. 分析类加载情况2. 典型场景与解决五、直接内存溢出&…

2025年经济学专业女生必考证书指南:打造差异化竞争力

在数字经济快速发展的2025年,经济学专业女生面临着诸多机遇与挑战。单纯的理论知识已经难以满足职场需求,企业更看重解决实际问题的能力,特别是将数据转化为商业洞察的专业技能。各类专业资质认证可以成为系统提升能力的途径之一,…

【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文接收上来的

目录 前言 正文 1.背景介绍 2.CAN报文硬件原理 3.CAN接收软件实现 3.1. vCan_30_Mcan_Interrupt 3.2. vCan_30_Mcan_RxInterrupt 3.3. vCan_30_Mcan_RxBasicCanHandling 4.总结 前言 在《【CAN通信】AUTOSAR架构下TC3xx芯片是如何将一帧CAN报文发送出去的》一文中我们…

STM32H750 RTC介绍及应用

第十一章 RTC介绍及应用 1. RTC 简介 RTC(Real-Time Clock,实时时钟)是 STM32H750VBT6 中用于提供日历和时钟功能的低功耗外设,即使主电源关闭,只要 VBAT(备份电源)供电,RTC 仍能持续…

飞网自适应通信:IPv4 与 IPv6 环境下的高效互联

一、网络连接的难题与飞网的解决方案 在日常生活中,我们常常会碰到这样的场景:在家用手机访问公司电脑里的重要文件,或者远程连接家里的NAS设备查看照片和视频。这些操作都需要设备之间建立起安全又稳定的连接。然而,现实中的网络…

拉格朗日多项式

最近打的几个比赛没意思,不是不会就是不会。不过比赛完后看到别人的WP,感觉受益匪浅。先看一个多项式:当输入Xi时会得到一个Si,要求输入一定数量的xi 来求[c] 当可以输入的x个数与c的个数相同时,可以用矩阵直接求解。(…