激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - SpringBoot2 整合 ClickHouse數據庫案例解析

SpringBoot2 整合 ClickHouse數據庫案例解析

2020-08-11 00:08知了一笑 Java教程

這篇文章主要介紹了SpringBoot2 整合 ClickHouse數據庫案例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下

一、ClickHouse簡介

1、基礎簡介

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

2、數據分析能力

OLAP場景特征

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

列式數據存儲

(1)、行式數據

SpringBoot2 整合 ClickHouse數據庫案例解析

(2)、列式數據

SpringBoot2 整合 ClickHouse數據庫案例解析

(3)、對比分析

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

二、整合SpringBoot框架

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

1、核心依賴

?
1
2
3
4
5
<dependency>
  <groupId>ru.yandex.clickhouse</groupId>
  <artifactId>clickhouse-jdbc</artifactId>
  <version>0.1.53</version>
</dependency>

2、配屬數據源

?
1
2
3
4
5
6
7
8
9
10
spring:
 datasource:
  type: com.alibaba.druid.pool.DruidDataSource
  click:
   driverClassName: ru.yandex.clickhouse.ClickHouseDriver
   url: jdbc:clickhouse://127.0.0.1:8123/default
   initialSize: 10
   maxActive: 100
   minIdle: 10
   maxWait: 6000

3、Druid連接池配置

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Configuration
public class DruidConfig {
  @Resource
  private JdbcParamConfig jdbcParamConfig ;
  @Bean
  public 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、參數配置類

?
1
2
3
4
5
6
7
8
9
10
11
@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接口

?
1
2
3
4
5
6
7
8
public interface UserInfoMapper {
  // 寫入數據
  void saveData (UserInfo userInfo) ;
  // ID 查詢
  UserInfo selectById (@Param("id") Integer id) ;
  // 查詢全部
  List<UserInfo> selectList () ;
}

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

2、Mapper.xml文件

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<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_info
    where 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、控制層接口

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
@RestController
@RequestMapping("/user")
public class UserInfoController {
  @Resource
  private 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

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:https://blog.51cto.com/14439672/2444313

延伸 · 閱讀

精彩推薦
1750
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 久久成人精品视频 | 亚洲一级簧片 | aa国产视频一区二区 | 91麻豆蜜桃一区二区三区 | 国产成人在线一区二区 | 午夜爽爽爽男女免费观看hd | 国产在线观看91一区二区三区 | 日本精品免费观看 | 999精品国产 | 色视频在线播放 | 成人国产精品久久 | 中国毛片在线观看 | 澳门一级淫片免费视频 | 国产精品99久久久久久宅女 | 视频一区二区三区在线 | 在线看小早川怜子av | free性欧美hd另类 | 日本黄肉网站在线观看 | 一本色道久久综合亚洲精品图片 | 草草视频在线播放 | 国产乱淫a∨片免费观看 | 国产成人av免费 | 色七七亚洲 | 欧美国产精品一区二区 | 在线观看国产日韩 | 午夜影视一区二区 | 国产91精品一区二区麻豆亚洲 | 欧美日韩免费在线观看视频 | 热99精品视频 | 久久精品亚洲精品国产欧美kt∨ | 久久久久国产成人免费精品免费 | 羞羞电影在线观看 | 欧美wwwwww | videos高潮 | 91看片资源 | 久久精品一区二区三区国产主播 | 激情午夜天 | 销魂美女一区二区 | 免费a级黄色片 | 免费黄色短视频网站 | 色网在线视频 |