安装ClickHouse

安装ClickHouse

ClickHouse是一个用于联机分析的列式数据库管理系统,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。

ClickHouse是一个完全的列式数据库管理系统,允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性。

文章目录

  • 安装ClickHouse
    • 目标
    • docker 部署
      • ClickHouse相关文档地址
      • 部署脚本
      • 检验
      • 连接到控制台
      • 使用DBeaver连接
    • 快速入门
      • 创建用户
      • 查询用户
      • 创建数据库(模式)
      • 设置当前模式(数据库)
      • 授予权限
      • 查看用户和权限
      • 修改密码
      • 删除用户和数据库
      • 查询数据库
      • 创建表
      • 插入数据
      • 查询您的新表
    • java客户端
      • 环境要求
      • Maven设置
      • 配置
      • 支持的数据类型
        • 处理日期、时间和时区
      • 创建连接
      • 提供凭证和设置
      • 简单语句
      • 插入

目标

  • 快速部署 ClickHouse
  • 简单测试 ClickHouse
  • jdbc 测试

docker 部署

ClickHouse相关文档地址

  • dockerhub 地址 https://hub.docker.com/_/clickhouse
  • ClickHouse 文档地址 https://clickhouse.com/docs/zh/introduction-clickhouse
  • ClickHouse github地址https://github.com/ClickHouse/ClickHouse

部署脚本

mkdir -p /home/clickhouse
cd /home/clickhouse
cat > /home/clickhouse/docker-compose.yml << EOF
version: '3'
services:clickhouse:image: clickhouse:25.4.2.31ulimits:nofile:soft: 262144hard: 262144restart: alwayshostname: clickhousecontainer_name: clickhouseprivileged: trueenvironment:- CLICKHOUSE_DB=test- CLICKHOUSE_USER=root- CLICKHOUSE_PASSWORD=123456- CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1- TZ=Asia/Shanghaiports:- '18123:8123'- '19000:9000'volumes:- /home/clickhouse/ch_data:/var/lib/clickhouse- /home/clickhouse/ch_logs:/var/log/clickhouse-serverEOF
docker-compose up -d

参数解释:

  • -p 18123:8123:将主机的 8123 端口映射到容器内的 18123 端口,用于访问 ClickHouse 的 HTTP 查询服务。
  • –ulimit nofile=262144:262144:设置容器内 ClickHouse 进程的文件打开数量限制,防止因文件描述符不足导致问题。
  • -e CLICKHOUSE_DB=test:设置 ClickHouse 的默认数据库名为 test。
  • -e CLICKHOUSE_USER=root:设置 ClickHouse 的默认管理员用户名为 root。
  • -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1:启用 ClickHouse 的访问控制功能,需要设置管理员账号密码才能进行操作。
  • -e TZ=Asia/Shanghai:设置容器的时区为上海时间,便于处理时间相关的数据。
  • -e CLICKHOUSE_PASSWORD=123456:设置 ClickHouse 的管理员账号密码为 123456。
  • 容器内配置文件路径/etc/ClickHouse-server/config.xml

检验

echo 'SELECT version()' | curl 'http://localhost:18123/?password=123456' --data-binary @-

在这里插入图片描述

连接到控制台

浏览器访问

http://ip:18123/play

在这里插入图片描述

测试

在这里插入图片描述

使用DBeaver连接

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

连接成功!

快速入门

创建用户

在 ClickHouse 中,你可以使用 CREATE USER 语句来创建一个新用户。例如,创建一个名为 example_user 的用户,并设置密码为 password123

CREATE USER example_user IDENTIFIED WITH plaintext_password BY 'password123';

这里,plaintext_password 是用于密码加密的算法,你也可以使用其他算法如 sha256_password

查询用户

用户列表:SELECT * FROM system.users;
角色权限:SELECT * FROM system.grants WHERE role_name = 'read_write';
关联关系:SELECT * FROM system.role_grants;

在这里插入图片描述

创建数据库(模式)

在 ClickHouse 中,你可以使用 CREATE DATABASE 语句来创建一个新的数据库。例如,创建一个名为 example_db 的数据库:

CREATE DATABASE example_db;

设置当前模式(数据库)

在 ClickHouse 中,你可以使用 USE 语句来设置当前操作的数据库。例如,要切换到 example_db 数据库:

USE example_db;

这样,之后你创建的表、执行的操作等都会默认在当前数据库 example_db 下进行。

授予权限

