Clickhouse数据库应用

简介: Clickhouse数据库应用

Clickhouse 官网地址:

https://clickhouse.tech

ClickHouse是一个由俄罗斯的Yandex于2016年开源的面向OLAP(联机分析处理)的列式数据库管理系统(DBMS)。它采用C++语言开发,以卓越的查询性能著称,并且在基准测试中超越了众多主流的列式数据库。

ClickHouse的特点和应用优势

  1. 列式存储:ClickHouse采用列式存储方式,对于列的聚合、计数、求和等统计操作,其性能优于行式存储。同时,由于某一列的数据类型都是相同的,这使得数据压缩更为高效,可以节省磁盘空间并提高cache的利用率。
  2. 高性能:ClickHouse充分利用所有可用的硬件资源,以尽可能快地处理每个查询。其单个查询(解压缩后,仅使用的列)的峰值处理性能超过每秒2TB。此外,ClickHouse集群的每台服务器每秒能处理数亿到十亿多行和数十千兆字节的数据。
  3. 实时查询:ClickHouse允许使用类SQL实时查询生成分析数据报告,这对于需要快速响应的在线分析场景非常有用。
  4. 多样化引擎:ClickHouse提供了丰富的数据类型、数据库引擎和表引擎,以满足不同场景的需求。
  5. 简单易用:ClickHouse的安装和维护相对简单,同时支持跨数据中心部署,方便用户进行扩展和管理。

应用场景

ClickHouse数据库的应用场景主要集中在那些需要高效处理和分析大量数据的领域。

  1. 商业智能(BI):ClickHouse常被用于商业智能领域,为企业提供实时的数据分析和报告功能。它能够处理大量的数据,并快速生成分析结果,帮助企业做出更明智的决策。
  2. 广告流量和Web/App流量分析:对于需要分析大量广告流量或Web/App用户行为的场景,ClickHouse能够高效地处理这些数据,并提供详细的用户行为分析报告,帮助企业优化广告策略或提升用户体验。
  3. 电信行业:电信行业需要处理大量的通信数据,包括通话记录、用户信息等。ClickHouse能够高效地存储和查询这些数据,为电信企业提供实时的数据分析服务。
  4. 金融领域:金融行业对数据的实时性和准确性要求极高。ClickHouse能够处理金融交易数据、用户行为数据等,为金融机构提供实时的风险控制和决策支持。
  5. 电子商务:电子商务企业需要分析用户的购物行为、商品销售情况等数据,以优化商品推荐、提升用户体验。ClickHouse能够快速处理这些数据,并生成相应的分析报告。
  6. 信息安全和日志分析:对于需要分析大量日志数据以检测潜在安全威胁的场景,ClickHouse能够提供高效的日志处理和分析能力,帮助企业及时发现并应对安全风险。
  7. 网络游戏和物联网:网络游戏和物联网领域也产生了大量的数据需要处理和分析。ClickHouse能够应对这些领域的数据处理需求,为企业提供实时的数据分析和价值挖掘服务。

操作数据库

  •    建表

1.    本地表 - 用来批量写数据使用,通常后缀带_local标识

CREATE TABLE pricing.t_test_local
(
 
    UPDATED_DATE DateTime,
 
    SCORE_RUN_ID String,
 
    ORGAN2 String,
 
    CHANNEL Nullable(String),
 
    RENEW_TYPE Nullable(String),
 
    PRICING_COUNT Decimal(3, 0),
 
    ACTUAL_PREMIUMN Nullable(Decimal(3, 0)),
 
)
ENGINE = ReplicatedReplacingMergeTree('/clickhouse/tables/t_test_local/{shard}','{replica}',UPDATED_DATE)
PARTITION BY tuple(ORGAN2)
ORDER BY tuple(SCORE_RUN_ID)
SETTINGS index_granularity = 8192;
 
--释义
pricing: 指具体数据库用户名
Nullable:修饰列类型标识该列可能为空
ReplicatedReplacingMergeTree:多副本去重合并树表引擎,具体可参考其他表引擎,如ReplicatedMergeTree可以使用ENGINE = ReplicatedMergeTree('/clickhouse/tables/{layer}-{shard}/t_test_local','{replica}')
ORGAN2:用来做数据分区的列
SCORE_RUN_ID:主键索引列

2.    分布式表 - 用来应用对接查询使用,指向本地表,通常后缀带_all标识

CREATE TABLE IF NOT EXISTS t_test_all  ON CLUSTER cluster_2_shard_2_replicas AS pricing.t_test_local
   ENGINE = Distributed('cluster_2_shard_2_replicas','pricing','t_test_local',rand())
 

--释义

cluster_2_shard_2_replicas:集群名称,建库时提前会创建好

  • 同步数据

可以借助数据同步工具同步,也可自行编写同步程序进行同步,可以采用Clickhouse JDBC进行PreparedStatement.addBatch()批量方式提交,不推荐使用Mybatis方式处理

<dependency>
    <groupId>com.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.4.1</version>
    <classifier>http</classifier>
</dependency>
  • 数据查询分析

可采用MyBatis或JDBC方式分析数据,基本与Oracle语法一致,一般分析结构:SELECT 列,SUM(指标) FROM 表名 WHERE ... GROUP BY 列

  • 注意事项

