国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

Mysql|Sql Server|Oracle|Redis|MongoDB|PostgreSQL|Sqlite|DB2|mariadb|Access|數據庫技術|

服務器之家 - 數據庫 - 數據庫技術 - InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

2021-08-03 00:5551CTO陳峻 數據庫技術

如今隨著云計算、物聯網、以及機器學習對于時序數據需求的持續爆炸式增長,軟件架構師們應該如何選擇時序數據庫呢?本文將綜合比較市場上最為流行的三種TSDB--InfluxDB,TimescaleDB和QuestDB,以幫助您做出明智的選擇。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

【51CTO.com快譯】在過去的十年間,我們親歷了關系型、非關系型、在線分析處理(OLAP)型、以及在線事務處理(OLTP)型數據庫的市場之爭,也注意到了諸如:Snowflake、MongoDB、Cockroach Labs、以及Neo4j等新型數據庫的產生和發展。而根據DB-Engines的一項針對數據庫管理系統調查的統計(如下圖所示),時序型數據庫(time series database,TSDB)是自2020年以來,增長最快的數據庫類型之一。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

為什么要使用時序數據庫?

時序數據庫是針對攝取、處理和存儲帶有時間戳數據進行優化過的數據庫。此類數據可能包括來自服務器和應用程序的參數指標、來自物聯網傳感器的讀數、網站或應用程序上的用戶交互、以及金融市場上的各種交易活動。

此處的時序數據通常具有如下屬性特征:

  • 每個數據點都包含了用于索引、聚合、以及采樣的時間戳。此類數據往往是多維的、且相關的。
  • 它們主要以高速寫入(或稱:攝取)的方式,來捕獲高頻的數據。
  • 數據的匯總視圖(例如:降采樣、聚合視圖或趨勢線)可以提供比單個數據點更多的洞見。例如,考慮到網絡的不穩定性、或傳感器讀數可能出現的異常,我們需要為在一段時間內,針對超過預定閾值的某些平均值設置警報,而并非僅針對單個數據點。
  • 通常需要獲取在一段時間內訪問某類數據(例如,獲取過去一周內的點擊率數據),以供深入分析。

雖然其他類型的數據庫,也可以在一定程度上處理時序數據,但是TSDB可以在設計上,針對上述數據特性,更有效地處理那些隨著時間的推移,而開展的各類數據攝取、壓縮、以及聚合活動。

如今隨著云計算、物聯網、以及機器學習對于時序數據需求的持續爆炸式增長,軟件架構師們應該如何選擇TSDB呢?本文將綜合比較市場上最為流行的三種TSDB--InfluxDBTimescaleDBQuestDB,以幫助您做出明智的選擇。

InfluxDB

于2013年被首次發布的InfluxDB,是TSDB領域的領導者。如下圖所示,它甚至超越了之前的Graphite和OpenTSDB。與許多開源(OSS)數據庫類似,InfluxDB不但能夠為單個節點提供MIT許可,而且提供了InfluxDB Cloud付費計劃,以及為企業級用戶提供了集群、以及生產環境就緒(production-ready)等功能。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

圖片來源:DB-engines

如下圖所示,在2019年發布InfluxDB 2.x之前,InfluxDB平臺是由TICK技術棧所組成,即:Telegraf(收集和報告參數指標的代理)、InfluxDB、Chronograf(從InfluxDB處查詢數據的接口)、以及Kapacitor(實時數據流的處理引擎)。InfluxDB 1.x主要通過社區和集成,收集、存儲和查看來自服務器和Web應用的時序數據指標。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

圖片來源:Influxdata

InfluxDB 2.x從本質上簡化了整體架構。它將TICK棧捆綁到了單個二進制文件中,并且引入了一些新的功能,來執行收集(如:原生的Prometheus插件)、組織(如:各種組織和存儲桶)、可視化(如:數據瀏覽器)數據、及其Flux語言。

在介紹InfluxDB的工作原理之前,讓我們先了解如下三個關鍵概念:

  • 數據模型(標簽集模型):除了時間戳字段,其實每個數據元素還會包含各種標簽(如:可選的、已被索引的元數據字段)、字段(如:鍵和值)、以及指標(標簽、字段和時間戳的容器)。下圖示例展示了由科學家Anderson和Mullen在Klamath和Portland兩地采集到的、蜜蜂和螞蟻的數量普查數據。此處的位置(location)和科學家(scientist)標簽,被當作蜜蜂和螞蟻普查范圍內的“字段/值(field/value)”對。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

