SpringBoot 2 통합 ClickHouse 데이터베이스 사례 분석
1.기초 소개
Yandex 오픈 소스 의 데이터 분석 데이터 베 이 스 는 ClickHouse 라 고 하 며 스 트림 이나 일괄 입고 에 적합 한 순차 데이터 입 니 다.클릭 하 우 스 는 유 니 버 설 데이터베이스 가 아 닌 초고 성능 의 대량의 데 이 터 를 빠르게 조회 하 는 분포 식 실시 간 처리 플랫폼 으로 데이터 집계 조회(예 를 들 어 GROUP BY)에서 클릭 하 우 스 는 조회 속도 가 매우 빠르다.
2.데이터 분석 능력
OLAP 장면 특징
데이터 일치 성에 대한 요구 가 낮다
(1)줄 데이터
(2)열 데이터
(3)비교 분석
분석 류 조 회 는 보통 표 의 일부분 만 읽 어야 한다.열 데이터베이스 에서 필요 한 데이터 만 읽 을 수 있 습 니 다.데 이 터 는 항상 대량으로 읽 기 때문에 압축 이 매우 쉽다.동시에 데 이 터 를 열 에 따라 각각 저장 하 는 것 도 압축 하기 쉽다.이것 은 I/O 의 부 피 를 더욱 낮 추 었 다.I/O 가 낮 아 지기 때문에 더 많은 데이터 가 시스템 캐 시 되 는 데 도움 이 될 것 입 니 다.
2.SpringBoot 프레임 워 크 통합
이 사례 는 Druid 연결 탱크 와 my batis 를 기반 으로 통합 되 었 습 니 다.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.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 연결 풀 설정
@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.매개 변수 설정 클래스
@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
}
이렇게 코드 를 통합 하면 완성 된다.3.조작 사례 시연
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_info
where id = #{id,jdbcType=INTEGER}
</select>
<select id="selectList" resultMap="BaseResultMap" >
select
<include refid="Base_Column_List" />
from cs_user_info
</select>
</mapper>
여기 createday 는 문자열 로 바 뀌 고 있 습 니 다.주의 하 셔 야 합 니 다.3.제어 층 인터페이스
@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
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
thymeleaf로 HTML 페이지를 동적으로 만듭니다 (spring + gradle)지난번에는 에서 화면에 HTML을 표시했습니다. 이번에는 화면을 동적으로 움직여보고 싶기 때문에 입력한 문자를 화면에 표시시키고 싶습니다. 초보자의 비망록이므로 이상한 점 등 있으면 지적 받을 수 있으면 기쁩니다! ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.