日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析

發布時間:2025/3/17 javascript 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本文源碼:GitHub·點這里 || GitEE·點這里

一、ClickHouse簡介

1、基礎簡介

Yandex開源的數據分析的數據庫,名字叫做ClickHouse,適合流式或批次入庫的時序數據。ClickHouse不應該被用作通用數據庫,而是作為超高性能的海量數據快速查詢的分布式實時處理平臺,在數據匯總查詢方面(如GROUP BY),ClickHouse的查詢速度非常快。

2、數據分析能力

  • OLAP場景特征
· 大多數是讀請求 · 數據總是以相當大的批(> 1000 rows)進行寫入 · 不修改已添加的數據 · 每次查詢都從數據庫中讀取大量的行,但是同時又僅需要少量的列 · 寬表,即每個表包含著大量的列 · 較少的查詢(通常每臺服務器每秒數百個查詢或更少) · 對于簡單查詢,允許延遲大約50毫秒 · 列中的數據相對較小: 數字和短字符串(例如,每個URL 60個字節) · 處理單個查詢時需要高吞吐量(每個服務器每秒高達數十億行) · 事務不是必須的 · 對數據一致性要求低 · 每一個查詢除了一個大表外都很小 · 查詢結果明顯小于源數據,換句話說,數據被過濾或聚合后能夠被盛放在單臺服務器的內存中
  • 列式數據存儲

(1)、行式數據

(2)、列式數據

(3)、對比分析

分析類查詢,通常只需要讀取表的一小部分列。在列式數據庫中可以只讀取需要的數據。數據總是打包成批量讀取的,所以壓縮是非常容易的。同時數據按列分別存儲這也更容易壓縮。這進一步降低了I/O的體積。由于I/O的降低,這將幫助更多的數據被系統緩存。

二、整合SpringBoot框架

該案例基于:Druid連接池和mybatis進行整合。Druid 1.1.10 版本 SQL Parser對clickhouse的開始提供支持。

1、核心依賴

<dependency><groupId>ru.yandex.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.1.53</version> </dependency>

2、配屬數據源

spring:datasource:type: com.alibaba.druid.pool.DruidDataSourceclick:driverClassName: ru.yandex.clickhouse.ClickHouseDriverurl: jdbc:clickhouse://127.0.0.1:8123/defaultinitialSize: 10maxActive: 100minIdle: 10maxWait: 6000

3、Druid連接池配置

@Configuration public class DruidConfig {@Resourceprivate JdbcParamConfig jdbcParamConfig ;@Beanpublic DataSource dataSource() {DruidDataSource datasource = new DruidDataSource();datasource.setUrl(jdbcParamConfig.getUrl());datasource.setDriverClassName(jdbcParamConfig.getDriverClassName());datasource.setInitialSize(jdbcParamConfig.getInitialSize());datasource.setMinIdle(jdbcParamConfig.getMinIdle());datasource.setMaxActive(jdbcParamConfig.getMaxActive());datasource.setMaxWait(jdbcParamConfig.getMaxWait());return datasource;} }

4、參數配置類

@Component @ConfigurationProperties(prefix = "spring.datasource.click") public class JdbcParamConfig {private String driverClassName ;private String url ;private Integer initialSize ;private Integer maxActive ;private Integer minIdle ;private Integer maxWait ;// 省略 GET 和 SET }

這樣整合代碼就完成了。

三、操作案例演示

1、Mapper接口

public interface UserInfoMapper {// 寫入數據void saveData (UserInfo userInfo) ;// ID 查詢UserInfo selectById (@Param("id") Integer id) ;// 查詢全部List<UserInfo> selectList () ; }

這里就演示簡單的三個接口。

2、Mapper.xml文件

<mapper namespace="com.click.house.mapper.UserInfoMapper"><resultMap id="BaseResultMap" type="com.click.house.entity.UserInfo"><id column="id" jdbcType="INTEGER" property="id" /><result column="user_name" jdbcType="VARCHAR" property="userName" /><result column="pass_word" jdbcType="VARCHAR" property="passWord" /><result column="phone" jdbcType="VARCHAR" property="phone" /><result column="email" jdbcType="VARCHAR" property="email" /><result column="create_day" jdbcType="VARCHAR" property="createDay" /></resultMap><sql id="Base_Column_List">id,user_name,pass_word,phone,email,create_day</sql><insert id="saveData" parameterType="com.click.house.entity.UserInfo" >INSERT INTO cs_user_info(id,user_name,pass_word,phone,email,create_day)VALUES(#{id,jdbcType=INTEGER},#{userName,jdbcType=VARCHAR},#{passWord,jdbcType=VARCHAR},#{phone,jdbcType=VARCHAR},#{email,jdbcType=VARCHAR},#{createDay,jdbcType=VARCHAR})</insert><select id="selectById" parameterType="java.lang.Integer" resultMap="BaseResultMap">select<include refid="Base_Column_List" />from cs_user_infowhere id = #{id,jdbcType=INTEGER}</select><select id="selectList" resultMap="BaseResultMap" >select<include refid="Base_Column_List" />from cs_user_info</select> </mapper>

這里 create_day 是以字符串的方式在轉換,這里需要注意下。

3、控制層接口

@RestController @RequestMapping("/user") public class UserInfoController {@Resourceprivate UserInfoService userInfoService ;@RequestMapping("/saveData")public String saveData (){UserInfo userInfo = new UserInfo () ;userInfo.setId(4);userInfo.setUserName("winter");userInfo.setPassWord("567");userInfo.setPhone("13977776789");userInfo.setEmail("winter");userInfo.setCreateDay("2020-02-20");userInfoService.saveData(userInfo);return "sus";}@RequestMapping("/selectById")public UserInfo selectById () {return userInfoService.selectById(1) ;}@RequestMapping("/selectList")public List<UserInfo> selectList () {return userInfoService.selectList() ;} }

四、源代碼地址

GitHub·地址 https://github.com/cicadasmile/middle-ware-parent GitEE·地址 https://gitee.com/cicadasmile/middle-ware-parent

總結

以上是生活随笔為你收集整理的SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。