有關蜜蜂和螞蟻普查數據的示例

  • 數據模式(TSM & TSI):是一些存儲在時間結構合并樹(time-structured merge tree,TSM)和時序索引(time series index,TSI)文件中的數據元素。其中,TSM可以被認為是具有預寫日志(write-ahead log,WAL)和類似于SSTable只讀文件的LSM樹。這些文件通常是經過排序和壓縮的。而TSI則是可供InfluxDB內存映射的磁盤文件索引。它可以讓操作系統以最少最近使用(Least Recently Used,LRU)內存的方式,來幫助處理具有高基數(high cardinality)的數據集(如,集合中的那些大型元素)。
  • Flux腳本語言:是由InfluxDB開發的一種,可用于協助查詢數據的特定域語言。同時,Flux也帶有一個可協助從SQL數據源進行查詢的SQL包。

值得注意的是,InfluxDB在攝取數據之前,不會強制執行某種結構模式。相反,它的結構模式是根據輸入的數據被自動創建,以及從標簽和字段中推斷出來的。這種類似NoSQL的體驗,對于InfluxDB來說有利也有弊。對于那些能夠自動適合此類標記集模型基數的數據集(如:各種物聯網數據、財務數據、以及大多數基礎設施和應用程序的參數指標)而言,InfluxDB非常容易上手。用戶也無需擔心設計模式或索引(如下圖所示)。同時,對于那些目標是創建物理資產數字模型的用例而言,它也是非常實用的。例如,在物聯網中,人們可能需要創建一個數字孿生,來表示一組傳感器,并攝取各種有組織的數據。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

圖片來源:Influxdata

另一方面,當數據集需要在連續的字段上建立索引(畢竟InfluxDB不支持數字,而且標簽必須是字符串)或驗證數據時,這種“無模式”就是一種缺陷。此外,由于標簽會被索引,因此如果標簽會經常變化(如,元數據可能在初次攝取后,就發生了變化)的話,僅依賴InfluxDB來推斷模式,就可能會產生昂貴的開銷。

再者,由InfluxDB決定創建其自定義的功能性數據腳本語言(如Flux),會給整個生態系統增加一層復雜性。對此,InfluxDB的團隊特別強調了如下兩個從類SQL的InfluxQL轉換為Flux 的驅動場景:

  • 時序數據符合基于流的功能處理模型。其中,數據流是從一個輸出轉換為下一個輸出。而由SQL支持的關系代數模型,則不能處理這種操作和函數的鏈接。
  • 通過InfluxDB為時序數據(如,指數級的移動平均)的常見操作,提供一流的支持,而這并非SQL標準的一部分。

當然,用戶需要花時間去熟悉Flux的語法,特別是那些追求簡單的SQL查詢方式,以及不打算學習另一種新語言的用戶,尤為如此。好在InfluxDB已擁有大型的社區與集成,而且Flux能夠與內置的儀表板相結合。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

圖片來源:Influxdata

總的來說,在面向基礎設施和應用監控的需求時,InfluxDB能夠與各種數據源無縫地集成。如果時序數據能夠與標簽集模型非常吻合的話,那么InfluxDB是一個不錯的選擇。可見,InfluxDB的優缺點可以被歸結為:

  • 優點:無模式攝取、龐大的社區、與流行工具相集成。
  • 缺點:具有高基數、自定義查詢/處理語言的數據集。

TimescaleDB

InfluxDB需要從頭開始構建新的數據庫和自定義語言,而TimescaleDB則建立在PostgreSQL之上,并添加了一個被稱為超級表(hypertables)的中間層。該層將數據分塊到多個底層數據表中,并將其抽象為一個可用于數據交互的單個大表。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

與PostgreSQL的兼容性是TimescaleDB的最大賣點。TimescaleDB能夠完全支持所有的SQL功能(如:連接、二級和部分索引),以及諸如PostGIS之類流行的擴展。作為PostgreSQL的擴展,TimescaleDB不但提供諸如Azure Database for PostgreSQL與Aiven之類的云托管選項,也提供了針對虛擬機或容器的各種自管理選項。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

圖片來源:Stack Overflow

