ClickHouse是由C++编写的列式存储数据库(DBMS),主要用来在线分析处理查询(OLTP),能够用Sql查询生成的实时数据分析报告。
适用场景
大多数是读请求 、数据总是批量写入 、不更新或少更新数据、每次都是读取大量的行、宽表(有大量列的表,这些列中已经冗余所需数据)、简单查询 、处理单个查询需要高吞吐量、无需事务,数据一致性要求低
- 实时分析:ClickHouse能够处理大规模数据集的实时查询和分析,非常适合需要在大数据集上进行快速数据分析和报告生成的场景。
- 日志分析:由于其高性能和实时处理能力,ClickHouse成为了处理大量日志数据的理想选择,能够将日志数据快速导入并执行复杂的查询和分析。
- 时序数据处理:特别适用于处理时间序列数据,如传感器数据、监控数据、日志数据等,能够高效地存储和查询大量的时间序列数据。
- 数据仓库:作为企业数据仓库的核心组件,ClickHouse用于存储和处理大量结构化和半结构化数据,提供快速的数据加载、聚合和查询能力。
- 实时监控:可以实时处理和分析监控数据,如网络流量数据、服务器性能数据等,快速生成实时报告和仪表盘。
- 大数据分析和处理:ClickHouse能够在毫秒级别内对海量数据进行实时查询和分析,支持高并发查询和数据聚合,是大数据分析和处理的理想选择。
- 商业智能领域(BI):适用于商业智能领域,能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等多个其他领域。
- OLAP场景:ClickHouse是面向联机分析处理的列式数据库,支持SQL查询,尤其适用于基于大宽表的聚合分析查询,查询性能非常好。
列式存储的优缺点:
优点 | 缺点 | |
---|---|---|
1. 数据检索速度快 | 1. 不适合存储复杂结构的数据 | |
2. 易于进行数据分析 | 聚合、计数、求和等 | 2. 可扩展性有限 |
3. 数据处理效率高 | 3. 对事务处理的支持不如关系型数据库 | |
4. 通常具有较好的可靠性 | 4. 不适用于需要复杂查询的场景 | |
5. 适用于大规模数据存储 | 同列数据类型相同,便于数据压缩,可以节省空间 | 5. 需要自行处理一致性和完整性问题 |
ClickHouse几大特点
1、涵盖了标准的Sql语法,如DDL、DML。具备DBMS所具备的功能如:
- 数据定义:允许用户定义数据结构、设置数据的约束条件以及建立相应的数据库模式。
- 数据操纵:提供了对数据进行插入、删除、修改和查询的能力。
- 数据完整性:确保数据的一致性和准确性,通过强制实施预定义的规则和约束条件。
- 并发控制:协调多个用户对数据的同时访问,防止数据出现冲突或不一致。
- 数据安全性:通过权限控制和认证机制来保护数据,确保只有授权用户才能访问和修改数据。
- 数据恢复:提供故障恢复机制,确保在发生故障时能够恢复数据,并保持数据的一致性。
2、多样化引擎
把表级的存储引擎插件化,根据表的不同需求可以设定不同的存储引擎(比如可以使用Hive的引擎)。目前包括合并树、日志、接口和其他四大类20多种引擎。
3、高吞吐
采用LSM Tree结构,数据顺序写,数据插入后不可更改,更新操作将携带时间戳或版本号,在后台定期合并携带最新时间戳或版本号的数据。
4、数据分区与线程级并行
数据分区可以避免全表扫描,单个操作充分利用多线程压榨cpu性能,但是也导致了qps(查询)性能低。
数据类型
ClickHouse支持以下主要数据类型:
- UInt8, UInt16, UInt32, UInt64: 无符号整数类型,分别占用1、2、4、8字节。
- Int8, Int16, Int32, Int64: 有符号整数类型,分别占用1、2、4、8字节。
- Float32, Float64: 浮点数类型,分别占用4、8字节。
- String: 字符串类型,使用UTF-8编码。
- Date: 日期类型,使用日期格式存储。
- DateTime: 日期时间类型,使用日期和时间格式存储。
- Enum: 枚举类型,根据特定的字典进行编码存储。
此外,ClickHouse还支持其他一些数据类型,如Array、Nested、Tuple等复杂数据类型。
表引擎
ClickHouse表引擎是指在ClickHouse中存储数据的不同方式或存储结构,不同的表引擎在存储和查询数据时会有不同的性能表现和特点。
下面是一些ClickHouse常用的表引擎及其简要介绍:
MergeTree:MergeTree是ClickHouse最常用的表引擎之一,主要用于存储大量有序数据,支持范围查询、聚合和快速插入等操作。
CollapsingMergeTree:在MergeTree的基础上增加了合并重复行的功能,用于去除重复数据。
ReplacingMergeTree:MergeTree的扩展,用于支持根据主键替换数据,适用于需要更新数据的场景。
SummingMergeTree:MergeTree的扩展,支持存储汇总后的数据,适合存储预先聚合好的数据。
AggregatingMergeTree:基于MergeTree,用于在持续更新的数据流中定期计算聚合数据。
Distributed:分布式表引擎,用于将数据分布在集群中不同的物理节点上。
除了上面列举的表引擎外,ClickHouse还支持其他不同类型的表引擎,每种引擎都有其特定的使用场景和优势。选择合适的表引擎可以更好地满足数据存储和查询的需求。文章来源:https://www.toymoban.com/news/detail-832525.html
待续。。。 文章来源地址https://www.toymoban.com/news/detail-832525.html
到了这里,关于ClickHouse学习的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!