0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CeresDB 1.0正式發(fā)布,Rust高性能云原生時(shí)序數(shù)據(jù)庫(kù)

OSC開(kāi)源社區(qū) ? 來(lái)源:OSC開(kāi)源社區(qū) ? 2023-03-06 10:22 ? 次閱讀

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ū)表
部署與運(yùn)維
  • 支持單機(jī)部署
  • 支持分布式集群部署
  • 支持 Prometheus + Grafana 搭建自監(jiān)控
讀寫(xiě)協(xié)議
  • 支持 SQL 查詢(xún)與寫(xiě)入
  • 實(shí)現(xiàn)了 CeresDB 內(nèi)置高性能讀寫(xiě)協(xié)議,提供多語(yǔ)言 SDK
  • 支持 Prometheus,可以作為 Prometheus 的 remote storage 進(jìn)行使用
多語(yǔ)言讀寫(xiě) SDK
  • 實(shí)現(xiàn)了四種語(yǔ)言的客戶(hù)端 SDK:Java、Python、Go、Rust

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。

66b64880-bb79-11ed-bfe3-dac502259ad0.png66d16606-bb79-11ed-bfe3-dac502259ad0.png

上圖為 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ù)載均衡
  • 提高可用性、可靠性

審核編輯 :李倩


聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)存儲(chǔ)

    關(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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    云原生和非云原生哪個(gè)好?六大區(qū)別詳細(xì)對(duì)比

    云原生和非云原生各有優(yōu)劣,具體選擇取決于應(yīng)用場(chǎng)景。云原生利用云計(jì)算的優(yōu)勢(shì),通過(guò)微服務(wù)、容器化和自動(dòng)化運(yùn)維等技術(shù),提高了應(yīng)用的可擴(kuò)展性、更新速度和成本效益。非云原生則可能更適合對(duì)延遲敏感
    的頭像 發(fā)表于 09-13 09:53 ?167次閱讀

    利用NVIDIA RAPIDS加速DolphinDB Shark平臺(tái)提升計(jì)算性能

    DolphinDB 是一家高性能數(shù)據(jù)庫(kù)研發(fā)企業(yè),也是 NVIDIA 初創(chuàng)加速計(jì)劃成員,其開(kāi)發(fā)的產(chǎn)品基于高性能分布式時(shí)序數(shù)據(jù)庫(kù),是支持復(fù)雜計(jì)算和流數(shù)據(jù)
    的頭像 發(fā)表于 09-09 09:57 ?291次閱讀
    利用NVIDIA RAPIDS加速DolphinDB Shark平臺(tái)提升計(jì)算<b class='flag-5'>性能</b>

    京東云原生安全產(chǎn)品重磅發(fā)布

    “安全產(chǎn)品那么多,我怎么知道防住了?”“大家都說(shuō)自己是云原生的,我看都是換湯不換藥”在與客戶(hù)溝通云原生安全方案的時(shí)候,經(jīng)常會(huì)遇到這樣的吐槽。越來(lái)越的客戶(hù)已經(jīng)開(kāi)始了云原生化的技術(shù)架構(gòu)改造,也意識(shí)到
    的頭像 發(fā)表于 07-26 10:36 ?287次閱讀
    京東<b class='flag-5'>云原生</b>安全產(chǎn)品重磅<b class='flag-5'>發(fā)布</b>

    時(shí)序數(shù)據(jù)庫(kù)是什么?時(shí)序數(shù)據(jù)庫(kù)的特點(diǎn)

    時(shí)序數(shù)據(jù)庫(kù)是一種在處理時(shí)間序列數(shù)據(jù)方面具有高效和專(zhuān)門(mén)化能力的數(shù)據(jù)庫(kù)。它主要用于存儲(chǔ)和處理時(shí)間序列數(shù)據(jù),比如傳感器數(shù)據(jù)、監(jiān)控
    的頭像 發(fā)表于 04-26 16:02 ?537次閱讀

    華為云原生多模數(shù)據(jù)庫(kù) GeminiDB 架構(gòu)與應(yīng)用實(shí)踐

    近日,2023 全球分布式云大會(huì)·深圳站順利召開(kāi),華為云 NoSQL 數(shù)據(jù)庫(kù)研發(fā)總監(jiān)余汶龍?jiān)跁?huì)上發(fā)表了題為《華為云原生多模數(shù)據(jù)庫(kù) GeminiDB 架構(gòu)與應(yīng)用實(shí)踐》的精彩演講。 余汶龍?zhí)岢鲈谥悄?/div>
    的頭像 發(fā)表于 04-08 18:23 ?1083次閱讀
    華為<b class='flag-5'>云原生</b>多模<b class='flag-5'>數(shù)據(jù)庫(kù)</b> GeminiDB 架構(gòu)與應(yīng)用實(shí)踐

    基于Rust的嵌入式符合ACID的鍵值數(shù)據(jù)庫(kù)

    surrealkv -- 基于 Rust 的 low level、版本化、嵌入式、符合 ACID 的鍵值數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 12-28 11:29 ?776次閱讀

    從WasmEdge運(yùn)行環(huán)境讀寫(xiě)Rust Wasm應(yīng)用的時(shí)序數(shù)據(jù)

    WebAssembly (Wasm) 正在成為一個(gè)廣受歡迎的編譯目標(biāo),幫助開(kāi)發(fā)者構(gòu)建可遷移平臺(tái)的應(yīng)用。最近 Greptime 和 WasmEdge 協(xié)作,支持了在 WasmEdge 平臺(tái)上的 Wasm 應(yīng)用通過(guò) MySQL 協(xié)議讀寫(xiě) GreptimeDB 中的時(shí)序數(shù)據(jù)。
    的頭像 發(fā)表于 12-22 11:03 ?864次閱讀

    AI 時(shí)代數(shù)據(jù)存儲(chǔ)管理新挑戰(zhàn)分論壇圓滿(mǎn)舉辦

    ,共同分享了 AI 時(shí)代下數(shù)據(jù)庫(kù)技術(shù)最新發(fā)展與實(shí)踐。 螞蟻集團(tuán)開(kāi)發(fā)工程師、HoraeDB 核心開(kāi)發(fā)者 曹瑞秋 曹瑞秋 在《時(shí)序數(shù)據(jù)庫(kù) HoraeDB 技術(shù)揭秘》的主題分享中表示,近期已將 CeresDB
    的頭像 發(fā)表于 12-22 10:51 ?305次閱讀
    AI 時(shí)代<b class='flag-5'>數(shù)據(jù)</b>存儲(chǔ)管理新挑戰(zhàn)分論壇圓滿(mǎn)舉辦

    AI時(shí)代數(shù)據(jù)存儲(chǔ)管理新挑戰(zhàn)分論壇圓滿(mǎn)舉辦

    AI時(shí)代下數(shù)據(jù)庫(kù)技術(shù)最新發(fā)展與實(shí)踐。 螞蟻集團(tuán)開(kāi)發(fā)工程師、HoraeDB 核心開(kāi)發(fā)者 曹瑞秋 曹瑞秋 在《時(shí)序數(shù)據(jù)庫(kù)HoraeDB 技術(shù)揭秘》的主題分享中表示,近期已將CeresDB內(nèi)核捐獻(xiàn)到
    的頭像 發(fā)表于 12-20 09:40 ?280次閱讀
    AI時(shí)代<b class='flag-5'>數(shù)據(jù)</b>存儲(chǔ)管理新挑戰(zhàn)分論壇圓滿(mǎn)舉辦

    云原生數(shù)據(jù)庫(kù)GaiaDB架構(gòu)設(shè)計(jì)解析

    目前,云原生數(shù)據(jù)庫(kù)已經(jīng)被各行各業(yè)大規(guī)模投入到實(shí)際生產(chǎn)中,最終的目標(biāo)都是「單機(jī) + 分布式一體化」。但在演進(jìn)路線(xiàn)上,當(dāng)前主要有兩個(gè)略有不同的路徑。
    的頭像 發(fā)表于 12-14 14:48 ?454次閱讀
    <b class='flag-5'>云原生</b><b class='flag-5'>數(shù)據(jù)庫(kù)</b>GaiaDB架構(gòu)設(shè)計(jì)解析

    oracle數(shù)據(jù)庫(kù)的使用方法

    Oracle數(shù)據(jù)庫(kù)是一種關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng),它由Oracle公司開(kāi)發(fā)和維護(hù)。它提供了安全、可靠和高性能數(shù)據(jù)庫(kù)管理解決方案,被廣泛應(yīng)用于企業(yè)級(jí)應(yīng)用和大型
    的頭像 發(fā)表于 12-06 10:10 ?1057次閱讀

    NoSQL 數(shù)據(jù)庫(kù)如何選型

    什么是NoSQL數(shù)據(jù)庫(kù)?為什么要使用NoSQL數(shù)據(jù)庫(kù)?鍵值數(shù)據(jù)庫(kù)內(nèi)存鍵值數(shù)據(jù)庫(kù)文檔數(shù)據(jù)庫(kù)列式數(shù)據(jù)庫(kù)
    的頭像 發(fā)表于 11-26 08:05 ?364次閱讀
    NoSQL <b class='flag-5'>數(shù)據(jù)庫(kù)</b>如何選型

    如何編寫(xiě)高性能Rust代碼

    為了最大限度地提高Rust應(yīng)用程序的性能,你需要了解支持代碼的底層硬件架構(gòu),如何優(yōu)化算法和數(shù)據(jù)結(jié)構(gòu),以及如何對(duì)代碼進(jìn)行配置和基準(zhǔn)測(cè)試。在本文中,我們將簡(jiǎn)要介紹這些主題,希望能更好地理解如何編寫(xiě)
    的頭像 發(fā)表于 11-03 14:28 ?698次閱讀
    如何編寫(xiě)<b class='flag-5'>高性能</b>的<b class='flag-5'>Rust</b>代碼

    可觀測(cè)平臺(tái)如何存儲(chǔ)時(shí)序曲線(xiàn)?滴滴實(shí)踐全歷程分享

    時(shí)序數(shù)據(jù)庫(kù)的一哥 InfluxDB,是我們最初選擇的時(shí)序數(shù)據(jù)庫(kù)。但隨著時(shí)序曲線(xiàn)的規(guī)模變大,InfluxDB 的局限性也開(kāi)始暴露了出來(lái)。同時(shí)社區(qū)中關(guān)于 InfluxDB OOM 的討論也日益增多
    的頭像 發(fā)表于 10-13 16:04 ?529次閱讀
    可觀測(cè)平臺(tái)如何存儲(chǔ)<b class='flag-5'>時(shí)序</b>曲線(xiàn)?滴滴實(shí)踐全歷程分享

    如何在Rust中連接和使用MySQL數(shù)據(jù)庫(kù)

    MySQL是一個(gè)廣泛使用的關(guān)系型數(shù)據(jù)庫(kù),Rust作為一門(mén)相對(duì)較新的系統(tǒng)級(jí)編程語(yǔ)言,具有C語(yǔ)言般的高性能、安全、并發(fā)等特性,因此與MySQL一起使用是一種非常有趣的選擇。在本教程中,我們將手把手地展示
    的頭像 發(fā)表于 09-30 17:05 ?1432次閱讀