1)建议Clickhouse的分析维度列使用字符类型(String),指标列则使用数值类型(Decimal)

2)建议分区数量按总体表数量提前计算,每个分区可均匀分布1000万的数据量(假设一张表有1亿条,那么分区数为10个左右)

3)建议同步数据时批量提交的量为2000一组

4)存在空值或不确定的列请务必加上Nullable()将列类型包含进去,否则数据会写不进去,导致最终的数量对不上

5)上亿数据表统计查询耗时一般都在毫秒级别,如果达到秒级或更久需检查程序是否存在性能问题,可在数据库查询工具中对比(如dbeaver)

6)Clickhouse的数据压缩率常规表结构一般都在10%~20%之间,这也是其列式结构对于数据存储相比于OLTP数据库的优势


相关文章
|
12天前
|
缓存 关系型数据库 Java
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
不要将数据库中的“分库分表”理论盲目应用到 Elasticsearch
18 0
|
2天前
|
存储 关系型数据库 数据库
利用Python与SQLite构建轻量级数据库应用
在当今日益增长的数据处理需求下,数据库成为存储、检索和管理数据的关键技术。然而,对于小型项目或快速原型开发,大型数据库系统可能显得过于庞大和复杂。本文将介绍如何利用Python编程语言与SQLite轻量级数据库,快速搭建一个功能齐全、易于维护的数据库应用。我们将探讨SQLite数据库的特点、Python对SQLite的支持,并通过一个实际案例展示如何构建一个简单的数据库应用,为读者提供一种高效、灵活的解决方案。
|
4天前
|
运维 关系型数据库 分布式数据库
在数据库应用中遇到的问题及阿里云数据库解决方案
企业在面临数据库性能瓶颈、可扩展性问题、高可用性不足及运维复杂等挑战时,选择了阿里云数据库解决方案。阿里云RDS和PolarDB通过读写分离、自动化索引优化、多副本架构等提升性能和扩展性;多可用区部署、数据复制等增强高可用性和容灾能力;自动化运维工具简化管理,降低运维成本。实施后,性能大幅提升,可扩展性增强,高可用性提升,运维工作简化,为业务稳定和未来发展奠定基础。
44 0
|
7天前
|
关系型数据库 MySQL 数据库
ClickHouse(07)ClickHouse数据库引擎解析
ClickHouse支持多种数据库引擎,包括Atomic(默认)、MySQL、MaterializeMySQL、Lazy、PostgreSQL、MaterializedPostgreSQL。Atomic提供非阻塞的表操作和原子的表交换,有UUID标识和延迟删除功能。MySQL引擎允许与远程MySQL服务器交互,支持INSERT和SELECT,不支持RENAME操作。PostgreSQL引擎类似,可与远程PostgreSQL服务进行读写操作。SQLite引擎用于连接SQLite数据库。实验性引擎如MaterializeMySQL和MaterializedPostgreSQL用于实现实时数据同步。
247 5
|
11天前
|
消息中间件 Java Kafka
实时计算 Flink版产品使用合集之可以将数据写入 ClickHouse 数据库中吗
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
179 1
|
12天前
|
存储 人工智能 NoSQL
现代数据库技术演进与应用前景分析
本文探讨了现代数据库技术的演进历程及其在各领域的应用前景。首先介绍了传统数据库的局限性,随后分析了NoSQL、NewSQL以及分布式数据库等新兴技术的特点和优势。接着探讨了人工智能、物联网、大数据等领域对数据库技术提出的新要求,并展望了未来数据库技术的发展趋势与应用前景。
|
12天前
|
存储 NoSQL 搜索推荐
探索新一代数据库技术:基于图数据库的应用与优势
传统关系型数据库在处理复杂的关系数据时存在着诸多限制,而基于图数据库的新一代数据库技术则提供了更为灵活和高效的解决方案。本文将深入探讨图数据库的核心概念、应用场景以及与传统数据库相比的优势,带领读者一窥未来数据库技术的发展趋势。
|
12天前
|
存储 运维 Kubernetes
多态关联在数据库设计中的应用和解决方案
多态关联在数据库设计中的应用和解决方案
19 0
|
12天前
|
存储 算法 数据库
矢量数据库在图像识别与检索中的应用实践
【4月更文挑战第30天】本文探讨了矢量数据库在图像识别与检索中的应用,通过特征提取(如SIFT、SURF)、编码和相似度度量实现快速识别。在图像检索流程中,经过预处理、特征提取和编码后,矢量数据库用于查询相似特征,排序后展示给用户。实际案例显示,矢量数据库能提升电商平台的商品图像搜索效率和用户体验。随着技术发展,这一领域应用前景广阔。
|
12天前
|
机器学习/深度学习 搜索推荐 数据库
矢量数据库的未来发展趋势:新技术与应用展望
【4月更文挑战第30天】随着AI和机器学习的发展,矢量数据库在处理非结构化数据方面的重要性日益增强。预测到2028年,全球矢量数据库市场将从2023年的15亿美元增长至43亿美元。未来趋势包括:并行计算与分布式架构提升处理能力,硬件加速技术(如TPU和昇腾芯片)提高性能,自适应索引机制优化查询效率。应用领域将拓展至NLP、图像视频分析和推荐系统,为各行业带来更多创新和价值。