TDengine vs MongoDB
TDengine 概覽
MongoDB 概覽
TDengine 與 MongoDB 綜合對比
| 對比項(xiàng) | TDengine | MongoDB |
|---|---|---|
| 官網(wǎng) | http://www.fjzmyy.cn/ | https://www.mongodb.com/ |
| 數(shù)據(jù)庫類型 | 采用時序數(shù)據(jù)庫模型,支持超級表和子表的概念 | 采用文檔模型,支持 JSON 格式的文檔存儲 |
| 技術(shù)文檔 | https://docs.taosdata.com/ | https://www.mongodb.com/docs/ |
| 開源性 | 開源 | 開源 |
| 云服務(wù) | TDengine Cloud | MongoDB Atlas |
| 底層語言 | C | C++ |
| 操作系統(tǒng) | Linux、Windows、MacOS | Linux、Windows、MacOS |
| 語言連接器 | · Python · Java · C/C++ · Go · Node.js · Rust · C# |
· Python · Java · Node.js · C# · Ruby · PHP · Go · C++ |
| 語法 | 支持標(biāo)準(zhǔn) SQL | MongoDB Query Language |
| 分布式 | 支持分布式架構(gòu) | 支持分布式架構(gòu) |
| 開源許可證 | AGPLv3 | SSPL |
| 應(yīng)用場景 | 工業(yè)大數(shù)據(jù)、物聯(lián)網(wǎng) IoT 平臺、智能制造、能源數(shù)據(jù)管理等 | 內(nèi)容管理系統(tǒng)、移動應(yīng)用程序、實(shí)時分析和物聯(lián)網(wǎng)數(shù)據(jù)管理等 |
TDengine 的數(shù)據(jù)庫功能
- 高效寫入寫入數(shù)據(jù):支持 SQL 寫入、無模式寫入,并可與多種第三方工具的無縫集成,它們都可以僅通過配置而無需任何代碼即可將數(shù)據(jù)寫入 TDengine。
- 高效查詢:支持標(biāo)準(zhǔn) SQL,并提供一系列時序數(shù)據(jù)特有查詢和窗口函數(shù),支持 UDF。
- 流式計(jì)算:TDengine 不僅支持連續(xù)查詢,還支持事件驅(qū)動的流式計(jì)算,這樣在處理時序數(shù)據(jù)時就無需 Flink 或 Spark 這樣流式計(jì)算組件。
- 數(shù)據(jù)訂閱:應(yīng)用程序可以訂閱一張表或一組表的數(shù)據(jù),提供與 Kafka 相同的 API,并且可以指定過濾條件。
- 緩存功能:將每張表的最后一條記錄緩存起來,這樣無需 Redis 就能對時序數(shù)據(jù)進(jìn)行高效處理。
- 可視化:支持與各種第三方可視化組件的無縫集成,如 Grafana、Seeq、Google Data Studio 等。
- 集群:可以通過增加節(jié)點(diǎn)進(jìn)行水平擴(kuò)展以提升處理能力,通過多副本提供高可用能力,支持通過 Kubernetes 部署 TDengine。
- 管理:監(jiān)控運(yùn)行在 TDengine 中的實(shí)例,支持多種數(shù)據(jù)導(dǎo)入/導(dǎo)出方式
- 工具:提供交互式命令行程序(CLI),便于管理集群,檢查系統(tǒng)狀態(tài),做即席查詢;提供壓力測試工具 taosBenchmark,用于測試 TDengine 的性能
- 提供各種語言的連接器:如 C/C++、Java、Go、Node.js、Rust、Python、C# 等,支持 REST 接口。
MongoDB 的數(shù)據(jù)庫功能
- 靈活的文檔模型:MongoDB 使用 JSON 格式的文檔來存儲數(shù)據(jù),支持復(fù)雜的數(shù)據(jù)結(jié)構(gòu)和嵌套文檔,適用于各種類型的數(shù)據(jù)存儲需求。
- 多種查詢操作:MongoDB 支持各種類型的查詢操作,包括基本的 CRUD 操作(插入、查詢、更新、刪除)、復(fù)雜的聚合查詢和地理空間查詢等。
- 高可用性和容錯性:MongoDB 支持副本集和自動故障轉(zhuǎn)移機(jī)制,確保數(shù)據(jù)的高可用性和連續(xù)性。
- 分片集群:MongoDB 支持分片集群架構(gòu),可以水平擴(kuò)展和負(fù)載均衡數(shù)據(jù)存儲和查詢。
- 索引和聚合管道:MongoDB 支持多種類型的索引和聚合管道操作,以提高查詢性能和靈活性。
- 地理空間索引和查詢:MongoDB 提供了地理空間索引和查詢功能,支持地理位置數(shù)據(jù)的存儲和查詢操作。
- 安全性和權(quán)限控制:MongoDB 提供了強(qiáng)大的安全性功能,包括訪問控制、數(shù)據(jù)加密和身份認(rèn)證等。
TDengine 關(guān)鍵概念
- 采集量(Metric):采集量是指傳感器、設(shè)備或其他類型采集點(diǎn)采集的物理量,比如電流、電壓、溫度、壓力、GPS 位置等,是隨時間變化的,數(shù)據(jù)類型可以是整型、浮點(diǎn)型、布爾型,也可是字符串。
- 標(biāo)簽(Label):標(biāo)簽是指傳感器、設(shè)備或其他類型采集點(diǎn)的靜態(tài)屬性,不是隨時間變化的,比如設(shè)備型號、顏色、設(shè)備的所在地等,數(shù)據(jù)類型可以是任何類型。
- 數(shù)據(jù)采集點(diǎn)(Data Collection Point):數(shù)據(jù)采集點(diǎn)是指按照預(yù)設(shè)時間周期或受事件觸發(fā)采集物理量的硬件或軟件。一個數(shù)據(jù)采集點(diǎn)可以采集一個或多個采集量,但這些采集量都是同一時刻采集的,具有相同的時間戳。對于復(fù)雜的設(shè)備,往往有多個數(shù)據(jù)采集點(diǎn),每個數(shù)據(jù)采集點(diǎn)采集的周期都可能不一樣,而且完全獨(dú)立,不同步。
- 表(Table):因?yàn)椴杉恳话闶墙Y(jié)構(gòu)化數(shù)據(jù),同時為降低學(xué)習(xí)門檻,TDengine 采用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫模型管理數(shù)據(jù)。用戶需要先創(chuàng)建庫,然后創(chuàng)建表,之后才能插入或查詢數(shù)據(jù)。
- 超級表(STable):由于一個數(shù)據(jù)采集點(diǎn)一張表,導(dǎo)致表的數(shù)量巨增,難以管理,而且應(yīng)用經(jīng)常需要做采集點(diǎn)之間的聚合操作,聚合的操作也變得復(fù)雜起來。為解決這個問題,TDengine 引入超級表(Super Table,簡稱為 STable)的概念。超級表是指某一特定類型的數(shù)據(jù)采集點(diǎn)的集合。
- 子表(Subtable):當(dāng)為某個具體數(shù)據(jù)采集點(diǎn)創(chuàng)建表時,用戶可以使用超級表的定義做模板,同時指定該具體采集點(diǎn)(表)的具體標(biāo)簽值來創(chuàng)建該表。通過超級表創(chuàng)建的表稱之為子表。
- 庫(Database):庫是指一組表的集合。TDengine 容許一個運(yùn)行實(shí)例有多個庫,而且每個庫可以配置不同的存儲策略。
MongoDB 關(guān)鍵概念
- 數(shù)據(jù)庫(Database):MongoDB 中的數(shù)據(jù)庫是集合(Collections)的容器,集合是一組相關(guān)文檔的集合。
- 集合(Collection):MongoDB 中的集合類似于關(guān)系數(shù)據(jù)庫中的表,用于存儲一組文檔。
- 文檔(Document):MongoDB 中的文檔是以 BSON(二進(jìn)制 JSON)格式存儲的單個記錄。集合中的文檔可以具有不同的結(jié)構(gòu)。
- 字段(Field):字段是文檔內(nèi)的鍵值對,類似于關(guān)系數(shù)據(jù)庫中的屬性或列。
- 索引(Index):MongoDB 中的索引是一種數(shù)據(jù)結(jié)構(gòu),用于提高集合內(nèi)特定字段的查詢性能。
TDengine 底層架構(gòu)
TDengine 可以部署在本地、云端或作為混合解決方案,從而在部署和管理上具有靈活性。
TDengine 的架構(gòu)設(shè)計(jì)主要包括以下組件:
- 存儲層:TDengine 的存儲層負(fù)責(zé)實(shí)際存儲數(shù)據(jù),它采用了列式存儲結(jié)構(gòu),以提高查詢性能和壓縮數(shù)據(jù)大小。數(shù)據(jù)存儲在本地磁盤上,以保證數(shù)據(jù)的持久性和可靠性。
- 計(jì)算層:TDengine 的計(jì)算層負(fù)責(zé)執(zhí)行查詢和計(jì)算任務(wù)。它包括了查詢處理器和計(jì)算引擎,用于解析查詢語句、執(zhí)行計(jì)算操作,并將結(jié)果返回給客戶端。
- 分布式架構(gòu):TDengine 支持分布式架構(gòu),可以將數(shù)據(jù)分片存儲在多個節(jié)點(diǎn)上,以實(shí)現(xiàn)水平擴(kuò)展和負(fù)載均衡。每個節(jié)點(diǎn)可以獨(dú)立地處理查詢請求和執(zhí)行計(jì)算任務(wù),從而提高了系統(tǒng)的性能和可靠性。
- 元數(shù)據(jù)管理:TDengine 使用元數(shù)據(jù)來管理數(shù)據(jù)的存儲和分布。元數(shù)據(jù)包括了數(shù)據(jù)庫、表、分區(qū)等信息,以及數(shù)據(jù)在各個節(jié)點(diǎn)上的分布情況。元數(shù)據(jù)管理使得 TDengine 能夠有效地管理和路由數(shù)據(jù)。
- 客戶端接口:TDengine 提供了各種客戶端接口,包括 SQL 接口、HTTP 接口和客戶端庫等。開發(fā)人員可以使用。
MongoDB 底層架構(gòu)
MongoDB 使用靈活的類 JSON 文檔模型來存儲數(shù)據(jù),這允許在無需停機(jī)的情況下進(jìn)行動態(tài)模式更改。它支持即時查詢、索引和實(shí)時聚合。主要包括以下組件:
- 節(jié)點(diǎn):MongoDB 集群由多個節(jié)點(diǎn)組成,每個節(jié)點(diǎn)可以扮演不同的角色,如主節(jié)點(diǎn)、從節(jié)點(diǎn)或仲裁節(jié)點(diǎn)。
- 副本集:MongoDB 使用副本集來提供數(shù)據(jù)的冗余備份和高可用性。副本集由一個主節(jié)點(diǎn)和多個從節(jié)點(diǎn)組成,主節(jié)點(diǎn)負(fù)責(zé)處理所有寫操作,而從節(jié)點(diǎn)則復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)。如果主節(jié)點(diǎn)發(fā)生故障,副本集會自動選舉新的主節(jié)點(diǎn),保證系統(tǒng)的連續(xù)性和可用性。
- 分片集群:MongoDB 使用分片集群來實(shí)現(xiàn)水平擴(kuò)展和負(fù)載均衡。分片集群將數(shù)據(jù)分割成多個分片,每個分片可以存儲部分?jǐn)?shù)據(jù),并分布在不同的節(jié)點(diǎn)上。路由節(jié)點(diǎn)負(fù)責(zé)將查詢請求路由到相應(yīng)的分片上,并將結(jié)果合并返回給客戶端。
- 配置服務(wù)器:配置服務(wù)器存儲了分片集群的元數(shù)據(jù)信息,包括分片的位置和范圍等信息。配置服務(wù)器使得 MongoDB 能夠有效地管理和路由數(shù)據(jù)。
- 驅(qū)動程序:MongoDB 驅(qū)動程序是與 MongoDB 數(shù)據(jù)庫交互的客戶端庫,提供了各種語言的 API,如 Python、Java、Node.js 等。開發(fā)人員可以使用驅(qū)動程序來連接 MongoDB 數(shù)據(jù)庫,并執(zhí)行各種操作,如插入文檔、查詢數(shù)據(jù)等。
TDengine 主要特性
由于 TDengine 充分利用了時序數(shù)據(jù)特點(diǎn),比如結(jié)構(gòu)化、無需事務(wù)、很少刪除或更新、寫多讀少等等,因此與其他時序數(shù)據(jù)庫相比,TDengine 有以下特點(diǎn):
- 高性能:TDengine 是唯一一個解決了時序數(shù)據(jù)存儲的高基數(shù)難題的時序數(shù)據(jù)庫,支持上億數(shù)據(jù)采集點(diǎn),并在數(shù)據(jù)插入、查詢和數(shù)據(jù)壓縮上遠(yuǎn)勝其它時序數(shù)據(jù)庫。
- 極簡時序數(shù)據(jù)平臺:TDengine 內(nèi)建緩存、流式計(jì)算和數(shù)據(jù)訂閱等功能,為時序數(shù)據(jù)的處理提供了極簡的解決方案,從而大幅降低了業(yè)務(wù)系統(tǒng)的設(shè)計(jì)復(fù)雜度和運(yùn)維成本。
- 云原生:通過原生的分布式設(shè)計(jì)、數(shù)據(jù)分片和分區(qū)、存算分離、RAFT 協(xié)議、Kubernetes 部署和完整的可觀測性,TDengine 是一款云原生時序數(shù)據(jù)庫并且能夠部署在公有云、私有云和混合云上。
- 簡單易用:對系統(tǒng)管理員來說,TDengine 大幅降低了管理和維護(hù)的代價(jià)。對開發(fā)者來說, TDengine 提供了簡單的接口、極簡的解決方案和與第三方工具的無縫集成。對數(shù)據(jù)分析專家來說,TDengine 提供了便捷的數(shù)據(jù)訪問能力。
- 分析能力:通過超級表、存儲計(jì)算分離、分區(qū)分片、預(yù)計(jì)算和其它技術(shù),TDengine 能夠高效地瀏覽、格式化和訪問數(shù)據(jù)。
- 核心開源:TDengine 的核心代碼包括集群功能全部在開源協(xié)議下公開。全球超過 528.7k 個運(yùn)行實(shí)例,GitHub Star 22.9k(數(shù)據(jù)統(tǒng)計(jì)至 2024.5.10),且擁有一個活躍的開發(fā)者社區(qū)。
MongoDB 主要特性
- 靈活的數(shù)據(jù)模型:MongoDB 的無模式數(shù)據(jù)模型允許存儲和查詢多種數(shù)據(jù)類型,使其能夠處理復(fù)雜和不斷演化的數(shù)據(jù)結(jié)構(gòu)。
- 高可用性:MongoDB 的副本集功能通過自動故障轉(zhuǎn)移和數(shù)據(jù)冗余確保高可用性。
- 水平擴(kuò)展:MongoDB 的分片集群架構(gòu)實(shí)現(xiàn)了水平擴(kuò)展和負(fù)載均衡,使其能夠處理大規(guī)模數(shù)據(jù)處理和查詢。
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í)時數(shù)據(jù)存儲、查詢、分析,選擇一款針對物聯(lián)網(wǎng) IoT 平臺的時序數(shù)據(jù)庫,成為了目前迫切需要解決的問題。
- 工業(yè)互聯(lián)網(wǎng):在工業(yè)大數(shù)據(jù)領(lǐng)域,生產(chǎn)、測試、運(yùn)行階段都可能會產(chǎn)生大量帶有時間戳的傳感器數(shù)據(jù),這都屬于時序數(shù)據(jù)。時序數(shù)據(jù)主要由各類型實(shí)時監(jiān)測、檢查與分析設(shè)備所采集或產(chǎn)生,涉及工業(yè)制造、電力、化工、工程作業(yè)、智能制造等,具備寫多讀少、量非常大等典型特性。
- 車聯(lián)網(wǎng):通過車機(jī)報(bào)文的分析,可以實(shí)現(xiàn)實(shí)時車載網(wǎng)絡(luò)質(zhì)量監(jiān)控、車機(jī)零部件健康度監(jiān)控、用戶駕駛行為監(jiān)控、車載系統(tǒng)安全分析、合規(guī)監(jiān)控等業(yè)務(wù)。隨著汽車保有量和車機(jī)傳感器數(shù)量的日益增多,選對時序數(shù)據(jù)庫,可以避免車載報(bào)文平臺在數(shù)據(jù)存儲方面的瓶頸。
- 電力能源:伴隨電力物聯(lián)網(wǎng)的發(fā)展,發(fā)、輸、變、配、用各個環(huán)節(jié)產(chǎn)生的數(shù)據(jù)量越來越大,嚴(yán)重挑戰(zhàn)傳統(tǒng)的以關(guān)系型數(shù)據(jù)庫為核心的解決方案。如何應(yīng)對大數(shù)據(jù)量下電力、能源數(shù)據(jù)的存儲、查詢、分析,如何選擇一款電力時序數(shù)據(jù)庫,成為了目前迫切需要解決的問題。
- IT 運(yùn)維:隨著服務(wù)器、物聯(lián)網(wǎng)設(shè)備逐步增多以及各類新型傳感器的加裝,傳統(tǒng)運(yùn)維方式越發(fā)吃力,嚴(yán)重限制業(yè)務(wù)發(fā)展,因此對硬件系統(tǒng)的運(yùn)行維護(hù)是各行各業(yè)的信息服務(wù)部門普遍關(guān)注和不堪重負(fù)的問題。迫切需要基于海量時序數(shù)據(jù)的平臺來支撐繁雜的運(yùn)維工作。
- 金融:子表多、實(shí)時數(shù)據(jù)量大、數(shù)據(jù)格式固定和保留時限長的金融行情數(shù)據(jù)的存儲計(jì)算十分需要適合的時序數(shù)據(jù)庫來處理,TDengine 提供基于行情中心的資產(chǎn)管理、實(shí)時監(jiān)控、績效分析、風(fēng)險(xiǎn)分析、輿情分控、股票回測、信號模擬、報(bào)表輸出等應(yīng)用投研服務(wù)。
MongoDB 應(yīng)用場景
- 內(nèi)容管理系統(tǒng)(CMS):MongoDB 的靈活數(shù)據(jù)模型使其成為內(nèi)容管理系統(tǒng)的理想選擇,這些系統(tǒng)通常需要能夠存儲和管理各種類型的內(nèi)容,如文章、圖片和視頻。MongoDB 無模式的特性使其能夠輕松適應(yīng)不斷變化的內(nèi)容結(jié)構(gòu)和需求。
- 物聯(lián)網(wǎng)IoT平臺數(shù)據(jù)存儲與分析:MongoDB 對高數(shù)據(jù)量和水平擴(kuò)展性的支持使其適用于存儲和處理由物聯(lián)網(wǎng)設(shè)備生成的數(shù)據(jù),例如傳感器讀數(shù)和設(shè)備日志。其高效的索引和查詢功能使得可以進(jìn)行實(shí)時的數(shù)據(jù)分析和物聯(lián)網(wǎng)設(shè)備的監(jiān)控。
- 電子商務(wù)平臺:MongoDB 的靈活性和性能特性使其成為電子商務(wù)平臺的優(yōu)選,這些平臺需要高效存儲和查詢多樣化的產(chǎn)品信息、客戶數(shù)據(jù)和交易記錄。MongoDB 的靈活數(shù)據(jù)模型使得可以輕松適應(yīng)產(chǎn)品屬性和客戶偏好的變化,而高可用性和可擴(kuò)展性特性確保了用戶體驗(yàn)的流暢和響應(yīng)。
TDengine 定價(jià)模型
TDengine OSS 采用 AGPLv3 許可證,是一款開源軟件,在遵守 AGPL 的許可下,可以免費(fèi)使用。此外,TDengine 還提供了 TDengine Enterprise 和 TDengine Cloud 兩個商業(yè)版本,這兩個版本在 TDengine OSS 基礎(chǔ)上提供了額外的功能,并提供專業(yè)技術(shù)支持。
TDengine Enterprise 版本的價(jià)格和場景用量等息息相關(guān),可選按年訂閱或者永久授權(quán);TDengine Cloud 的計(jì)費(fèi)方案是根據(jù)實(shí)際數(shù)據(jù)量的計(jì)算資源來確定的,按月收費(fèi),提供入門版、基礎(chǔ)版、標(biāo)準(zhǔn)版、專業(yè)版、旗艦版,可點(diǎn)擊計(jì)費(fèi)方案計(jì)算器來估價(jià)。
MongoDB 定價(jià)模型
MongoDB 提供多種定價(jià)選項(xiàng),包括免費(fèi)的開源社區(qū)版和商業(yè)企業(yè)版。企業(yè)版包括高級功能、管理工具和技術(shù)支持。
MongoDB 還提供了完全托管的基于云的數(shù)據(jù)庫服務(wù) MongoDB Atlas,采用按需付費(fèi)的定價(jià)模式,根據(jù)存儲、數(shù)據(jù)傳輸和計(jì)算資源進(jìn)行計(jì)費(fèi)。MongoDB Atlas 提供了一個免費(fèi)層,供用戶試用服務(wù)而不產(chǎn)生費(fèi)用,但資源有限。



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



-1.png)







證.png)


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