TimescaleDB最初是針對物聯網平臺,使用InfluxDB來存儲它們的傳感器數據。由于網絡不穩定性,導致了物聯網時序數據經常會出現擁堵和失序,因此TimescaleDB在高基數方面具有如下三個特點:

  • 超級表(Hypertables):TimescaleDB基于時間列、以及其他“空間”值(如:設備的UID、位置標識符、或股票代號),來將其超級表劃分成塊。用戶可以通過配置這些塊,將最新的數據保存到內存中,并按照時間列,將數據異步壓縮和重新排序至磁盤(并非攝取時間),以及在節點之間,以事務的方式進行復制和遷移。
  • 持續聚合(Continuous Aggregation):通常,物聯網數據在匯總時更為實用,因此我們無需在每個匯總查詢中去掃描大量的數據。由于支持數據的持續聚合,TimescaleDB能夠快速地計算出諸如:小時平均值、最小值和最大值等關鍵指標(如,計算出下午3點到4點之間的平均溫度,或是下午3點時刻的確切溫度)。這將有助于創建高性能的儀表板與分析結果。
  • 數據保留(Data Retention):在傳統關系型數據庫中,大量的刪除操作往往代價高昂。然而,由于TimescaleDB是以塊的形式存儲數據的,因此它提供了一種drop_chunks的功能,可以在同等開銷下,快速地刪除舊的數據。由于舊數據的相關性會隨著時間的推移而降低,因此TimescaleDB可以通過與長期存儲(如,OLAP或Blob存儲)一起使用,來移走舊的數據,節省磁盤空間,進而為新的數據上提供優異的性能。

就性能而言,時序基準套件(Time Series Benchmark Suite,TTSBS,)詳細比較了TimescaleDB 1.7.1和InfluxDB 1.8.0(兩者都是OSS版本)在插入和讀取延遲方面的性能指標。不過,由于如今兩者都已經擁有了2.x版本,因此該分析略顯過時。從下圖比較結果可知,TimescaleDB會隨著數據基數的增長(以3.5倍速),提供卓越的性能。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

InfluxDB與TimescaleDB的攝取速度比較

TimescaleDB團隊指出,InfluxDB的基于日志結構合并樹系統(tree-based system,TSI)與TimescaleDB的B樹索引方法,是性能制勝的法寶。當然,我在此并未武斷地認為TimescaleDB在性能方面就一定優于InfluxDB。畢竟性能基準測試受到數據模型、硬件、以及配置等多方面的影響較大。該比較結果僅表明,TimescaleDB可能更適合數據基數較高的物聯網用例(例如,在1000萬臺設備中,獲悉設備X的平均功耗)。具體有關這兩個數據庫之間的深度比較,請參見由Timescale自行提供的《TimescaleDB與InfluxDB的比較》。

總體而言,TimescaleDB非常適合那些尋求顯著性能提升,而不想通過大量重構來遷移現有SQL數據庫的團隊。盡管TimescaleDB相對較新(于2017年首次被發布),但是許多物聯網初創公司已在使用它作為中間數據存儲,以快速提取橫跨數月的聚合參數指標,并將舊的數據移至長期存儲處。如果您已經在Kubernetes集群上運行著 PostgreSQL,那么安裝TimescaleDB和遷移數據的任務都會相對比較容易。

總的說來,TimescaleDB的優缺點可以被歸結為:

  • 優點:與PostgreSQL兼容性,可以很好地擴展數據基數,并提供各種部署模型。
  • 缺點:結構模式固定,而且在攝取之前增加了復雜性和數據的轉換工作。

QuestDB

對于那些既希望利用InfluxDB內聯協議的靈活性,又熟悉PostgreSQL的人來說,QuestDB(YC S20)作為一個較新的時序數據庫,可以滿足開發者的這兩個要求。它是一個用Java和C++編寫的開源TSDB,雖然被推出僅一年多,但是已排名到了前15。從原理上說,QuestDB是利用內存映射文件,在數據提交到磁盤之前,實現快速讀寫的。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

圖片來源:QuestDB

QuestDB通過使用Java和C++,來從頭開始??構建數據庫,其主要特征體現在:

  • 性能:解決攝取過程中,特別是在處置高基數的數據集過程中的瓶頸。同時,它還通過順次存儲的時分數據(即,在內存中的混洗),以及僅分析請求的列/分區,而并非以整張表的方式,來支持快速的數據檢索。此外,QuestDB還會運用SIMD指令,實現并行化操作。
  • 兼容性:QuestDB支持InfluxDB的內聯(inline)協議、PostgreSQL wire、REST API、以及CSV上傳的方式,來攝取數據。那些習慣了其他TSDB的用戶,可以輕松地移植他們的現有應用程序,而無需進行大量的重寫工作。
  • 通過SQL進行查詢:雖然能夠支持多種攝取機制,但是QuestDB也會使用SQL作為查詢語言,因此用戶無需額外地學習Flux之類的特定域語言。

