TDengine vs TimescaleDB
TDengine 概覽
TimescaleDB 概覽
TDengine 與 TimescaleDB 綜合對比
| 對比項 | TDengine | TimescaleDB |
|---|---|---|
| 官網(wǎng) | http://www.fjzmyy.cn/ | https://www.timescale.com/ |
| 數(shù)據(jù)庫類型 | 采用時序數(shù)據(jù)庫模型,支持超級表和子表的概念 | 基于PostgreSQL,時序數(shù)據(jù)庫模型/span> |
| 技術(shù)文檔 | https://docs.taosdata.com/ | https://docs.timescale.com/ |
| 開源性 | 開源 | 開源 |
| 云服務(wù) | TDengine Cloud | Timescale Cloud |
| 底層語言 | C | C |
| 操作系統(tǒng) | Linux、Windows、MacOS | Linux、Windows、MacOS |
| 語言連接器 | · Python · Java · C/C++ · Go · Node.js · Rust · C# |
· C/C++ · Java · Python · Go · Node.js |
| 語法 | 支持標準 SQL | 兼容標準的 SQL 語法,支持 ANSI SQL 標準 |
| 分布式 | 支持分布式架構(gòu) | 支持分布式架構(gòu) |
| 開源許可證 | AGPLv3 | Timescale License(TSL)、Apache License 2.0 |
| 應(yīng)用場景 | 工業(yè)大數(shù)據(jù)、物聯(lián)網(wǎng) IoT 平臺、智能制造、能源數(shù)據(jù)管理等 | 物聯(lián)網(wǎng) IoT 平臺、監(jiān)控和性能管理、DevOps 和 IT 運維、時序數(shù)據(jù)分析。 |
TDengine 的數(shù)據(jù)庫功能
- 高效寫入寫入數(shù)據(jù):支持 SQL 寫入、無模式寫入,并可與多種第三方工具的無縫集成,它們都可以僅通過配置而無需任何代碼即可將數(shù)據(jù)寫入 TDengine。
- 高效查詢:支持標準 SQL,并提供一系列時序數(shù)據(jù)特有查詢和窗口函數(shù),支持 UDF。
- 流式計算:TDengine 不僅支持連續(xù)查詢,還支持事件驅(qū)動的流式計算,這樣在處理時序數(shù)據(jù)時就無需 Flink 或 Spark 這樣流式計算組件。
- 數(shù)據(jù)訂閱:應(yīng)用程序可以訂閱一張表或一組表的數(shù)據(jù),提供與 Kafka 相同的 API,并且可以指定過濾條件。
- 緩存功能:將每張表的最后一條記錄緩存起來,這樣無需 Redis 就能對時序數(shù)據(jù)進行高效處理。
- 可視化:支持與各種第三方可視化組件的無縫集成,如 Grafana、Seeq、Google Data Studio 等。
- 集群:可以通過增加節(jié)點進行水平擴展以提升處理能力,通過多副本提供高可用能力,支持通過 Kubernetes 部署 TDengine。
- 管理:監(jiān)控運行在 TDengine 中的實例,支持多種數(shù)據(jù)導(dǎo)入/導(dǎo)出方式
- 工具:提供交互式命令行程序(CLI),便于管理集群,檢查系統(tǒng)狀態(tài),做即席查詢;提供壓力測試工具 taosBenchmark,用于測試 TDengine 的性能
- 提供各種語言的連接器:如 C/C++、Java、Go、Node.js、Rust、Python、C# 等,支持 REST 接口。
TimescaleDB 的數(shù)據(jù)庫功能
- 完整的SQL支持:TimescaleDB 支持完整的 SQL 語法,使其易于使用,并且可以按照傳統(tǒng)關(guān)系數(shù)據(jù)庫的方式進行擴展。
- 高性能的分析功能:它具備強大的分析功能,適用于處理大量時間序列數(shù)據(jù)。
- 基于PostgreSQL擴展:作為 PostgreSQL 的插件,TimescaleDB 支持已有的 PostgreSQL 特性,可以方便地集成到現(xiàn)有基礎(chǔ)設(shè)施中。
- 自動分片:TimescaleDB 自動按時間和空間對數(shù)據(jù)進行分片,以實現(xiàn)高效的存儲和查詢。
- 強大的寫入能力:每秒可以寫入百萬級的數(shù)據(jù)點。
- 多個SERVER和CHUNK的并行查詢:支持同時查詢多個服務(wù)器和數(shù)據(jù)塊。
- 自動的按時間保留策略:可以根據(jù)時間自動保留數(shù)據(jù)。
TDengine 關(guān)鍵概念
- 采集量(Metric):采集量是指傳感器、設(shè)備或其他類型采集點采集的物理量,比如電流、電壓、溫度、壓力、GPS 位置等,是隨時間變化的,數(shù)據(jù)類型可以是整型、浮點型、布爾型,也可是字符串。
- 標簽(Label):標簽是指傳感器、設(shè)備或其他類型采集點的靜態(tài)屬性,不是隨時間變化的,比如設(shè)備型號、顏色、設(shè)備的所在地等,數(shù)據(jù)類型可以是任何類型。
- 數(shù)據(jù)采集點(Data Collection Point):數(shù)據(jù)采集點是指按照預(yù)設(shè)時間周期或受事件觸發(fā)采集物理量的硬件或軟件。一個數(shù)據(jù)采集點可以采集一個或多個采集量,但這些采集量都是同一時刻采集的,具有相同的時間戳。對于復(fù)雜的設(shè)備,往往有多個數(shù)據(jù)采集點,每個數(shù)據(jù)采集點采集的周期都可能不一樣,而且完全獨立,不同步。
- 表(Table):因為采集量一般是結(jié)構(gòu)化數(shù)據(jù),同時為降低學(xué)習門檻,TDengine 采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫模型管理數(shù)據(jù)。用戶需要先創(chuàng)建庫,然后創(chuàng)建表,之后才能插入或查詢數(shù)據(jù)。
- 超級表(STable):由于一個數(shù)據(jù)采集點一張表,導(dǎo)致表的數(shù)量巨增,難以管理,而且應(yīng)用經(jīng)常需要做采集點之間的聚合操作,聚合的操作也變得復(fù)雜起來。為解決這個問題,TDengine 引入超級表(Super Table,簡稱為 STable)的概念。超級表是指某一特定類型的數(shù)據(jù)采集點的集合。
- 子表(Subtable):當為某個具體數(shù)據(jù)采集點創(chuàng)建表時,用戶可以使用超級表的定義做模板,同時指定該具體采集點(表)的具體標簽值來創(chuàng)建該表。通過超級表創(chuàng)建的表稱之為子表。
- 庫(Database):庫是指一組表的集合。TDengine 容許一個運行實例有多個庫,而且每個庫可以配置不同的存儲策略。
TimescaleDB 關(guān)鍵概念
- Hypertables(超表):Hypertable 是一個虛擬表,表現(xiàn)為單個表,但實際上由多個基礎(chǔ)表(稱為 chunk)組成。
- Chunks(分片):Chunk 是 Hypertable 的實際存儲單元,包含一定時間范圍內(nèi)的數(shù)據(jù)。
- Continuous Aggregates(連續(xù)聚合):Continuous Aggregate 是一種物化視圖,實時計算并存儲時間序列數(shù)據(jù)的聚合結(jié)果。
- Compression(壓縮):TimescaleDB 提供了數(shù)據(jù)壓縮功能,用于減少存儲空間和成本。
- Retention Policies(數(shù)據(jù)保留策略):Retention Policy 是一種自動管理數(shù)據(jù)生命周期的機制。
- Time Buckets(時間桶):時間桶是一種用于時間序列數(shù)據(jù)分組的機制,將數(shù)據(jù)按時間間隔進行分組。
- Multi-Node(多節(jié)點架構(gòu)):TimescaleDB 支持多節(jié)點架構(gòu),通過多個節(jié)點分布數(shù)據(jù)和查詢負載。
- Background Workers(后臺工作線程):TimescaleDB 使用后臺工作線程處理異步任務(wù),如數(shù)據(jù)壓縮、連續(xù)聚合刷新等。
- Integration with PostgreSQL(與 PostgreSQL 的集成):TimescaleDB 完全兼容 PostgreSQL,并在其基礎(chǔ)上進行擴展。
- Adaptive Chunking(自適應(yīng)分片):自適應(yīng)分片是一種根據(jù)數(shù)據(jù)寫入速度和查詢模式自動調(diào)整分片大小的機制。
TDengine 底層架構(gòu)
TDengine 可以部署在本地、云端或作為混合解決方案,從而在部署和管理上具有靈活性。
TDengine 的架構(gòu)設(shè)計主要包括以下組件:
- 存儲層:TDengine 的存儲層負責實際存儲數(shù)據(jù),它采用了列式存儲結(jié)構(gòu),以提高查詢性能和壓縮數(shù)據(jù)大小。數(shù)據(jù)存儲在本地磁盤上,以保證數(shù)據(jù)的持久性和可靠性。
- 計算層:TDengine 的計算層負責執(zhí)行查詢和計算任務(wù)。它包括了查詢處理器和計算引擎,用于解析查詢語句、執(zhí)行計算操作,并將結(jié)果返回給客戶端。
- 分布式架構(gòu):TDengine 支持分布式架構(gòu),可以將數(shù)據(jù)分片存儲在多個節(jié)點上,以實現(xiàn)水平擴展和負載均衡。每個節(jié)點可以獨立地處理查詢請求和執(zhí)行計算任務(wù),從而提高了系統(tǒng)的性能和可靠性。
- 元數(shù)據(jù)管理:TDengine 使用元數(shù)據(jù)來管理數(shù)據(jù)的存儲和分布。元數(shù)據(jù)包括了數(shù)據(jù)庫、表、分區(qū)等信息,以及數(shù)據(jù)在各個節(jié)點上的分布情況。元數(shù)據(jù)管理使得 TDengine 能夠有效地管理和路由數(shù)據(jù)。
- 客戶端接口:TDengine 提供了各種客戶端接口,包括 SQL 接口、HTTP 接口和客戶端庫等。開發(fā)人員可以使用。
TimescaleDB 底層架構(gòu)
TimescaleDB 的底層架構(gòu)基于 PostgreSQL,并通過插件的方式進行擴展。以下是 TimescaleDB 的主要組成部分:
- Hypertables:TimescaleDB 引入了 Hypertables 的概念,這是一種特殊的表,用于存儲時序數(shù)據(jù)。Hypertables 將數(shù)據(jù)按照時間進行分片,以便高效地存儲和查詢。
- Chunks:Hypertables 中的數(shù)據(jù)被分成多個塊,稱為 Chunks。每個 Chunk 包含一段時間內(nèi)的數(shù)據(jù)。Chunks 可以自動創(chuàng)建和刪除,以適應(yīng)數(shù)據(jù)的變化。
- Continuous Aggregates:這是一個優(yōu)化功能,用于預(yù)計算聚合結(jié)果,以加速查詢。它可以在后臺自動更新。
- Compression:TimescaleDB 支持數(shù)據(jù)壓縮,以減少存儲空間占用。
- 分布式架構(gòu):可以將 TimescaleDB 部署在多個節(jié)點上,以實現(xiàn)分布式存儲和查詢。
總之,TimescaleDB 的底層架構(gòu)充分利用了 PostgreSQL 的功能,并針對時序數(shù)據(jù)進行了優(yōu)化,使其成為處理大規(guī)模時間序列數(shù)據(jù)的強大工具。
TDengine 主要特性
由于 TDengine 充分利用了時序數(shù)據(jù)特點,比如結(jié)構(gòu)化、無需事務(wù)、很少刪除或更新、寫多讀少等等,因此與其他時序數(shù)據(jù)庫相比,TDengine 有以下特點:
- 高性能:TDengine 是唯一一個解決了時序數(shù)據(jù)存儲的高基數(shù)難題的時序數(shù)據(jù)庫,支持上億數(shù)據(jù)采集點,并在數(shù)據(jù)插入、查詢和數(shù)據(jù)壓縮上遠勝其它時序數(shù)據(jù)庫。
- 極簡時序數(shù)據(jù)平臺:TDengine 內(nèi)建緩存、流式計算和數(shù)據(jù)訂閱等功能,為時序數(shù)據(jù)的處理提供了極簡的解決方案,從而大幅降低了業(yè)務(wù)系統(tǒng)的設(shè)計復(fù)雜度和運維成本。
- 云原生:通過原生的分布式設(shè)計、數(shù)據(jù)分片和分區(qū)、存算分離、RAFT 協(xié)議、Kubernetes 部署和完整的可觀測性,TDengine 是一款云原生時序數(shù)據(jù)庫并且能夠部署在公有云、私有云和混合云上。
- 簡單易用:對系統(tǒng)管理員來說,TDengine 大幅降低了管理和維護的代價。對開發(fā)者來說, TDengine 提供了簡單的接口、極簡的解決方案和與第三方工具的無縫集成。對數(shù)據(jù)分析專家來說,TDengine 提供了便捷的數(shù)據(jù)訪問能力。
- 分析能力:通過超級表、存儲計算分離、分區(qū)分片、預(yù)計算和其它技術(shù),TDengine 能夠高效地瀏覽、格式化和訪問數(shù)據(jù)。
- 核心開源:TDengine 的核心代碼包括集群功能全部在開源協(xié)議下公開。全球超過 528.7k 個運行實例,GitHub Star 22.9k(數(shù)據(jù)統(tǒng)計至 2024.5.10),且擁有一個活躍的開發(fā)者社區(qū)。
TimescaleDB 主要特性
- Hypertable:Hypertable 是自動按時間對數(shù)據(jù)進行分區(qū)的 PostgreSQL 表。使用 Hypertable 的方式與常規(guī)的 PostgreSQL 表相同,但增加了一些額外功能,使管理時序數(shù)據(jù)更加輕松。你可以通過創(chuàng)建 Hypertable 來處理時序數(shù)據(jù),從而提高性能和查詢效率。
- 持續(xù)聚合:TimescaleDB 支持在連續(xù)時間窗口內(nèi)進行聚合操作,以便更高效地處理大量時序數(shù)據(jù)。
- 壓縮:TimescaleDB 使用列存儲格式,能夠更有效地壓縮數(shù)據(jù),同時減少 I/O 操作。這對于大量時間序列數(shù)據(jù)的存儲和查詢至關(guān)重要。
TDengine 應(yīng)用場景
- 物聯(lián)網(wǎng):整個物聯(lián)網(wǎng) IoT 領(lǐng)域的的數(shù)據(jù)量越來越大,傳統(tǒng)大數(shù)據(jù)的方案以及以關(guān)系型數(shù)據(jù)庫為核心的解決方案都開始捉襟見肘。如何應(yīng)對大數(shù)據(jù)量下的實時數(shù)據(jù)存儲、查詢、分析,選擇一款針對物聯(lián)網(wǎng) IoT 平臺的時序數(shù)據(jù)庫,成為了目前迫切需要解決的問題。
- 工業(yè)互聯(lián)網(wǎng):在工業(yè)大數(shù)據(jù)領(lǐng)域,生產(chǎn)、測試、運行階段都可能會產(chǎn)生大量帶有時間戳的傳感器數(shù)據(jù),這都屬于時序數(shù)據(jù)。時序數(shù)據(jù)主要由各類型實時監(jiān)測、檢查與分析設(shè)備所采集或產(chǎn)生,涉及工業(yè)制造、電力、化工、工程作業(yè)、智能制造等,具備寫多讀少、量非常大等典型特性。
- 車聯(lián)網(wǎng):通過車機報文的分析,可以實現(xiàn)實時車載網(wǎng)絡(luò)質(zhì)量監(jiān)控、車機零部件健康度監(jiān)控、用戶駕駛行為監(jiān)控、車載系統(tǒng)安全分析、合規(guī)監(jiān)控等業(yè)務(wù)。隨著汽車保有量和車機傳感器數(shù)量的日益增多,選對時序數(shù)據(jù)庫,可以避免車載報文平臺在數(shù)據(jù)存儲方面的瓶頸。
- 電力能源:伴隨電力物聯(lián)網(wǎng)的發(fā)展,發(fā)、輸、變、配、用各個環(huán)節(jié)產(chǎn)生的數(shù)據(jù)量越來越大,嚴重挑戰(zhàn)傳統(tǒng)的以關(guān)系型數(shù)據(jù)庫為核心的解決方案。如何應(yīng)對大數(shù)據(jù)量下電力、能源數(shù)據(jù)的存儲、查詢、分析,如何選擇一款電力時序數(shù)據(jù)庫,成為了目前迫切需要解決的問題。
- IT 運維:隨著服務(wù)器、物聯(lián)網(wǎng)設(shè)備逐步增多以及各類新型傳感器的加裝,傳統(tǒng)運維方式越發(fā)吃力,嚴重限制業(yè)務(wù)發(fā)展,因此對硬件系統(tǒng)的運行維護是各行各業(yè)的信息服務(wù)部門普遍關(guān)注和不堪重負的問題。迫切需要基于海量時序數(shù)據(jù)的平臺來支撐繁雜的運維工作。
- 金融:子表多、實時數(shù)據(jù)量大、數(shù)據(jù)格式固定和保留時限長的金融行情數(shù)據(jù)的存儲計算十分需要適合的時序數(shù)據(jù)庫來處理,TDengine 提供基于行情中心的資產(chǎn)管理、實時監(jiān)控、績效分析、風險分析、輿情分控、股票回測、信號模擬、報表輸出等應(yīng)用投研服務(wù)。
TimescaleDB 應(yīng)用場景
- TimescaleDB 是一款基于 PostgreSQL 的時序數(shù)據(jù)庫,適用于處理大規(guī)模時序數(shù)據(jù)的各種場景。以下是一些主要應(yīng)用場景:
- 物聯(lián)網(wǎng)(IoT)系統(tǒng):使用 TimescaleDB 存儲和分析來自 IoT 設(shè)備的傳感器數(shù)據(jù),利用其針對實時監(jiān)控和報告的時序優(yōu)化。
- 金融科技應(yīng)用:將 TimescaleDB 集成到金融科技解決方案中,處理高頻交易數(shù)據(jù),確保在高峰時段具有強大的性能。
- 地理空間分析:通過 TimescaleDB 存儲地理位置數(shù)據(jù),例如出租車軌跡、船只位置等,以便進行時序分析。
- 監(jiān)控和告警系統(tǒng):使用 TimescaleDB 存儲和查詢監(jiān)控數(shù)據(jù)、事件日志和告警信息,以便快速響應(yīng)和分析。
- 傳感器數(shù)據(jù)采集:TimescaleDB 適用于存儲和分析各種傳感器數(shù)據(jù),如氣象、環(huán)境、工業(yè)設(shè)備等。



互聯(lián)網(wǎng).png)



-1.png)










伙伴.png)
伙伴.png)
伙伴.png)