为了确保用户可以访问特定的数据库或表,你需要授予相应的权限。例如,授予 example_user 用户对 example_db 数据库的访问权限:

GRANT ALL ON example_db.* TO example_user;

这行命令授予了 example_userexample_db 数据库中所有表的全部权限。

查看用户和权限

你可以使用 SHOW USERS; 来查看所有用户,使用 SHOW GRANTS FOR example_user; 来查看特定用户的权限。

修改密码

如果需要修改用户的密码,可以使用以下命令:

ALTER USER example_user IDENTIFIED WITH 'plaintext' BY 'new_password123';

删除用户和数据库

如果你需要删除用户或数据库,可以使用以下命令:

  • 删除用户:

    DROP USER example_user;
    
  • 删除数据库:

    DROP DATABASE example_db;
    

查询数据库

show databases;

创建表

使用 CREATE TABLE 定义新表。在 ClickHouse 中,典型的 SQL DDL 命令同样适用,唯一的补充是 ClickHouse 中的表需要一个 ENGINE 子句。使用 MergeTree 利用 ClickHouse 的性能优势:

CREATE TABLE my_first_table
(user_id UInt32,message String,timestamp DateTime,metric Float32
)
ENGINE = MergeTree
PRIMARY KEY (user_id, timestamp);

插入数据

您可以在 ClickHouse 中使用熟悉的 INSERT INTO TABLE 命令,但重要的是要理解,每次插入 MergeTree 表时,ClickHouse 会在存储中创建一个我们称之为 part 的部分。这些部分稍后会在后台由 ClickHouse 合并。

在 ClickHouse 中,我们尽量批量插入大量行(一次数以万计或甚至数百万计),以减少后台合并所需的 parts 数量。

在本指南中,我们暂时不担心这个问题。运行以下命令,将几行数据插入到您的表中:

INSERT INTO my_first_table (user_id, message, timestamp, metric) VALUES(101, 'Hello, ClickHouse!',                                 now(),       -1.0    ),(102, 'Insert a lot of rows per batch',                     yesterday(), 1.41421 ),(102, 'Sort your data based on your commonly-used queries', today(),     2.718   ),(101, 'Granules are the smallest chunks of data read',      now() + 5,   3.14159 )

查询您的新表

您可以像使用任何 SQL 数据库一样编写 SELECT 查询:

SELECT *
FROM my_first_table
ORDER BY timestamp

注意响应以漂亮的表格格式返回:
在这里插入图片描述

java客户端

clickhouse jdbc 文档介绍

环境要求

  • OpenJDK 版本 >= 8

Maven设置

<!-- https://mvnrepository.com/artifact/com.clickhouse/clickhouse-jdbc -->
<dependency><groupId>com.clickhouse</groupId><artifactId>clickhouse-jdbc</artifactId><version>0.8.5</version>  
</dependency>

配置

驱动类: com.clickhouse.jdbc.ClickHouseDriver

URL 语法: jdbc:(ch|clickhouse)[:<protocol>]://endpoint1[,endpoint2,...][/<database>][?param1=value1¶m2=value2][#tag1,tag2,...],例如:

  • jdbc:clickhouse:http://localhost:8123
  • jdbc:clickhouse:https://localhost:8443?ssl=true

连接属性:

除了标准 JDBC 属性外,驱动程序还支持由底层 java client 提供的 ClickHouse 特定属性。如果功能不被支持,尽可能的方法将返回 SQLFeatureNotSupportedException。其他自定义属性包括:

属性默认描述
disable_frameworks_detectiontrue禁用用户代理的框架检测
jdbc_ignore_unsupported_valuesfalse抑制 SQLFeatureNotSupportedException
clickhouse.jdbc.v1false使用旧的 JDBC 实现,而不是新的 JDBC
default_query_settingsnull允许在查询操作中传递默认的查询设置

支持的数据类型

JDBC 驱动程序支持与底层 java client 相同的数据格式。

处理日期、时间和时区

java.sql.Datejava.sql.Timejava.sql.Timestamp 可能会使时区计算复杂 - 尽管它们当然受到支持,您可能希望考虑使用 java.time 包。ZonedDateTimeOffsetDateTime 都是 java.sql.Timestampjava.sql.Datejava.sql.Time 的极好替代品。

创建连接

