如何在ClickHouse中使用EmbeddedRocksDB表引擎
RocksDB 想必大家并不陌生,它是一款高性能的嵌入式KV数据库,是众多自研数据库背后的男人。
现在我们可以利用 EmbeddedRocksDB 表引擎,直接在 ClickHouse 中使用 RocksDB,非常适用 KV 查询的场景。
使用的方法非常简单,接下来就用一个简短示例说明,创建一张测试表,使用 EmbeddedRocksDB 引擎:
CREATE TABLE test_rocksDB
(
`A` UInt64,
`B` String
)
ENGINE = EmbeddedRocksDB
PRIMARY KEY A
必须指定 PRIMARY KEY , 它表示 RocksDB Key
接着写入 1亿 测试数据:
INSERT INTO test_rocksDB
SELECT
number,
toString(cityHash64(number))
FROM numbers(100000000)
查看表文件,会发现直接是 RocksDB 的存储文件:
接着就可以查询了:
SELECT count()
FROM
(
SELECT *
FROM test_rocksDB
WHERE A IN (
SELECT toUInt64(rand64() % 100000000)
FROM numbers(10000)
)
)
Query id: 96f56029-9201-4985-bf9f-8d714a3bc1bd
┌─count()─┐
│ 10000 │
└─────────┘
1 rows in set. Elapsed: 0.221 sec. Processed 10.00 thousand rows, 364.02 KB (45.23 thousand rows/s., 1.65 MB/s.)
我用 MergeTree 做同样的查询,查询的实效差距不大(RocksDB适用默认参数),但是MergeTree扫描的数据是 RocksDB 表引擎的5000倍
# RocksDB
1 rows in set. Elapsed: 0.221 sec. Processed 10.00 thousand rows, 364.02 KB (45.23 thousand rows/s., 1.65 MB/s.)
#MergeTree
1 rows in set. Elapsed: 0.213 sec. Processed 56.58 million rows, 452.67 MB (265.18 million rows/s., 2.12 GB/s.)
关于作者:
朱凯,ClickHouse贡献者之一,ClickHouse布道者,资深架构师,腾讯云最具价值专家TVP,开源爱好者,Apache DolphinScheduler Committer,《企业级大数据平台构建:架构与实现》《ClickHouse原理解析与应用实践》作者,公众号“ClickHouse的秘密基地”运营者。
推荐阅读:《ClickHouse原理解析与应用实践》
推荐语:这是一本可帮助读者深度理解并全面掌握ClickHouse运行原理并进行实践开发的工具书,涵盖了ClickHouse的时代背景、发展历程、核心概念、基础功能、运行原理、实践指导等多个维度的内容,尤其是在ClickHouse最核心的部分——MergeTree表引擎与分布式方面,书中对其实现原理和应用技巧进行了详细解读。
刷刷视频👇
更多精彩回顾
干货 |Java到底能干什么?有哪些实际用途?
书单 | 成为优秀Java开发者,我看了这几本书
上新 |《Core Java》作者亲授视频免费看,学习Java更轻松
资讯 |云原生时代,阿里如何让Java冷启动提速两个数量级?
资讯 | Python迎来31岁生日,蝉联年度编程语言排行榜冠军
干货 |一文带你掌握计算机体系结构核心内容
书讯 | 2月书讯(下)| 新年到,新书到!
书讯 | 2月书讯 (上)| 新年到,新书到!
点击阅读全文