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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/739109.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据结构】特殊的线性表——栈

&#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;个人主页&#x1f388;&#x1f388;&#x1f388;&#x1f388;&#x1f388; &#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;&#x1f9e7;数据结构专栏&#x1f388;&#x1f388;&#x1f388;&…

【毕业论文】基于Python的论文管理系统设计与实现+核心内容

&#x1f50d; “学术助手”&#xff1a;基于Python的论文管理系统设计与实现 在学术研究的世界里&#xff0c;论文管理是一项既繁琐又重要的任务。从文献收集、资料整理到论文撰写和版本控制&#xff0c;每一个环节都对研究工作的效率和质量有着直接影响。本文将介绍如何利用…

[leetcode 45][跳跃游戏||]

[leetcode 45][跳跃游戏||] 给定一个长度为 n 的 0 索引整数数组 nums。初始位置为 nums[0]。 每个元素 nums[i] 表示从索引 i 向前跳转的最大长度。换句话说&#xff0c;如果你在 nums[i] 处&#xff0c;你可以跳转到任意 nums[i j] 处: 0 < j < nums[i] i j < n …

torch.cuda.is_available()=False

问题&#xff1a; 显示torch.cuda.is_available()False 解决办法&#xff1a;说明这个虚拟环境不可用&#xff0c;删除虚拟环境&#xff0c;重建一个新的虚拟环境 1、删除原来的虚拟环境&#xff0c;假如原虚拟环境为pytorch-old&#xff0c;输入以下命令&#xff0c;先退出当…

供应一体化可视化负压自动放水器

老顾客总会再来&#xff0c;新顾客也会有 没有谁能永远照顾你生意 所以放过自己 不要总觉得自己 哪儿做错了 用心做好每一款产品和售后 供应一体化可视化负压自动放水器 一、产品介绍 负压自动放水器是一种自动双向功能自动放水装置 &#xff0c;现在煤矿上主要防止管道阻塞、…

vsto 打开excel同时同花顺插件自动登录报错

excelApp.Workbooks.Open(path, false); Svstem,Runtime,Interopservices,COMException(0x800706BE):远程过程调用失败。(号常来自 HRESULT:0X800706BE)在 Micosot olieieroo.Excelworbols0penstma fiename.0hiectUodatelinks 0biectReadony 0hedtfomat 0hiectPaswond. 0hectwt…

基于SWOT法的信阳本土房地产企业现状及对策分析

目 录 摘要 1 Abstract 1 1绪论 2 2信阳市房地产企业概述 2 2.1中小城市房地产企业概念 2 2.2信阳本土房地产企业定位 3 2.2.1信阳市概况 3 2.2.2信阳市城市规划 3 2.2.3信阳房地产企业概况 4 2.3信阳市本土房地产企业特点 5 2.4研究信阳市本土房地产企业的必要性 6 3运用SWOT…

KAFKA入门教程

目录 1.安装kafka 2.安装kafkamanager可视化工具 3.springboot整合kafka 1.pom导包 2.启动类和yml配置 3.代码演示 编写生产者&#xff1a; 消费者&#xff1a; 1.安装kafka 进入kafka官网下载对应版本kafka kafka官网地址&#xff1a;Apache Kafka kafka是使用Scal…

【阿里云系列】-如何实现两个VPC网络资源互通

背景 由于实际项目预算有限&#xff0c;两套环境虽然分别属于不同的专有网络即不同的VPC&#xff0c;但是希望借助一台运维机器实现对两个环境的监控和日常的运维操作 网络架构 如下是需要实现的外网架构图&#xff0c;其中希望实现UAT环境的一台windows的堡垒机可以访问生产…

python中的幂运算

在Python中&#xff0c;表示幂运算的运算符是 **。 这是唯一用于幂运算的运算符&#xff0c;没有其他运算符与它具有相同的功能。 例如&#xff1a; # 使用 ** 运算符进行幂运算 result 2 ** 3 # 结果是 8&#xff0c;因为 2 的 3 次方等于 8 print(result) 除了 ** 运算符…

