ClickHouse 初步认识
概述#
Clickhouse 是分析型数据库,真正的面向列式存储,支持高维度表。它免费开源、具备高效的数据导入和查询性能,能达到 50M/200M 每秒。支持实时查询、支持不同功能底层存储引擎,例如:MergeTree、Replicate、Distributed、Kafka 等。
特性#
1、面向分析型数据库、SQL、结构化、MPP,独立于 hadoop 生态。
2、C++ 开发,支持 Linux。
3、高速写入 (50M/200M) 每秒,支持实时查询。
4、列式存储结构,高效压缩,SIMD、向量化计算。
5、充分利用硬件资源,既能水平扩展,也能垂直扩展。
6、支持不能底层存储引擎,例如:MergeTree、Replicate、Distributed、Kafka 等。
应用场景#
1、大多数是读请求
2、数据总是以相当大的批(> 1000 rows)进行写入
3、不修改已添加的数据
4、每次查询都从数据库中读取大量的行,但是同时又仅需要少量的列
5、宽表,即每个表包含着大量的列
6、较少的查询(通常每台服务器每秒数百个查询或更少)
7、对于简单查询,允许延迟大约50毫秒
8、列中的数据相对较小: 数字和短字符串(例如,每个URL 60个字节)
9、处理单个查询时需要高吞吐量(每个服务器每秒高达数十亿行)
10、事务不是必须的
11、对数据一致性要求低
12、每一个查询除了一个大表外都很小
13、查询结果明显小于源数据,换句话说,数据被过滤或聚合后能够被盛放在单台服务器的内存中
使用 Docker 方式安装ClickHouse#
创建数据持久化目录#
mkdir $HOME/some_clickhouse_database
创建并运行 clickhouse-server 容器#
docker run -d -p 8123:8123 --name some-clickhouse-server --ulimit nofile=262144:262144 --volume=$HOME/some_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server
创建并运行 clickhouse-client 容器#
docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
简单使用#
创建表#
:) create table t (id UInt16, name String) engine=MergeTree order by (id);
插入数据#
:) insert into t(id, name) values (1, 'first');
:) insert into t(id, name) values (2, 'second');
:) insert into t(id, name) values (3, 'three');
查询数据#
:) select * from t;
更新数据#
:) alter table t update name='first1' where id=1;
删除数据#
:) alter table t delete where id=1;
相关参考#
1、https://gitbook.cn/books/5dc5c2e6573506442c3b30c2/index.html
2、https://clickhouse.tech/docs/zh/
3、https://uzshare.com/view/819521
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战