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



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



-1.png)




.png)


證.png)


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