Spring Cloud集成nacos配置中心

1.添加Nacos Config依赖 打开nacos-config-demo的pom.xml文件并添加以下两个依赖项 项目的配置文件中通常包括数据库连接配置项、日志输出配置项、Redis连接配置项、服务注册配置项等内容&#xff0c;如spring-cloud-alibaba-nacos-config-base-demo项目中就包含数据库连接配置…

数据守护神:自动备份数据的重要性与方案

在数字化时代&#xff0c;数据已经成为我们生活与工作的核心。无论是个人用户还是企业组织&#xff0c;数据的丢失或损坏都可能带来不可估量的损失。因此&#xff0c;自动备份数据的重要性不言而喻。自动备份数据不仅能够确保数据的实时更新和安全性&#xff0c;还能在数据丢失…

坐标变换(二维、三维)

文章目录 一、四种空间1.1 定义和对比1.2 齐次坐标系 二、刚性变换2.1 定义2.2 平移2.3 旋转2.3.1 二维2.3.1.1 绕原点2.3.1.2 绕任意点 2.3.2 三维2.3.2.1 绕x轴2.3.2.2 绕y轴2.3.2.3 绕z轴 一、四种空间 1.1 定义和对比 标量空间&#xff1a;只有标量&#xff1b;向量空间&…

使用gnvm下载nodejs和npm

目录 前言 一、下载gnvm 二、利用gnvm下载nodejs 三、下载对应版本的npm 四、gnvm常用的命令 总结 前言 由于之前下载的版本过低&#xff0c;需要升级版本。但在使用gnvm升级node版本时遇到了一系列的问题&#xff0c;索性就把nodejs全部删除&#xff0c;重新用gnvm在下…

网络请求与数据解析

urllib是Python自带的标准库中用于网络请求的库 &#xff0c;无需安装&#xff0c;直接引用即可。通常用于爬虫开发、API&#xff08;应用程序编程接口&#xff09;数据获取和测试。 urllib库的几个模块&#xff1a; urllib.request :用于打开和读取URLurllib.error:包含提出…

羊大师揭秘羊奶滋养,养生的新黄金选择

羊大师揭秘羊奶滋养&#xff0c;养生的新黄金选择 羊奶&#xff0c;这个自古以来的天然营养佳品&#xff0c;近年来逐渐受到现代人的青睐&#xff0c;成为养生的新黄金选择。它以其独特的营养价值和滋养功效&#xff0c;为追求健康生活的我们提供了全新的养生视角。 羊奶的滋…

LeetCode # 1161. 最大层内元素和

1161. 最大层内元素和 题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层&#xff0c;而根节点的子节点位于第 2 层&#xff0c;依此类推。 请返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个。…

Vue:自动按需导入element-plus图标

自动导入使用 unplugin-icons 和 unplugin-auto-import 从 iconify 中自动导入任何图标集。 完整vite.config.js参考模板 https://download.csdn.net/download/ruancexiaoming/88928539 动态导入图标参考 https://blog.csdn.net/ruancexiaoming/article/details/136568219 导入…

几个redis常用命令

转载说明&#xff1a;如果您喜欢这篇文章并打算转载它&#xff0c;请私信作者取得授权。感谢您喜爱本文&#xff0c;请文明转载&#xff0c;谢谢。 ping&#xff1a;测试连接是否存活 例如&#xff1a;测试当前redis数据库是否存活 127.0.0.1:6379> ping #返回PONG&am…

python学习28

前言&#xff1a;相信看到这篇文章的小伙伴都或多或少有一些编程基础&#xff0c;懂得一些linux的基本命令了吧&#xff0c;本篇文章将带领大家服务器如何部署一个使用django框架开发的一个网站进行云服务器端的部署。 文章使用到的的工具 Python&#xff1a;一种编程语言&…