CeresDB 是一款高性能、分布式的云原生時(shí)序數(shù)據(jù)庫(kù),采用 Rust 編寫(xiě)。其開(kāi)發(fā)團(tuán)隊(duì)近日宣布:經(jīng)過(guò)近一年的開(kāi)源研發(fā)工作,時(shí)序數(shù)據(jù)庫(kù) CeresDB 1.0 正式發(fā)布,達(dá)到生產(chǎn)可用標(biāo)準(zhǔn)。
CeresDB 1.0 官方中文文檔:https://docs.ceresdb.io/cn/CeresDB 1.0 核心特性介紹
存儲(chǔ)引擎- 支持列式混合存儲(chǔ)
- 高效 XOR 過(guò)濾器
- 實(shí)現(xiàn)了計(jì)算存儲(chǔ)分離(支持 OSS 作為數(shù)據(jù)存儲(chǔ),WAL 實(shí)現(xiàn)支持 OBKV、Kafka)
- 支持 HASH 分區(qū)表
- 支持單機(jī)部署
- 支持分布式集群部署
- 支持 Prometheus + Grafana 搭建自監(jiān)控
- 支持 SQL 查詢(xún)與寫(xiě)入
- 實(shí)現(xiàn)了 CeresDB 內(nèi)置高性能讀寫(xiě)協(xié)議,提供多語(yǔ)言 SDK
- 支持 Prometheus,可以作為 Prometheus 的 remote storage 進(jìn)行使用
CeresDB 架構(gòu)介紹
CeresDB 是一個(gè)時(shí)序數(shù)據(jù)庫(kù),與經(jīng)典時(shí)序數(shù)據(jù)庫(kù)相比,CeresDB 的目標(biāo)是能夠同時(shí)處理時(shí)序型和分析型兩種模式的數(shù)據(jù),并提供高效的讀寫(xiě)。在經(jīng)典的時(shí)序數(shù)據(jù)庫(kù)中,Tag
列(InfluxDB
稱(chēng)之為Tag
,Prometheus
稱(chēng)之為Label
)通常會(huì)對(duì)其生成倒排索引,但在實(shí)際使用中,Tag
的基數(shù)在不同的場(chǎng)景中是不一樣的 ———— 在某些場(chǎng)景下,Tag
的基數(shù)非常高(這種場(chǎng)景下的數(shù)據(jù),我們稱(chēng)之為分析型數(shù)據(jù)),而基于倒排索引的讀寫(xiě)要為此付出很高的代價(jià)。而另一方面,分析型數(shù)據(jù)庫(kù)常用的掃描 + 剪枝方法,可以比較高效地處理這樣的分析型數(shù)據(jù)。因此 CeresDB 的基本設(shè)計(jì)理念是采用混合存儲(chǔ)格式和相應(yīng)的查詢(xún)方法,從而達(dá)到能夠同時(shí)高效處理時(shí)序型數(shù)據(jù)和分析型數(shù)據(jù)。下圖展示了 CeresDB 單機(jī)版本的架構(gòu)
┌──────────────────────────────────────────┐
│ RPC Layer (HTTP/gRPC/MySQL) │
└──────────────────────────────────────────┘
┌──────────────────────────────────────────┐
│ SQL Layer │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Parser │ │ Planner │ │
│ └─────────────────┘ └─────────────────┘ │
└──────────────────────────────────────────┘
┌───────────────────┐ ┌───────────────────┐
│ Interpreter │ │ Catalog │
└───────────────────┘ └───────────────────┘
┌──────────────────────────────────────────┐
│ Query Engine │
│ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Optimizer │ │ Executor │ │
│ └─────────────────┘ └─────────────────┘ │
└──────────────────────────────────────────┘
┌──────────────────────────────────────────┐
│ Pluggable Table Engine │
│ ┌────────────────────────────────────┐ │
│ │ Analytic │ │
│ │┌────────────────┐┌────────────────┐│ │
│ ││ Wal ││ Memtable ││ │
│ │└────────────────┘└────────────────┘│ │
│ │┌────────────────┐┌────────────────┐│ │
│ ││ Flush ││ Compaction ││ │
│ │└────────────────┘└────────────────┘│ │
│ │┌────────────────┐┌────────────────┐│ │
│ ││ Manifest ││ Object Store ││ │
│ │└────────────────┘└────────────────┘│ │
│ └────────────────────────────────────┘ │
│ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
│ Another Table Engine │ │
│ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ │
└──────────────────────────────────────────┘
性能優(yōu)化與實(shí)驗(yàn)結(jié)果
CeresDB 組合使用了列式混合存儲(chǔ)、數(shù)據(jù)分區(qū)、剪枝、高效掃描等技術(shù),解決海量時(shí)間線(xiàn)(high cardinality)下寫(xiě)入查詢(xún)性能變差的問(wèn)題。
寫(xiě)入優(yōu)化
CeresDB 采用類(lèi) LSM(Log-structured merge-tree)寫(xiě)入模型,無(wú)需在寫(xiě)入時(shí)處理復(fù)雜的倒排索引,因此寫(xiě)入性能上較好。
查詢(xún)優(yōu)化
主要采用以下技術(shù)手段提高查詢(xún)性能:
剪枝:
- min/max 剪枝:構(gòu)建代價(jià)比較低,在特定場(chǎng)景,性能較好
- XOR 過(guò)濾器:提高對(duì) parquet 文件中的 row group 的篩選精度
高效掃描:
- 多個(gè) SST 間并發(fā):同時(shí)掃描多個(gè) SST 文件
- 單個(gè) SST 內(nèi)部并發(fā):支持 Parquet 層并行拉取多個(gè) row group
- 合并小 IO:針對(duì) OSS 上的文件,合并小 IO 請(qǐng)求,提高拉取效率
- 本地 cache:緩存 OSS 拉取文件,支持內(nèi)存和磁盤(pán)緩存
性能測(cè)試結(jié)果
采用 TSBS 進(jìn)行性能測(cè)試。壓測(cè)參數(shù)如下:
- 10 個(gè) Tag
- 10 個(gè) Field
- 時(shí)間線(xiàn)(Tags 組合數(shù))100w 量級(jí)
壓測(cè)機(jī)器配置:24c90g
InfluxDB 版本:1.8.5
CeresDB 版本:1.0.0
寫(xiě)入性能對(duì)比
InfluxDB 寫(xiě)入性能隨著時(shí)間下降較多。CeresDB 在寫(xiě)入穩(wěn)定后,寫(xiě)入速率趨于平穩(wěn),并且總體寫(xiě)入性能表現(xiàn)為 InfluxDB 的 1.5 倍以上(一段時(shí)間后可達(dá) 2 倍以上差距)
下圖中,單行 row 包含 10 個(gè) Field。
上圖為 Influxdb,下圖為 CeresDB
查詢(xún)性能對(duì)比
低篩選度條件(條件:os=Ubuntu15.10),CeresDB 比 InfluxDB 快 26 倍,具體數(shù)據(jù)如下:
- CeresDB 查詢(xún)耗時(shí):15s
- InfluxDB 查詢(xún)耗時(shí):6m43s
高篩選度條件(命中的數(shù)據(jù)較少,條件:hostname=[8 個(gè)],此時(shí)理論上傳統(tǒng)倒排索引會(huì)更有效),這是 InfluxDB 更有優(yōu)勢(shì)的場(chǎng)景,此時(shí)在預(yù)熱完成條件下,CeresDB 比 InfluxDB 慢 5 倍。
- CeresDB:85ms
- InfluxDB:15ms
2023 年 roadmap
開(kāi)發(fā)團(tuán)隊(duì)表示,2023 年,在 CeresDB 1.0 發(fā)布之后,他們大部分工作將聚焦在性能、分布式與周邊生態(tài)方面的工作。尤其周邊生態(tài)的對(duì)接支持工作,希望能讓各種不同的用戶(hù)更加簡(jiǎn)單的用上 CeresDB:
周邊生態(tài)
- 生態(tài)兼容,包括 PromQL、InfluxdbQL、OpenTSDB 等常用時(shí)序數(shù)據(jù)庫(kù)協(xié)議兼容
- 運(yùn)維工具支持,包括 k8s 支持、CeresDB 運(yùn)維系統(tǒng)、自監(jiān)控等
- 開(kāi)發(fā)者工具,包括數(shù)據(jù)導(dǎo)入導(dǎo)出等
性能
- 探索新的存儲(chǔ)格式
- 增強(qiáng)不同類(lèi)型索引,強(qiáng)化 CeresDB 在不同工作負(fù)載下的表現(xiàn)
分布式
- 自動(dòng)負(fù)載均衡
- 提高可用性、可靠性
審核編輯 :李倩
-
數(shù)據(jù)存儲(chǔ)
+關(guān)注
關(guān)注
5文章
948瀏覽量
50766 -
數(shù)據(jù)庫(kù)
+關(guān)注
關(guān)注
7文章
3716瀏覽量
64046 -
Rust
+關(guān)注
關(guān)注
1文章
227瀏覽量
6500
原文標(biāo)題:CeresDB 1.0正式發(fā)布,Rust高性能云原生時(shí)序數(shù)據(jù)庫(kù)
文章出處:【微信號(hào):OSC開(kāi)源社區(qū),微信公眾號(hào):OSC開(kāi)源社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論