大数据学习---快速了解clickhouse数据库

news/2024/10/21 3:24:12/

ClickHouse数据库介绍

ClickHouse是一款由Yandex开发的列式数据库管理系统(DBMS),适用于在线分析处理(OLAP)场景。它具有高性能、可扩展性、实时更新等特点,适用于处理大规模数据。

特点

  • 列式存储:ClickHouse采用列式存储,这使得它非常适合进行聚合计算,因为只需读取相关的列数据。

  • 向量引擎:ClickHouse使用向量引擎处理数据,能够实现高效的批量数据计算。

  • 实时更新:ClickHouse支持实时更新和删除数据,这在列式数据库中较为少见。

  • 数据压缩:ClickHouse对数据进行高效压缩,减少存储空间和I/O开销。

  • 分布式处理:ClickHouse支持分布式查询和数据处理,可以轻松扩展处理能力。

安装与配置

ClickHouse的安装相对简单,以下是在Ubuntu系统上的安装示例:

sudo apt-get update
sudo apt-get install -y clickhouse-server clickhouse-client

安装完成后,可以通过以下命令启动服务:

sudo service clickhouse-server start

使用clickhouse-client命令行工具连接到ClickHouse服务器:

clickhouse-client

基本概念

  • 数据库(Database):数据存储的逻辑空间。

  • 表(Table):存储数据的基本单位,由列组成。

  • 列(Column):表中的一个字段,所有数据按列存储。

  • 数据类型(Data Type):定义了列中数据的类型,如UInt32Float64String等。

示例

以下是一个简单的ClickHouse示例,包括创建数据库、表,以及插入和查询数据。

创建数据库

CREATE DATABASE example;

使用数据库

USE example;

创建表

CREATE TABLE example_table (id UInt32,name String,age UInt8,created_at DateTime
) ENGINE = MergeTree()
ORDER BY id;

这里我们创建了一个名为example_table的表,使用了MergeTree引擎,这是一种常用的ClickHouse表引擎。

插入数据

INSERT INTO example_table VALUES (1, 'Alice', 30, now()), (2, 'Bob', 25, now());

查询数据

查询所有数据:

SELECT * FROM example_table;

查询特定列:

SELECT name, age FROM example_table;

进行聚合计算:

SELECT sum(age) FROM example_table;

更新数据

ClickHouse支持使用ALTER语句更新数据:

ALTER TABLE example_table UPDATE age = 31 WHERE id = 1;

删除数据

ClickHouse支持使用ALTER语句删除数据:

ALTER TABLE example_table DELETE WHERE id = 1;

ClickHouse数据库表引擎介绍

ClickHouse是一种列式数据库管理系统,专为在线分析处理(OLAP)场景设计。ClickHouse提供了多种表引擎,每种表引擎都有其特定的用途和特性。以下是ClickHouse中一些常用的表引擎及其简要介绍。

1. MergeTree系列

MergeTree系列引擎是ClickHouse中最强大的引擎系列,适用于大多数分析场景。

1.1. MergeTree

  • 用途:适用于高负载的插入和查询场景。

  • 特点:支持数据分区、数据压缩、索引、数据副本等功能。

1.2.ReplacingMergeTree

  • 用途:用于有重复数据的场景,可以在合并分区时删除重复的数据。

  • 特点:通过VERSION列或TTL表达式来定义重复数据的保留规则。

1.3. SummingMergeTree

  • 用途:适用于聚合数据的场景,可以在合并分区时对数据进行预聚合。

  • 特点:只保留汇总列和主键列,其他列会被聚合。

1.4. AggregatingMergeTree

  • 用途:用于预先聚合数据的场景,可以显著提高聚合查询的性能。

  • 特点:需要定义聚合函数,并且数据在合并时会被聚合。

1.5. CollapsingMergeTree

  • 用途:用于处理具有折叠逻辑的数据,如取消操作。

  • 特点:通过SIGN列来标记数据的折叠状态。

1.6. VersionedCollapsingMergeTree

  • 用途:是CollapsingMergeTree的改进版,可以处理带有版本的数据折叠。

  • 特点:除了SIGN列,还使用VERSION列来处理折叠逻辑。

2. Log系列

Log系列引擎适用于数据写入后很少进行修改的场景。

2.1. TinyLog

  • 用途:用于非常小的表或测试场景。

  • 特点:数据存储在单个文件中,不支持并发读取。

2.2. StripeLog

  • 用途:用于小到中等大小的表。

  • 特点:数据按列存储,支持并发读取。

