當前位置:
首頁 >
前端技术
> javascript
>内容正文
javascript
SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析
生活随笔
收集整理的這篇文章主要介紹了
SpringBoot2 整合 ClickHouse数据库,实现高性能数据查询分析
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
本文源碼:GitHub·點這里 || GitEE·點這里
一、ClickHouse簡介
1、基礎簡介
Yandex開源的數據分析的數據庫,名字叫做ClickHouse,適合流式或批次入庫的時序數據。ClickHouse不應該被用作通用數據庫,而是作為超高性能的海量數據快速查詢的分布式實時處理平臺,在數據匯總查詢方面(如GROUP BY),ClickHouse的查詢速度非常快。
2、數據分析能力
- OLAP場景特征
- 列式數據存儲
(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: 60003、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数据库,实现高性能数据查询分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 怎样撑开div
- 下一篇: FMS(Flash Media Serv