ClickHouse学习

ClickHouse是由C++编写的列式存储数据库(DBMS),主要用来在线分析处理查询(OLTP),能够用Sql查询生成的实时数据分析报告。

适用场景

大多数是读请求 、数据总是批量写入 、不更新或少更新数据、每次都是读取大量的行、宽表(有大量列的表,这些列中已经冗余所需数据)、简单查询 、处理单个查询需要高吞吐量、无需事务,数据一致性要求低

  1. 实时分析:ClickHouse能够处理大规模数据集的实时查询和分析,非常适合需要在大数据集上进行快速数据分析和报告生成的场景。
  2. 日志分析:由于其高性能和实时处理能力,ClickHouse成为了处理大量日志数据的理想选择,能够将日志数据快速导入并执行复杂的查询和分析。
  3. 时序数据处理:特别适用于处理时间序列数据,如传感器数据、监控数据、日志数据等,能够高效地存储和查询大量的时间序列数据。
  4. 数据仓库:作为企业数据仓库的核心组件,ClickHouse用于存储和处理大量结构化和半结构化数据,提供快速的数据加载、聚合和查询能力。
  5. 实时监控:可以实时处理和分析监控数据,如网络流量数据、服务器性能数据等,快速生成实时报告和仪表盘。
  6. 大数据分析和处理:ClickHouse能够在毫秒级别内对海量数据进行实时查询和分析,支持高并发查询和数据聚合,是大数据分析和处理的理想选择。
  7. 商业智能领域(BI):适用于商业智能领域,能够被广泛应用于广告流量、Web、App流量、电信、金融、电子商务、信息安全、网络游戏、物联网等多个其他领域。
  8. OLAP场景:ClickHouse是面向联机分析处理的列式数据库,支持SQL查询,尤其适用于基于大宽表的聚合分析查询,查询性能非常好。

列式存储的优缺点:

优点 缺点
1. 数据检索速度快 1. 不适合存储复杂结构的数据
2. 易于进行数据分析 聚合、计数、求和等 2. 可扩展性有限
3. 数据处理效率高 3. 对事务处理的支持不如关系型数据库
4. 通常具有较好的可靠性 4. 不适用于需要复杂查询的场景
5. 适用于大规模数据存储 同列数据类型相同,便于数据压缩,可以节省空间 5. 需要自行处理一致性和完整性问题

ClickHouse几大特点

 1、涵盖了标准的Sql语法,如DDL、DML。具备DBMS所具备的功能如:

  1. 数据定义:允许用户定义数据结构、设置数据的约束条件以及建立相应的数据库模式。
  2. 数据操纵:提供了对数据进行插入、删除、修改和查询的能力。
  3. 数据完整性:确保数据的一致性和准确性,通过强制实施预定义的规则和约束条件。
  4. 并发控制:协调多个用户对数据的同时访问,防止数据出现冲突或不一致。
  5. 数据安全性:通过权限控制和认证机制来保护数据,确保只有授权用户才能访问和修改数据。
  6. 数据恢复:提供故障恢复机制,确保在发生故障时能够恢复数据,并保持数据的一致性。

2、多样化引擎

        把表级的存储引擎插件化,根据表的不同需求可以设定不同的存储引擎(比如可以使用Hive的引擎)。目前包括合并树、日志、接口和其他四大类20多种引擎。

3、高吞吐

        采用LSM Tree结构,数据顺序写,数据插入后不可更改,更新操作将携带时间戳或版本号,在后台定期合并携带最新时间戳或版本号的数据。

4、数据分区与线程级并行

        数据分区可以避免全表扫描,单个操作充分利用多线程压榨cpu性能,但是也导致了qps(查询)性能低。

数据类型

ClickHouse支持以下主要数据类型:

  1. UInt8, UInt16, UInt32, UInt64: 无符号整数类型,分别占用1、2、4、8字节。
  2. Int8, Int16, Int32, Int64: 有符号整数类型,分别占用1、2、4、8字节。
  3. Float32, Float64: 浮点数类型,分别占用4、8字节。
  4. String: 字符串类型,使用UTF-8编码。
  5. Date: 日期类型,使用日期格式存储。
  6. DateTime: 日期时间类型,使用日期和时间格式存储。
  7. Enum: 枚举类型,根据特定的字典进行编码存储。

此外,ClickHouse还支持其他一些数据类型,如Array、Nested、Tuple等复杂数据类型。

表引擎 

ClickHouse表引擎是指在ClickHouse中存储数据的不同方式或存储结构,不同的表引擎在存储和查询数据时会有不同的性能表现和特点。

下面是一些ClickHouse常用的表引擎及其简要介绍:

  1. MergeTree:MergeTree是ClickHouse最常用的表引擎之一,主要用于存储大量有序数据,支持范围查询、聚合和快速插入等操作。

  2. CollapsingMergeTree:在MergeTree的基础上增加了合并重复行的功能,用于去除重复数据。

  3. ReplacingMergeTree:MergeTree的扩展,用于支持根据主键替换数据,适用于需要更新数据的场景。

  4. SummingMergeTree:MergeTree的扩展,支持存储汇总后的数据,适合存储预先聚合好的数据。

  5. AggregatingMergeTree:基于MergeTree,用于在持续更新的数据流中定期计算聚合数据。

  6. Distributed:分布式表引擎,用于将数据分布在集群中不同的物理节点上。

除了上面列举的表引擎外,ClickHouse还支持其他不同类型的表引擎,每种引擎都有其特定的使用场景和优势。选择合适的表引擎可以更好地满足数据存储和查询的需求。

待续。。。 

你可能感兴趣的:(clickhouse,学习,数据库)