91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

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

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

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

QuestDB時(shí)序數(shù)據(jù)庫性能居然領(lǐng)先ClickHouse和InfluxDB這么多

話說科技 ? 2021-06-01 14:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

作者:Vlad Ilyushchenko,QuestDB的CTO

在QuestDB (https://questdb.io/, https://github.com/questdb/questdb),我們已經(jīng)建立了一個(gè)專注于性能的開源時(shí)間序列數(shù)據(jù)庫。我們創(chuàng)建QuestDB初衷是為了將我們在超低延遲交易方面的經(jīng)驗(yàn)以及我們在該領(lǐng)域開發(fā)的技術(shù)方法帶到各種實(shí)時(shí)數(shù)據(jù)處理用途中。

QuestDB的旅程始于2013年的原型設(shè)計(jì),我們在去年HackerNews發(fā)布會(huì)期間(https://news.ycombinator.com/item?id=23975807)發(fā)表的一篇文章中描述了2013年之后所發(fā)生的變化。我們的用戶在金融服務(wù)、物聯(lián)網(wǎng)、應(yīng)用監(jiān)控和機(jī)器學(xué)習(xí)領(lǐng)域都部署了QuestDB,使時(shí)間序列分析變得快速、高效和便捷。

什么是存儲(chǔ)時(shí)間序列數(shù)據(jù)的最佳方式?

在項(xiàng)目的早期階段,我們受到了基于矢量的append-only系統(tǒng)(如kdb+)的啟發(fā),因?yàn)檫@種模型帶來了速度和簡潔代碼路徑的優(yōu)勢。QuestDB的數(shù)據(jù)模型使用了我們稱之為基于時(shí)間的數(shù)組,這是一種線性數(shù)據(jù)結(jié)構(gòu)。這允許QuestDB在數(shù)據(jù)獲取過程中把數(shù)據(jù)切成小塊,并以并行方式處理所有數(shù)據(jù)。以錯(cuò)誤的時(shí)間順序到達(dá)的數(shù)據(jù)在被持久化到磁盤之前會(huì)在內(nèi)存中進(jìn)行處理和重新排序。因此,數(shù)據(jù)在到達(dá)數(shù)據(jù)庫中之前已經(jīng)按時(shí)間排序。因此,QuestDB不依賴計(jì)算密集的索引來為任何時(shí)間序列的查詢重新排序數(shù)據(jù)。

這種liner模型與其他開源數(shù)據(jù)庫(如InfluxDB或TimescaleDB)中的LSM樹或基于B樹的存儲(chǔ)引擎不同。

除了更好的數(shù)據(jù)獲取能力,QuestDB的數(shù)據(jù)布局使CPU能夠更快地訪問數(shù)據(jù)。我們的代碼庫利用最新CPU架構(gòu)的SIMD指令,對(duì)多個(gè)數(shù)據(jù)元素并行處理同類操作。我們將數(shù)據(jù)存儲(chǔ)在列中,并按時(shí)間進(jìn)行分區(qū),以在查詢時(shí)從磁盤中提取最小的數(shù)據(jù)量。

2106011125241910431403.png

數(shù)據(jù)被存儲(chǔ)在列中,并按時(shí)間進(jìn)行分區(qū)

QuestDB與ClickHouse、InfluxDB和TimescaleDB相比如何?

我們看到時(shí)間序列基準(zhǔn)測試套件(TSBS https://github.com/timescale/tsbs)經(jīng)常出現(xiàn)在關(guān)于數(shù)據(jù)庫性能的討論,因此我們決定提供對(duì)QuestDB和其他系統(tǒng)進(jìn)行基準(zhǔn)測試的能力。TSBS是一個(gè)Go程序集,用于生成數(shù)據(jù)集,然后對(duì)讀寫性能進(jìn)行基準(zhǔn)測試。該套件是可擴(kuò)展的,因此可以包括不同的用例和查詢類型,并在不同系統(tǒng)之間進(jìn)行比較。

以下是我們在AWS EC2 m5.8xlarge實(shí)例上使用多達(dá)14個(gè)worker的純cpu用例的基準(zhǔn)測試結(jié)果,該實(shí)例有16個(gè)內(nèi)核。

210601112524164559475.png

TSBS結(jié)果比較了QuestDB、InfluxDB、ClickHouse和TimescaleDB的最大獲取吞吐量。

我們使用4個(gè)worker達(dá)到最大的攝取性能,而其他系統(tǒng)需要更多的CPU資源來達(dá)到最大的吞吐量。QuestDB用4個(gè)線程達(dá)到了95.9萬行/秒。我們發(fā)現(xiàn)InfluxDB需要14個(gè)線程才能達(dá)到最大的攝取率(334k行/秒),而TimescaleDB用4個(gè)線程達(dá)到145k行/秒。ClickHouse以兩倍于QuestDB的線程達(dá)到914k行/秒。

當(dāng)在4個(gè)線程上運(yùn)行時(shí),QuestDB比ClickHouse快1.7倍,比InfluxDB快6.5倍,比TimescaleDB快6.6倍。

210601112523974694536.png

使用4個(gè)線程的TSBS基準(zhǔn)測試結(jié)果:QuestDB、InfluxDB、ClickHouse和TimescaleDB每秒獲取的行數(shù)。

當(dāng)我們使用AMD Ryzen5處理器再次運(yùn)行該套件時(shí),我們發(fā)現(xiàn),我們能夠使用5個(gè)線程達(dá)到每秒143萬行的最大吞吐量。與我們在AWS上的參考基準(zhǔn)m5.8xlarge實(shí)例所使用的英特爾至強(qiáng)Platinum相比:

2106011125221500359221.png

比較QuestDB TSBS在AWS EC2與AMD Ryzen5上的負(fù)載結(jié)果

你應(yīng)該如何存儲(chǔ)亂序的時(shí)間序列數(shù)據(jù)?

事實(shí)證明,在攝取過程中對(duì) "亂序"(O3)的數(shù)據(jù)進(jìn)行重新排序特別具有挑戰(zhàn)性。這是一個(gè)新的方法,我們想在這篇文章中詳細(xì)介紹一下。我們對(duì)如何處理失序攝取的想法是增加一個(gè)三階段的方法。

1.保持追加模式,直到記錄不按順序到達(dá)為止

2.在內(nèi)存中對(duì)暫存區(qū)的未提交的記錄進(jìn)行排序

3.在提交時(shí)對(duì)分類的無序數(shù)據(jù)和持久化的數(shù)據(jù)進(jìn)行核對(duì)和合并

前兩個(gè)步驟很直接,也很容易實(shí)現(xiàn),依然只是處理追加的數(shù)據(jù),這一點(diǎn)沒變。只有在暫存區(qū)有數(shù)據(jù)的時(shí)候,昂貴的失序提交才會(huì)啟動(dòng)。這種設(shè)計(jì)的好處是,輸出是向量,這意味著我們基于向量的閱讀器仍然是兼容的。

這種預(yù)提交的排序和合并方式給數(shù)據(jù)獲取增加了一個(gè)額外的處理階段,同時(shí)也帶來了性能上的損失。不過,我們還是決定探索這種方法,看看我們能在多大程度上通過優(yōu)化失序提交來減少性能損耗。

我們?nèi)绾畏诸?、合并和提交無序的時(shí)間序列數(shù)據(jù)

處理一個(gè)暫存區(qū)給了我們一個(gè)獨(dú)特的機(jī)會(huì)來全面分析數(shù)據(jù),在這里我們可以完全避免物理合并,并通過快速和直接的memcpy或類似的數(shù)據(jù)移動(dòng)方法來替代。由于我們的基于列的存儲(chǔ),這種方法可以被并行化。我們可以采用SIMD和非時(shí)序數(shù)據(jù)訪問,這對(duì)我們來說是很重要的。

我們通過優(yōu)化版本的radix排序?qū)碜詴捍鎱^(qū)的時(shí)間戳列進(jìn)行排序,所產(chǎn)生的索引被用于并行對(duì)暫存區(qū)的其余列進(jìn)行排序。

