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