在性能方面,QuestDB最近發布了一篇包含基準測試結果的博文,展示了其每秒140萬行的寫入速度。QuestDB團隊在cpu-only的用例中,使用了TSBS基準測試。其中m5.8xlarge在AWS上的實例中,使用了多達14個work(注意:該140萬行的數字,源于使用了AMD Ryzen5的處理器)。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

對于具有高基數(超過1000萬)的數據集,QuestDB的性能優于其他TSDB。憑借著Intel Xeon CPU,其峰值的攝取吞吐量為904k行/秒,并能夠在1000萬臺設備上使用四個線程,且在m5.8xlarge實例上維持約640k行/秒的性能。而當QuestDB在AMD Ryzen 3970X上運行相同的基準測試時,它具有超過1百萬行/秒的攝取吞吐量。

InfluxDB,TimescaleDB和QuestDB三種時序數據庫的比較

各種TSDB在攝取吞吐量與設備數量上的比較

同樣,上述基于數據模型和DB調整的性能基準測試也可能不夠客觀,不過它們在一定程度上體現了QuestDB的性能優勢。

QuestDB的另一個有趣的特性是,在攝取中支持InfluxDB內聯協議和PostgreSQL的wire。對于現有的InfluxDB用戶,您可以將Telegraf配置為指向QuestDB的地址和端口。同理,PostgreSQL用戶使用現有的客戶端庫、或JDBC,將數據寫入QuestDB。當然,無論采用何種攝取方法,我們都可以使用標準的SQL去查詢數據。值得注意的是,其API參考頁面上,顯著地列出了一些例外的情況。

作為該領域的新玩家,QuestDB最明顯的缺點是,缺乏生產環境就緒的功能(如,復制、備份與恢復等)。同時,它雖然能與諸如:PostgreSQL、Grafana、Kafka、Telegraf、以及Tableau等流行工具相集成,但是需要花時間調試與磨合,方可達到上述其他TSDB的水平。

總的說來,QuestDB的優缺點可以被歸結為:

  • 優點:快速攝取(特別是對于具有高基數的數據集),支持InfluxDB內聯協議和PostgreSQL wire,可以通過標準的SQL查詢數據。
  • 缺點:在用戶社區、可用集成、以及對生產環境就緒等方面,都有待改進。

小結

隨著業界對于時序數據需求的不斷增長,專門處理此類數據的TSDB將會被大規模地采用,并引發激烈的競爭。除了上面介紹的三大開源TSDB之外,市場上還有AWS(AWS Timestream)和Azure(Azure Series Insights)等公共云產品。

與傳統數據庫類似,選擇TSDB主要仍取決于您的業務需求、數據模型、以及數據用例。如果您的數據適合于具有豐富的、集成生態系統的標簽集模型,那么請選擇InfluxDB。TimescaleDB則非常適合于現有的PostgreSQL用戶。而如果性能是您的首要考慮因素的話,請您考慮選用QuestDB。

原文標題:Comparing InfluxDB, TimescaleDB, and QuestDB Time Series Databases,作者: Yitaek Hwang

【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】

原文鏈接:https://database.51cto.com/art/202107/675330.htm

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 高清av电影 | 国产精品久久久久久亚洲调教 | 久久久精品一区二区三区 | 亚洲一区在线视频 | 亚洲免费a | 一级久久久 | 亚洲va国产天堂va久久 en | 精品一区二区免费视频 | 日韩欧美在线免费观看 | 最近最新mv字幕免费观看 | 日韩欧美国产一区二区 | 亚洲情网站 | 日韩一区在线视频 | 欧美一级片毛片免费观看视频 | 青青草综合 | 日韩在线视频一区 | 亚洲欧洲自拍 | 黄色免费在线网站 | 国产色 | 日本在线观看 | 久久久国产精品入口麻豆 | 久久精品国产精品青草 | 国产精品久久久久久久久久久久久 | 久久亚洲精品综合 | 综合五月网 | 视频一区在线播放 | 在线欧美亚洲 | 久久久久无码国产精品一区 | 色狠狠网 | 黄色免费视频 | 亚洲成人在线观看视频 | 亚洲视频一区在线 | 日韩欧美一区二区三区在线观看 | 久久久久久久久99精品 | 国产97在线 | 亚洲 | 久久综合伊人 | 亚洲精品一区二区网址 | av手机在线播放 | 日韩午夜激情 | av一区在线观看 | 国产黄色片一级 |