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数据库的优势


相关文章
|
3月前
|
存储 SQL 监控
ClickHouse 应用剖析:设计理念、机制与实践
ClickHouse 是一款高性能的列式数据库管理系统,主要用于实时的大数据分析场景。它由俄罗斯 Yandex 公司开源于 2016 年,在网页日志分析、物联网监控、广告计费等领域有广泛应用。ClickHouse 通过列式存储、向量化执行和分布式架构,实现对海量数据的快速查询分析。本文将介绍 ClickHouse 的设计理念,以及在实际使用中如何处理数据删除更新、冷热数据分离等问题,并提供常见配置的调优建议和异常问题的处理方法。
282 14
ClickHouse 应用剖析:设计理念、机制与实践
|
2月前
|
关系型数据库 MySQL 定位技术
MySQL与Clickhouse数据库:探讨日期和时间的加法运算。
这一次的冒险就到这儿,期待你的再次加入,我们一起在数据库的世界中找寻下一个宝藏。
80 9
|
1月前
|
SQL 数据库
软考软件评测师——数据库系统应用
本文介绍了关系数据库的基础知识与应用,涵盖候选码定义、自然连接特点、实体间关系(如1:n和m:n)、属性分类(复合、多值与派生属性)以及数据库设计规范。同时详细解析了E-R图转换原则、范式应用(如4NF)及Armstrong公理体系。通过历年真题分析,结合具体场景(如银行信用卡额度、教学管理等),深入探讨了候选键求解、视图操作规范及SQL语句编写技巧。内容旨在帮助读者全面掌握关系数据库理论与实践技能。
|
5月前
|
中间件 关系型数据库 数据库
docker快速部署OS web中间件 数据库 编程应用
通过Docker,可以轻松地部署操作系统、Web中间件、数据库和编程应用。本文详细介绍了使用Docker部署这些组件的基本步骤和命令,展示了如何通过Docker Compose编排多容器应用。希望本文能帮助开发者更高效地使用Docker进行应用部署和管理。
137 19
|
5月前
|
存储 关系型数据库 分布式数据库
PolarDB开源数据库进阶课16 接入PostGIS全功能及应用举例
本文介绍了如何在PolarDB数据库中接入PostGIS插件全功能,实现地理空间数据处理。此外,文章还提供了使用PostGIS生成泰森多边形(Voronoi diagram)的具体示例,帮助用户理解其应用场景及操作方法。
170 1
|
6月前
|
缓存 NoSQL JavaScript
Vue.js应用结合Redis数据库:实践与优化
将Vue.js应用与Redis结合,可以实现高效的数据管理和快速响应的用户体验。通过合理的实践步骤和优化策略,可以充分发挥两者的优势,提高应用的性能和可靠性。希望本文能为您在实际开发中提供有价值的参考。
132 11
|
7月前
|
人工智能 容灾 关系型数据库
【AI应用启航workshop】构建高可用数据库、拥抱AI智能问数
12月25日(周三)14:00-16:30参与线上闭门会,阿里云诚邀您一同开启AI应用实践之旅!
|
7月前
|
SQL Unix OLAP
ClickHouse安装教程:开启你的列式数据库之旅
ClickHouse 是一个高性能的列式数据库管理系统,适用于在线分析处理(OLAP)。本文介绍了 ClickHouse 的基本使用步骤,包括下载二进制文件、安装应用、启动服务器和客户端、创建表、插入数据以及查询新表。还提到了图形客户端 DBeaver 的使用,使操作更加直观。通过这些步骤,用户可以快速上手并利用 ClickHouse 的强大性能进行数据分析。
581 4
|
8月前
|
架构师 数据库
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
数据库乐观锁是必知必会的技术栈,也是大厂面试高频,十分重要,本文解析数据库乐观锁。关注【mikechen的互联网架构】,10年+BAT架构经验分享。
大厂面试高频:数据库乐观锁的实现原理、以及应用场景
|
8月前
|
缓存 NoSQL 数据库
运用云数据库 Tair 构建缓存为应用提速,完成任务得苹果音响、充电套装等好礼!
本活动将带大家了解云数据库 Tair(兼容 Redis),通过体验构建缓存以提速应用,完成任务,即可领取罗马仕安卓充电套装,限量1000个,先到先得。邀请好友共同参与活动,还可赢取苹果 HomePod mini、小米蓝牙耳机等精美好礼!

热门文章

最新文章

推荐镜像

更多