zoukankan      html  css  js  c++  java
  • 初识ClickHouse——安装与入门

    前言:

    久闻 ClickHouse 大名,一直没有去详细了解。近期看了下 ClickHouse 相关文档,决定安装体验下。想了解 ClickHouse 的小伙伴可以一起跟着学习哦。本篇文章主要介绍 ClickHouse 安装方法及基础知识。

    1. ClickHouse 简介

    ClickHouse 是一个用于联机分析 (OLAP) 的列式数据库管理系统 (DBMS). 由俄罗斯搜索引擎巨头 Yandex 开源. 主要用于数据分析领域, 目前国内社区火热, 各个大厂纷纷跟进大规模用于 OLAP 领域。

    一起来看下 ClickHouse 官网怎么介绍它的一些特性:

    • 快速:ClickHouse会充分利用所有可用的硬件,以尽可能快地处理每个查询。单个查询的峰值处理性能超过每秒 2 TB(解压缩后,仅使用的列)。在分布式设置中,读取是在健康副本之间自动平衡的,以避免增加延迟。
    • 容错:ClickHouse支持多主机异步复制,并且可以跨多个数据中心进行部署。所有节点都相等,这可以避免出现单点故障。单个节点或整个数据中心的停机时间不会影响系统的读写可用性。
    • 可伸缩:ClickHouse可以在垂直和水平方向上很好地缩放。 ClickHouse易于调整以在具有数百或数千个节点的群集上或在单个服务器上,甚至在小型虚拟机上执行。当前,每个单节点安装的数据量超过数万亿行或数百兆兆字节。
    • 易用:ClickHouse简单易用,开箱即用。它简化了所有数据处理:将所有结构化数据吸收到系统中,并且立即可用于构建报告。 SQL允许表达期望的结果,而无需涉及某些DBMS中可以找到的任何自定义非标准API。

    2. ClickHouse 安装教程

    ClickHouse 可以在任何具有 x86_64 ,AArch64 或 PowerPC64LE CPU 架构的 Linux ,FreeBSD 或 Mac OS X 上运行。貌似不能在 Windows 系统下安装,不过 ClickHouse 同样支持 Docker 部署,Windows 系统可以在 Docker 下安装 ClickHouse 。

    根据官方文档推荐:Debian 或 Ubuntu 系统可以使用官方预编译的 deb 软件包来安装,CentOS 、RedHat 等Linux发行版可以使用官方预编译的 rpm 包 来安装,如果您的操作系统不支持安装 deb 或 rpm 包,也可以使用 tgz 软件包或直接源码编译安装。下面我们以 CentOS 系统为例,以 rpm 方式来安装下 ClickHouse。

    # 查看系统版本
    [root@localhost ~]# more /etc/redhat-release 
    CentOS Linux release 7.6.1810 (Core) 
    
    # 检测当前CPU是否支持SSE 4.2
    [root@localhost ~]# grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"
    SSE 4.2 supported
    
    # 添加官方存储库
    sudo yum install yum-utils
    sudo rpm --import https://repo.clickhouse.tech/CLICKHOUSE-KEY.GPG
    sudo yum-config-manager --add-repo https://repo.clickhouse.tech/rpm/stable/x86_64
    
    # 安装clickhouse
    sudo yum install clickhouse-server clickhouse-client
    
    # 启动clickhouse
    sudo /etc/init.d/clickhouse-server start
    
    # 进入clickhouse客户端
    root@localhost ~]# clickhouse-client
    ClickHouse client version 20.12.5.14 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.12.5 revision 54442.
    
    localhost :) select 1;
    
    SELECT 1
    
    Query id: 42f5e589-2f81-44e2-9fb8-de45e682acfc
    
    ┌─1─┐
    │ 1 │
    └───┘
    
    1 rows in set. Elapsed: 0.002 sec. 
    
    localhost :) select now();
    
    SELECT now()
    
    Query id: c4c867a9-ae0e-4d6c-bb19-057e96cf6624
    
    ┌───────────────now()─┐
    │ 2021-01-13 10:19:14 │
    └─────────────────────┘
    
    1 rows in set. Elapsed: 0.004 sec. 
    

    3. ClickHouse 简单操作

    ClickHouse 支持有限的 SQL 操作,SQL 语法和传统的关系型数据库有相似之处。下面简单介绍下 ClickHouse 基础语法:

    # 1.创建数据库
    # 语法:
    CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]
    # 示例:
    [root@localhost ~]# clickhouse-client     
    ClickHouse client version 20.12.5.14 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.12.5 revision 54442.
    
    localhost :) create database test;
    
    CREATE DATABASE test
    
    Query id: c17cbf32-ab8c-45a0-8ebb-a7b0bdb88efe
    
    Ok.
    
    0 rows in set. Elapsed: 0.015 sec. 
    
    localhost :) use test;
    
    USE test
    
    Query id: 4eeadf20-e8bc-4b84-a953-71cf16e133b6
    
    Ok.
    
    0 rows in set. Elapsed: 0.001 sec.
    
    # 2.创建表
    # 语法:
    CREATE TABLE [IF NOT EXISTS] [db.]table_name [ON CLUSTER cluster]
    (
        name1 [type1] [DEFAULT|MATERIALIZED|ALIAS expr1] [compression_codec] [TTL expr1],
        name2 [type2] [DEFAULT|MATERIALIZED|ALIAS expr2] [compression_codec] [TTL expr2],
        ...
    ) ENGINE = engine
    # 示例:
    root@localhost ~]# clickhouse-client
    ClickHouse client version 20.12.5.14 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.12.5 revision 54442.
    
    localhost :) use test;
    
    USE test
    
    Query id: 37248a4f-36ec-4ed3-a08a-c345db228c98
    
    Ok.
    
    0 rows in set. Elapsed: 0.001 sec. 
    
    localhost :) create table t1 (id Int32,name String) engine=TinyLog;
    
    CREATE TABLE t1
    (
        `id` Int32,
        `name` String
    )
    ENGINE = TinyLog
    
    Query id: 8296c170-72fa-4852-8447-ab548fa3b7b8
    
    Ok.
    
    0 rows in set. Elapsed: 0.230 sec. 
    
    localhost :) show tables;
    
    SHOW TABLES
    
    Query id: 7da8d2d5-e4ed-45f1-b96c-4d23924512ba
    
    ┌─name─┐
    │ t1   │
    └──────┘
    
    1 rows in set. Elapsed: 0.007 sec. 
    
    # TinyLog是最简单的表的引擎,用于将数据存储在磁盘上。常用于小表。
    
    # 3.插入数据
    # 示例:
    [root@localhost ~]# clickhouse-client
    ClickHouse client version 20.12.5.14 (official build).
    Connecting to localhost:9000 as user default.
    Connected to ClickHouse server version 20.12.5 revision 54442.
    
    localhost :) use test;
    
    USE test
    
    Query id: 71a1de2a-17fe-4a0b-b9b6-7e934016892e
    
    Ok.
    
    0 rows in set. Elapsed: 0.001 sec. 
    
    localhost :) insert into t1 (id, name) values (1, 'abc'), (2, 'bbbb'),(3,'sdfg');
    
    INSERT INTO t1 (id, name) VALUES
    
    Query id: d4982851-8b52-4158-949f-fa94cd7d8ff3
    
    Ok.
    
    3 rows in set. Elapsed: 0.002 sec. 
    
    localhost :) select * from t1;
    
    SELECT *
    FROM t1
    
    Query id: b73f366c-702e-4bda-b519-cb087754bbad
    
    ┌─id─┬─name─┐
    │  1 │ abc  │
    │  2 │ bbbb │
    │  3 │ sdfg │
    └────┴──────┘
    
    3 rows in set. Elapsed: 0.002 sec. 
    

    虽然 SQL 语法和关系型数据库有相似之处,但还是要摒弃已有的思维来学习 ClickHouse 。特别是数据类型、表引擎及其他特性,这些都是陌生的,学习下来还是有难度的。

    参考:

    wx_blog.png

  • 相关阅读:
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 767 重构字符串(ASCII的转换)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 766 托普利茨矩阵(暴力)
    Java实现 LeetCode 765 情侣牵手(并查集 || 暴力)
    219. Contains Duplicate II
    217. Contains Duplicate
    135. Candy
  • 原文地址:https://www.cnblogs.com/kunjian/p/14281650.html
Copyright © 2011-2022 走看看