210601112522633858319.png

并行得將列進(jìn)行排序

現(xiàn)在排序的暫存區(qū)是相對(duì)于現(xiàn)有分區(qū)數(shù)據(jù)進(jìn)行映射的。從一開始可能并不明顯,但我們正試圖為以下三種類型的每一種建立所需的操作和維度。

210601112522831457341.png

失序(O3)排序和合并方案

當(dāng)以這種方式合并數(shù)據(jù)集時(shí),前綴和后綴組可以是持續(xù)的數(shù)據(jù)、失序的數(shù)據(jù),或者沒有數(shù)據(jù)。合并組(Merge Group)是最繁忙的,因?yàn)樗梢员怀志没臄?shù)據(jù)、失序的數(shù)據(jù)、失序的數(shù)據(jù)和持久化的數(shù)據(jù)占據(jù),或者沒有數(shù)據(jù)。

當(dāng)明確了如何分組和處理暫存區(qū)的數(shù)據(jù)時(shí),一個(gè)工人池就會(huì)執(zhí)行所需的操作,在少量的情況下調(diào)用memcpy,其他都轉(zhuǎn)向SIMD優(yōu)化的代碼。通過前綴、合并和后綴拆分,提交的最大活度(增加CPU容量的易感性)可以通過partition_affected x number_of_columns x 3得到。