String url = "jdbc:ch://my-server:8123/system";Properties properties = new Properties();
DataSource dataSource = new DataSource(url, properties);//DataSource 或 DriverManager 是主要的入口点
try (Connection conn = dataSource.getConnection()) {
... // 使用连接做一些事情

提供凭证和设置

String url = "jdbc:ch://localhost:8123?jdbc_ignore_unsupported_values=true&socket_timeout=10";Properties info = new Properties();
info.put("user", "default");
info.put("password", "password");
info.put("database", "some_db");//使用 DataSource 创建连接
DataSource dataSource = new DataSource(url, info);
try (Connection conn = dataSource.getConnection()) {
... // 使用连接做一些事情
}// 使用 DriverManager 的备用方法
try (Connection conn = DriverManager.getConnection(url, info)) {
... // 使用连接做一些事情
}

简单语句

try (Connection conn = dataSource.getConnection(...);Statement stmt = conn.createStatement()) {ResultSet rs = stmt.executeQuery("select * from numbers(50000)");while(rs.next()) {// ...}
}

插入

try (PreparedStatement ps = conn.prepareStatement("INSERT INTO mytable VALUES (?, ?)")) {ps.setString(1, "test"); // idps.setObject(2, LocalDateTime.now()); // timestampps.addBatch();...ps.executeBatch(); // 将所有数据流式传输到 ClickHouse
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/84577.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/84577.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PX4无人机集成自带的深度相机进行gazebo仿真

修改mavros_posix_sitl.launch文件 修改以下两行代码 <arg name"my_model" default"iris_depth_camera"/><arg name"sdf" default"$(find mavlink_sitl_gazebo)/models/$(arg my_model)/$(arg my_model).sdf"/>iris_dept…

正点原子STM32cubeide学习——TFTLCD(MCU 屏)实验

使用的是正点原子的精英版&#xff0c;单片机是STM32F103ZET6&#xff0c;使用开发板的 MCU 屏接口连接正点原子 TFTLCD 模块(仅限 MCU 屏模块)&#xff0c;实现 TFTLCD 模块的显示。通过把 LCD 模块插入底板上的 TFTLCD 模块接口&#xff0c;按下复位之后&#xff0c; 就可以看…

OpenCV实现二值图细化(骨架提取)

对二值图进行细化&#xff08;骨架提取&#xff09;&#xff0c;也就是把每根线条细化到一个像素的宽度。有两个比较成熟的算法实现此功能&#xff0c;分别是Zhang-Suen算法和Guo-Hall算法。 我们下面使用OpenCVSharp&#xff0c;使用C#实现上述两个算法&#xff1a; private…

历史的迷雾与传承的使命:应对历史篡改,守护中华文明

在历史的浩瀚长河中&#xff0c;中国以悠久的文明与灿烂的文化屹立于世界东方。然而&#xff0c;满清时期与西方势力出于各自目的对中国历史进行篡改&#xff0c;在真实历史的画卷上蒙上了层层迷雾。深入探究其背后的动机&#xff0c;思考当代人守护历史文化的使命&#xff0c;…

【Qt】QTableWidget表格右键菜单

效果 1. 给QTableWidget组件添加customContextMenuRequested信号 2. 槽函数 void dataDetailForm::on_tableWidget_customContextMenuRequested(const QPoint &pos) {QMenu menu;QAction *setEnd menu.addAction(tr("设置"));connect(setEnd, SIGNAL(triggered…

MySQL 数据处理函数全面详解

MySQL 数据处理函数全面详解 MySQL 中的数据处理函数,包含字符串、数值、日期、条件判断等核心函数: 一、字符串处理函数 1. 基础操作函数 函数描述示例结果CONCAT()字符串连接CONCAT(My,SQL)‘MySQL’CONCAT_WS()带分隔符连接CONCAT_WS(-,2023,08,15)‘2023-08-15’LENGTH…

领域驱动设计(DDD)【1】之初步理解

文章目录 一 DDD概述二 从“沉寂”到“爆火”&#xff1a;DDD的兴起背景与原因2.1 DDD早期沉寂的原因2.2 DDD近年爆火的原因2.3 总结 三 DDD深入理解3.1 方法论本质3.2 系统化价值3.3 思想内核3.4 实践转化3.5 总结 四 传统面向对象方法学和DDD4.1 传统面向对象方法学的问题4.2…

人工智能学习57-TF训练

人工智能学习概述—快手视频 人工智能学习57-TF训练—快手视频 人工智能学习58-TF训练—快手视频 人工智能学习59-TF预测—快手视频 训练示例代码 #导入keras.utils 工具包 import keras.utils #导入mnist数据集 from keras.datasets import mnist #引入tensorflow 类库 …

MySQL(83)如何设置密码复杂度策略?

在 MySQL 中&#xff0c;可以通过配置密码策略来设置密码的复杂度要求。MySQL 提供了一些参数和插件来帮助管理员强制实施密码复杂度策略&#xff0c;确保数据库用户使用强密码。下面将详细介绍如何设置密码复杂度策略&#xff0c;并结合代码示例进行说明。 1. 使用 validate_…

如何使用postman做接口自动化测试?

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文适合已经掌握 Postman 基本用法的读者&#xff0c;即对接口相关概念有一定了解、已经会使用Postman 进行模拟请求等基本操作。 工作环境与版本&#xff1a; …

面试-操作系统

用户态和内核态的区别 内核态&#xff1a;在内核态下&#xff0c;CPU可以执行所有的指令和访问所有的硬件资源。 用户态&#xff1a;在用户态下&#xff0c;CPU只能执行部分指令集&#xff0c;无法直接访问硬件资源。 内核态的底层操作主要包括&#xff1a;内存管理、进程管理…

【基础算法】二分(二分查找 + 二分答案)

文章目录 一、二分查找1. 【案例】在排序数组中查找元素的第一个和最后一个位置 ⭐(1) 二分查找的引入(2) 解题细节&#xff08;important&#xff09;(3) 代码示例(4) 【模板】二分查找(5) STL 中的二分查找 2. 牛可乐和封印魔法 ⭐⭐(1) 解题思路(2) 代码实现 3. A-B 数对 ⭐…

多协议物联网关的方案测试-基于米尔全志T536开发板

本文将介绍基于米尔电子MYD-LT536开发板&#xff08;米尔基于全志T536开发板&#xff09;的多协议物联网关方案的开发测试。 摘自优秀创作者-ALSET 米尔基于全志T536开发板 为了充分的应用该开发板&#xff0c;结合T536处理器的特点&#xff0c;这里进一步的进行软件开发&…

echarts的还原,下载图片失效(空白图片,还原白屏)

echarts的toolbox.feature. restore 和toolbox.feature. saveAsImage 失效 也没有任何报错, 只需要修改: // chart.setOption(op); chart.setOption(op,true);

56-Oracle SQL Tuning Advisor(STA)

各位小伙伴&#xff0c;一般都用哪些优化工具&#xff0c;Oracle SQL Tuning Advisor (STA)用的多吗&#xff0c;Profile就是它的其中1个产物&#xff0c;下一期再弄Profile&#xff0c;STA 的核心功能是自动化诊断高负载SQL的性能瓶颈​&#xff08;如全表扫描、缺失索引&…

修改element-plus的主题色css变量

提示&#xff1a;本文仅是记录我修改element-plus等组件库的css变量&#xff0c; 具体【实现主题色切换看这篇】即可 文章目录 1.文件划分2.src/style/index.scss入口文件3.src/style/theme.scss主题色切换维护4.src/style/_color-utils.scss动态生成element-plus的scss变量5.…

Vibe Coding - 进阶 Cursor Rules

文章目录 为什么要配置 .cursorrules使用 .cursorrules 的五大优势 如何创建与应用 .cursorrules✅ 基础步骤&#x1f6e0; 创建方式&#xff1a; 高质量 .cursorrules 文件&#xff0c;应包含以下内容配置示例Java 项目TypeScript React 项目总结 cursorrules 推荐网站 为什么…

腾讯云自动化助手(TAT)技术评估报告

摘要 腾讯云自动化助手&#xff08;TAT&#xff09;作为云服务器&#xff08;CVM&#xff09;与轻量应用服务器&#xff08;Lighthouse&#xff09;的原生运维工具&#xff0c;通过无密码批量命令执行&#xff08;Shell/Python/PowerShell&#xff09;、交互式会话管理及公共命…

【simulink】IEEE5节点系统潮流仿真模型(2机5节点全功能基础模型)

主要内容 该模型为simulink仿真模型&#xff0c;主要实现的内容如下&#xff1a; 模型是基于 Simulink 搭建的电力系统潮流计算仿真模型&#xff0c;围绕2 台发电机、5 个节点的拓扑结构构建&#xff0c;用于电力系统稳态分析&#xff0c;是电力系统研究、教学及工程实践中…

责任链模式详解

责任链模式 场景 顾名思义&#xff0c;责任链模式&#xff08;Chain of Responsibility Pattern&#xff09;为请求创建了一个接收者对象的链。这种模式给予请求的类型&#xff0c;对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中&#x…