windows环境部署clickhouse,spring boot集成clickhouse

2023-12-28 11:31:19

提要: clickhouse没有windows的安装包 可以在docker中搭建一个

一.安装docker

1.启用虚拟化

2.启用Hyper-v

控制面板(Win+R -> 输入control -> 回车) -> 程序 -> 启用或关闭Windows功能 -> 勾选Hyper-v

3.下载安装
4.配置

1)打开Docker配置中心:任务栏小鲸鱼右键 -> Settings

2)配置Docker国内镜像加速下载:左侧菜单 Docker Engine -> 右侧输入框 -> Apply & Restart

{
  "debug": false,
  "experimental": false,
  "features": {
    "buildkit": true
  },
  "insecure-registries": [],
  "registry-mirrors": [
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn"
  ]
}

3) 查看版本 打开Windows控制台(Win+R -> 输入cmd -> 回车)-> 输入

docker -v

二.在docker中搭建ClickHouse

1.拉取镜像

打开Windows控制台(Win+R -> 输入cmd -> 回车)-> 输入

docker pull yandex/clickhouse-server
docker pull yandex/clickhouse-client

tips:如果没有配置国内镜像无法下载

拉取之后可以在镜像列表里查看

2.启动clickhouse-server

下载完成后,直接运行clickhouse-server即可,这里建议在 git bash中启动,在cmd/powershell中需要将各文件路径换为Windows本地路径才行,这里直接在git bash 中用默认设置启动

docker run -d --name=clickhouse-server \
-p 8123:8123 -p 9009:9009 -p 9090:9000 \
--ulimit nofile=262144:262144 \
-v /data/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml \
-v /data/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml \
-v /data/clickhouse/log:/var/log/clickhouse-server \
-v /data/docker/database:/var/lib/clickhouse:wr \
yandex/clickhouse-server

docker run:启动一个新的容器。

-d:以后台(守护进程)模式运行容器。

--name=clickhouse-server:为容器指定一个名称,这里是 “clickhouse-server”。

-p 8123:8123 -p 9009:9009 -p 9090:9000:将容器内部的端口映射到主机的端口,允许通过主机访问 ClickHouse 服务器。例如,容器内的 8123 端口被映射到主机上的 8123 端口,可以通过主机的 8123 端口访问 ClickHouse 服务器。

--ulimit nofile=262144:262144:设置容器的文件描述符限制。这里设置为 262144 个文件描述符。

-v /data/clickhouse/conf/config.xml:/etc/clickhouse-server/config.xml:将主机系统中的文件 /data/clickhouse/conf/config.xml 映射到容器内的文件 /etc/clickhouse-server/config.xml,用于配置 ClickHouse 服务器。

-v /data/clickhouse/conf/users.xml:/etc/clickhouse-server/users.xml:将主机系统中的文件 /data/clickhouse/conf/users.xml 映射到容器内的文件 /etc/clickhouse-server/users.xml,用于配置 ClickHouse 服务器的用户。

-v /data/clickhouse/log:/var/log/clickhouse-server:将主机系统中的目录 /data/clickhouse/log 映射到容器内的目录 /var/log/clickhouse-server,用于存储 ClickHouse 服务器的日志。

-v /data/docker/database:/var/lib/clickhouse:rw:将主机系统中的目录 /data/docker/database 映射到容器内的目录 /var/lib/clickhouse,用于存储 ClickHouse 服务器的数据,并允许读写操作。

yandex/clickhouse-server:使用 yandex/clickhouse-server 镜像运行容器,即 ClickHouse 服务器的镜像。

3.测试是否安装成功

进入docker中的clickhouse bash,运行sql

docker exec -it clickhouse-server bash clickhouse-client show databases;

可以看到安装好后docker ui中出现了一个clickhouse-server服务,以后可以直接在界面上进行操作

版权声明: 2.3这段引用了这篇文章的方法

原文链接:Windows下安装ClickHouse图文教程_clickhouse windows-CSDN博客

三.使用可视化工具操作数据库

DBeaver可视化数据库下载地址:https://dbeaver.io/files/dbeaver-ce-latest-x86_64-setup.exe

设置ip 端口 测试连接 成功后确认

这样配置的clickhouse是没有密码的 账号是defalut


Spring boot 集成 clickhouse

springboot? mybaties clickhouse方式

一、依赖

        <!--ck框架-->
        <dependency>
            <groupId>ru.yandex.clickhouse</groupId>
            <artifactId>clickhouse-jdbc</artifactId>
            <version>0.3.0</version>
        </dependency>

使用0.3.0版本 其他文档都是使用0.1.53版本 太低了 我的项目不兼容 测了很久才发现是这个问题

二、配置

1.跟Mysql的配置非常像 设置好库和数据库连接池配置就好

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

2.使用实体类配置并注入

1)实体类

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

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

2)配置类

import com.alibaba.druid.pool.DruidDataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import javax.annotation.Resource;
import javax.sql.DataSource;

@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;
    }
}

3.位置

三、使用

把clickhouse的mapper和xml文件 跟mysql的放在一起 要不然检索不到

mapper层不用@mapper注解一样能找到

XML:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.xxx.xxx.xxx.dao.mysql.UserInfoDao"> <select id="selectById" resultType="com.xxx.xxx.xxx.domain.mysql.UserInfo"> select * from user where id = #{id} </select> </mapper>

测试类中执行:

文章来源:https://blog.csdn.net/m0_47570899/article/details/135250915
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。