時(shí)間序列數(shù)據(jù)應(yīng)該多久進(jìn)行一次排序和合并?

能夠快速復(fù)制數(shù)據(jù)是一個(gè)不錯(cuò)的選擇,但我們認(rèn)為在大多數(shù)時(shí)間序列獲取場景中可以避免大量的數(shù)據(jù)復(fù)制。假設(shè)大多數(shù)實(shí)時(shí)失序的情況是由傳遞機(jī)制和硬件抖動(dòng)造成的,我們可以推斷出時(shí)間戳分布將在一定區(qū)間范圍。

例如,如果任何新的時(shí)間戳值有很大概率落在先前收到的值的10秒內(nèi),那么邊界就是10秒,我們稱這個(gè)為滯后邊界。

當(dāng)時(shí)間戳值遵循這種模式時(shí),推遲提交可以使失序提交成為正常的追加操作。失序系統(tǒng)可以處理任何種類的延遲,但如果延遲的數(shù)據(jù)在指定的滯后邊界內(nèi)到達(dá),它將被優(yōu)先快速處理。

如何比較時(shí)間序列數(shù)據(jù)庫的性能

我們已經(jīng)在TimescaleDB的TSBS GitHub倉庫中開啟了一個(gè)合并請(qǐng)求(Questdb基準(zhǔn)支持 https://github.com/timescale/tsbs/issues/157),增加了針對(duì)QuestDB運(yùn)行基準(zhǔn)測試的能力。同時(shí),用戶可以克隆我們的基準(zhǔn)測試fork(https://github.com/questdb/tsbs),并運(yùn)行該套件以查看自己的結(jié)果。

tsbs_generate_data --use-case="cpu-only" --seed=123 --scale=4000 `。

--timestamp-start="2016-01-01T00:00:00Z" --timestamp-end="2016-01-02T00:00:00Z" \

--log-interval="10s" --format="influx" > /tmp/bigcpu

tsbs_load_questdb --file /tmp/bigcpu --workers 4

構(gòu)建具有授權(quán)許可的開源數(shù)據(jù)庫

在進(jìn)一步推動(dòng)數(shù)據(jù)庫性能的同時(shí),使開發(fā)人員能夠輕松地開始使用我們的產(chǎn)品,這一點(diǎn)每天都激勵(lì)著我們。這就是為什么我們專注于建立一個(gè)堅(jiān)實(shí)的開發(fā)者社區(qū),他們可以通過我們的開源分銷模式參與并改進(jìn)產(chǎn)品。

除了使QuestDB易于使用之外,我們還希望使其易于審計(jì)、審查,提交代碼或其他的項(xiàng)目貢獻(xiàn)。QuestDB的所有源代碼都在GitHub(https://github.com/questdb/questdb)上以Apache 2.0許可證提供,我們歡迎對(duì)此產(chǎn)品的各種貢獻(xiàn),包括在GitHub上創(chuàng)建issue或者提交代碼。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    艾體寶干貨 | 模型數(shù)據(jù)庫解決的到底是什么問題?

    數(shù)據(jù)庫選型的專業(yè)討論中,“模型數(shù)據(jù)庫”已逐步成為熱點(diǎn)概念,但行業(yè)對(duì)其認(rèn)知仍存在偏差——要么被曲解為“無所不能的萬能數(shù)據(jù)庫”,要么被簡化為“圖數(shù)據(jù)
    的頭像 發(fā)表于 02-03 16:08 ?320次閱讀

    國產(chǎn)數(shù)據(jù)庫的AI戰(zhàn)事

    國產(chǎn)數(shù)據(jù)庫硝煙再起,Vastbase V100構(gòu)筑企業(yè)智能基座
    的頭像 發(fā)表于 10-24 20:45 ?4062次閱讀
    國產(chǎn)<b class='flag-5'>數(shù)據(jù)庫</b>的AI戰(zhàn)事

    工業(yè)上面為什么有這么多通訊協(xié)議?

    編程語言還多。 那問題來了——為什么工業(yè)上會(huì)有這么多通訊協(xié)議?難道不能像電腦一樣,統(tǒng)一一個(gè)以太網(wǎng)協(xié)議就行了嗎?今天, 深圳市鋇錸技術(shù)有限公司 ?帶你從技術(shù)和歷史的角度,看看背后的原因。 一、歷史造就了“協(xié)議時(shí)代” 工業(yè)通訊的發(fā)展,其實(shí)是從“各自為政”開始的。上世紀(jì)八九
    的頭像 發(fā)表于 10-21 17:55 ?649次閱讀
    工業(yè)上面為什么有<b class='flag-5'>這么多</b>通訊協(xié)議?

    華納云為游戲數(shù)據(jù)庫選擇高性能NVMe SSD存儲(chǔ)

    游戲數(shù)據(jù)庫對(duì)速度、可靠性和可擴(kuò)展性有極高要求。隨著在線游戲的發(fā)展,開發(fā)者越來越依賴NVMe SSD存儲(chǔ)來提供服務(wù)器租用和服務(wù)器托管解決方案。本文將指導(dǎo)您了解為游戲數(shù)據(jù)庫選擇高性能NVMe SSD存儲(chǔ)
    的頭像 發(fā)表于 09-30 16:03 ?1089次閱讀

    數(shù)據(jù)庫性能優(yōu)化指南

    作為一名在大廠摸爬滾打多年的運(yùn)維老兵,我見過太多因?yàn)?b class='flag-5'>數(shù)據(jù)庫性能問題導(dǎo)致的生產(chǎn)事故。今天分享一套完整的數(shù)據(jù)庫優(yōu)化方法論,從SQL層面到硬件配置,幫你徹底解決性能瓶頸!
    的頭像 發(fā)表于 08-18 11:21 ?757次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle數(shù)據(jù)庫故障的數(shù)據(jù)恢復(fù)案例

    Oracle數(shù)據(jù)庫故障: 某公司一臺(tái)服務(wù)器上部署Oracle數(shù)據(jù)庫。服務(wù)器意外斷電導(dǎo)致數(shù)據(jù)庫報(bào)錯(cuò),報(bào)錯(cuò)內(nèi)容為“system01.dbf需要更多的恢復(fù)來保持一致性”。該Oracle數(shù)據(jù)庫
    的頭像 發(fā)表于 07-24 11:12 ?654次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—服務(wù)器異常斷電導(dǎo)致Oracle<b class='flag-5'>數(shù)據(jù)庫</b>故障的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    三款主流國產(chǎn)數(shù)據(jù)庫的技術(shù)特點(diǎn)

    隨著數(shù)字經(jīng)濟(jì)的快速發(fā)展和數(shù)據(jù)安全要求的提升,國產(chǎn)數(shù)據(jù)庫正迎來前所未有的發(fā)展機(jī)遇。在信創(chuàng)浪潮推動(dòng)下,達(dá)夢數(shù)據(jù)庫、TiDB、華為高斯數(shù)據(jù)庫等國產(chǎn)數(shù)據(jù)庫
    的頭像 發(fā)表于 07-14 11:08 ?1174次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—MongoDB數(shù)據(jù)庫文件丟失的數(shù)據(jù)恢復(fù)案例

    MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)操作系統(tǒng)為Windows Server的虛擬機(jī)上部署MongoDB數(shù)據(jù)庫。 MongoDB數(shù)據(jù)庫故障: 工作人員在MongoDB服務(wù)仍
    的頭像 發(fā)表于 07-01 11:13 ?645次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—MongoDB<b class='flag-5'>數(shù)據(jù)庫</b>文件丟失的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)案例

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)—SQL Server數(shù)據(jù)庫被加密如何恢復(fù)數(shù)據(jù)

    SQL Server數(shù)據(jù)庫故障: SQL Server數(shù)據(jù)庫被加密,無法使用。 數(shù)據(jù)庫MDF、LDF、log日志文件名字被篡改。
    的頭像 發(fā)表于 06-25 13:54 ?690次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—SQL Server<b class='flag-5'>數(shù)據(jù)庫</b>被加密如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    工業(yè)數(shù)據(jù)中臺(tái)如何支持智能決策

    工程:構(gòu)建決策基礎(chǔ) 源異構(gòu)數(shù)據(jù)融合 工業(yè)場景中,設(shè)備數(shù)據(jù)(如PLC、傳感器)、業(yè)務(wù)數(shù)據(jù)(ERP、MES)和外部數(shù)據(jù)(天氣、供應(yīng)鏈)分散且格
    的頭像 發(fā)表于 06-16 17:13 ?526次閱讀

    oracle數(shù)據(jù)恢復(fù)—oracle數(shù)據(jù)庫誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)數(shù)據(jù)?

    oracle數(shù)據(jù)庫誤執(zhí)行truncate命令導(dǎo)致數(shù)據(jù)丟失是一種常見情況。通常情況下,oracle數(shù)據(jù)庫誤操作刪除數(shù)據(jù)只需要通過備份恢復(fù)數(shù)據(jù)
    的頭像 發(fā)表于 06-05 16:01 ?1139次閱讀
    oracle<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)—oracle<b class='flag-5'>數(shù)據(jù)庫</b>誤執(zhí)行錯(cuò)誤truncate命令如何恢復(fù)<b class='flag-5'>數(shù)據(jù)</b>?

    SQLSERVER數(shù)據(jù)庫是什么

    SQL Server 是由微軟公司開發(fā)的一款 關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,用于存儲(chǔ)、管理和檢索結(jié)構(gòu)化數(shù)據(jù)。它是企業(yè)級(jí)應(yīng)用中廣泛使用的數(shù)據(jù)庫解決方案之一,尤其適用于Windows平臺(tái),但也
    的頭像 發(fā)表于 05-26 09:19 ?1180次閱讀

    MySQL數(shù)據(jù)庫是什么

    MySQL數(shù)據(jù)庫是一種 開源的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS) ,由瑞典MySQL AB公司開發(fā),后被Oracle公司收購。它通過結(jié)構(gòu)化查詢語言(SQL)進(jìn)行數(shù)據(jù)存儲(chǔ)、管理和操作,廣泛應(yīng)用于Web
    的頭像 發(fā)表于 05-23 09:18 ?1228次閱讀

    數(shù)據(jù)庫數(shù)據(jù)恢復(fù)——MongoDB數(shù)據(jù)庫文件拷貝后服務(wù)無法啟動(dòng)的數(shù)據(jù)恢復(fù)

    MongoDB數(shù)據(jù)庫數(shù)據(jù)恢復(fù)環(huán)境: 一臺(tái)Windows Server操作系統(tǒng)虛擬機(jī)上部署MongoDB數(shù)據(jù)庫。 MongoDB數(shù)據(jù)庫故障: 管理員在未關(guān)閉MongoDB服務(wù)的
    的頭像 發(fā)表于 04-09 11:34 ?875次閱讀
    <b class='flag-5'>數(shù)據(jù)庫</b><b class='flag-5'>數(shù)據(jù)</b>恢復(fù)——MongoDB<b class='flag-5'>數(shù)據(jù)庫</b>文件拷貝后服務(wù)無法啟動(dòng)的<b class='flag-5'>數(shù)據(jù)</b>恢復(fù)

    TDengine 發(fā)布時(shí)序數(shù)據(jù)分析 AI 智能體 TDgpt,核心代碼開源

    組成部分,標(biāo)志著時(shí)序數(shù)據(jù)庫在原生集成 AI 能力方面邁出了關(guān)鍵一步。 TDgpt 是內(nèi)嵌于 TDengine 中的時(shí)序數(shù)據(jù)分析 AI 智能體,具備時(shí)序數(shù)據(jù)預(yù)測、異常檢測、數(shù)據(jù)補(bǔ)全、分類
    的頭像 發(fā)表于 03-27 10:30 ?736次閱讀
    TDengine 發(fā)布<b class='flag-5'>時(shí)序數(shù)據(jù)</b>分析 AI 智能體 TDgpt,核心代碼開源