2.3. Log

  • 用途:类似于TinyLog,但支持并发读取。

  • 特点:数据存储在多个文件中,每个列一个文件。

3. Integration系列

Integration系列引擎用于与外部系统集成。

3.1. Kafka

  • 用途:用于从Kafka主题中读取数据。

  • 特点:支持从Kafka流中消费数据并存储到ClickHouse表中。

3.2. MySQL

  • 用途:用于将MySQL表映射到ClickHouse中。

  • 特点:可以查询远程MySQL数据库中的数据,无需数据迁移。

4. Special系列

Special系列引擎用于特殊用途。

4.1. Distributed

  • 用途:用于分布式查询。

  • 特点:不是实际存储数据的引擎,而是用于在多个服务器上分布式查询数据。

4.2. MaterializedView

  • 用途:用于创建物化视图。

  • 特点:物化视图可以自动更新,以反映基础表的变化。

5. 其他表引擎

ClickHouse还提供了其他一些表引擎,如URLFileMemory等,用于特定场景。

结论

ClickHouse是一款强大的列式数据库管理系统,适用于快速、高效的大规模数据分析。通过上述示例,我们可以看到ClickHouse的易用性和强大的数据处理能力。在实际应用中,ClickHouse被广泛应用于互联网、金融、物联网等领域的数据分析场景。ClickHouse的表引擎是其强大功能的核心部分,每种表引擎都针对特定场景进行了优化。选择合适的表引擎对于实现高效的数据存储和查询至关重要。在实际使用中,应根据业务需求和数据特点来选择最合适的表引擎。


http://www.ppmy.cn/news/1540681.html

相关文章

监控易监测对象及指标之:Microsoft Message Queue(MSMQ)监控

监控易是一款强大的监控工具,能够实时监控各类IT设施和应用程序的性能指标。对于Microsoft Message Queue(简称MSMQ)的监控,监控易提供了详尽的指标,以确保企业能够准确掌握消息队列的运行状况。 在MSMQ的监控中&#…

jquery实现点击菜单实现高德地图定位点与数据展示联动效果

🍊jquery实现点击菜单实现高德地图定位点与数据展示联动效果 版本介绍: jQuery v3.7.1高德地图JS API 2.0 代码仓库 ⭐ Gitee:实现点击菜单实现高德地图定位点与数据展示联动效果 1.启动说明 📔 推荐VS Code编辑器插件Live Ser…

SDUT数据结构与算法第四次机测

7-1 统计工龄 给定公司 n 名员工的工龄,要求按工龄增序输出每个工龄段有多少员工。 输入格式: 输入首先给出正整数 n(≤105),即员工总人数;随后给出 n 个整数,即每个员工的工龄,范围在 [0, 5…

解决一个android service启动无法开文件的问题

问题描述 android hal层一般是通过service给系统提供服务的。一般需要将service配置为开机启动。调试阶段,我直接将service push到板卡上,进行调试,未出现问题无法开的问题。在最后集成完成后,放到板卡上,出现启动无法…

VMware虚拟机三种网络模式详解

主要内容 1. 桥接模式2. NAT模式VMware Network Adapter VMnet8虚拟网卡的作用 3. 仅主机模式VMware Network Adapter VMnet1虚拟网卡的作用设置虚拟机联通外网 4. 总结 参考资料: 1.Vmware虚拟机三种网络模式详解 VMware虚拟机三种网络模式详解之Bridged&#xff0…

基于SpringBoot的出租车拼车系统【附源码】

基于SpringBoot的出租车拼车系统 效果如下: 系统首页界面 用户注册界面 拼单信息界面 公告信息界面 管理员登录界面 管理员功能界面 用户界面 司机界面 拼车订单界面 拼单信息界面 拼单申请界面 司机主界面 研究背景 随着科学技术的不断发展,计算机现…

java关于如何实现读取各种类型的文件核心属性方法,比如获取标题和作者、主题等;附带远程的https的地址文件读取方法;

有两种方法: 通过提供的现成api进行调用读取pdf文件,或doc、xlsx、pptx文件;可能商业需要付费 https://www.e-iceblue.cn/pdf_java_document_operation/set-pdf-document-properties-in-java.html Spire.PDF for Java import com.spire.pdf…

electron-vite_11各平台 Electron 镜像存到哪里了?

建议设置了 NPM 镜像和 Electron 源;速度会快一点;electron-builder 在打包的时候,会根据系统的不同去各自的 NPM 缓存目录下查找对应版本的 Electron 源; 各操作系统对应的 NPM 缓存路径分别为: Linux: $XDG_CACHE_H…