安裝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
英文地址,請注明出處:http://en.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…