時序資料庫

abce發表於2024-08-17

當需要顯示每分鐘、每天或任何其他日期範圍的分析資料時,你需要使用時間序列資料庫。時間序列資料庫儲存了帶有相關時間戳的資料點,因此可以向使用者顯示時間範圍內的趨勢。它通常用於基於時間的資訊和分析的視覺化。

什麼是時間序列資料庫?

在時間序列資料庫中,每條記錄都包含一個時間戳。時間戳可用於顯示單個資料點,也可用於圖表和分析。時間序列資料庫專門用於需要日期範圍的資訊,如跟蹤天氣或查詢為監控目的記錄的特定事件。

什麼是時間序列集合?

時間序列資料庫儲存所有資料,但時間序列集合是從資料庫中提取並返回應用程式的資料片段。時間序列集合以資料集的形式從資料庫中獲取,資料集包含給定日期範圍內的資料點。使用者或應用程式將時間範圍作為輸入傳送給資料庫,資料庫會返回給定範圍內每個資料點的集合。

時間序列資料庫的工作原理

通常,建立時間序列資料庫是為了獲取大量資料,以便將來進行分析。使用者在應用程式中設定日期範圍,資料庫就會返回一組資料點。資料庫以時間間隔採集資料。例如,股票行情器可能每分鐘顯示一次股票價格的變化。資料庫儲存股票名稱、價格和時間戳,以記錄每分鐘的股票價格,用於分析和記錄歷史資訊。

從時間序列資料庫中檢索的資料會按時間順序排列記錄,這樣開發人員就可以構建視覺化效果,而無需太多開銷。資料庫是功能強大的伺服器,因此它們對資料集進行排序的速度要比前端網路應用快得多。時間序列資料庫接收應用程式的輸入,確定資料的排序方式,以便開發人員向使用者顯示分析結果。例如,使用者可能要獲得特定日期範圍內的股票價格資料,並按升序排序。

流行的時間序列資料庫的比較

每個時間序列資料庫都有一個用於儲存和檢索資料的後端引擎。該引擎必須快速高效,既能儲存大量資料,又能以極小的延遲檢索資料。你可以在傳統資料庫中儲存基於時間的資料,但市場上有幾種時間序列資料庫是專門為查詢和儲存這類資料而構建的。

InfluxDB:開源的 TSDB

開源資料庫受到一些開發人員的青睞,因為他們可以 fork 程式碼庫,對基礎產品進行自己的修改。InfluxDB 是一個開源時間序列資料庫,每秒可儲存成千上萬個資料點。如果想監控工業應用中的物聯網裝置等基礎設施,InfluxDB 是一個不錯的選擇。

Prometheus 與 InfluxDB

InfluxDB 與 Prometheus 的主要區別在於檢索資料的方式。

使用 InfluxDB,應用程式會不斷向資料庫傳送資料,並在資料庫中儲存和檢索資料。Prometheus 透過應用程式介面(API)工作,應用程式介面推送資料,資料庫使用 API 輪詢儲存的資料。對於系統分佈在多個地點的大型企業,Prometheus 基於雲的 API 可讓開發人員從多個地點上傳資料,並在中央控制皮膚中進行審查。

TimescaleDB 與 InfluxDB

InfluxDB 是一種 NoSQL 資料庫,而 TimescaleDB 是一種關聯式資料庫。關聯式資料庫的工作方式與 NoSQL 資料庫截然不同。關聯式資料庫使用表和鍵來連線每個表中儲存的資料。瞭解資料庫儲存資料的方式非常重要,因為檢索資料的方式使用不同的語法。如果你知道要儲存的資料並能將其組織到表中,那麼 TimescaleDB 就是一個可行的選擇。

Elasticsearch 與 InfluxDB

為了提高效能,Elasticsearch 是企業應用中常用的引擎。它的效能略優於 InfluxDB,這是因為它具有分片索引的能力,而分片索引是 Elasticsearch 中作為 "文件"儲存的資料的對映。Elasticsearch 應用於大型資料集,在這種情況下,應用程式和使用者將檢索來自各種時間戳的數百萬個資料點的資料集。例如,Elasticsearch 可用於檢視日誌檔案,以監控大型企業網路環境中任何可疑的使用者活動。

何時使用時間序列資料庫

大多數時間序列資料庫都用於監控硬體或軟體,以便使用大量資料來分析特定事件。要清楚地瞭解環境中的事件,需要從多個來源收集大量資料。例如,物聯網感測器可能會收集多臺機器的溫度資料。時間序列資料庫可儲存一天中每分鐘的溫度,這樣工程師就能發現任何異常情況,並在機器發生故障前進行補救。

關係型資料庫與時間序列資料庫

大多數時間序列資料庫使用 NoSQL 文件來儲存資料,這是儲存非結構化資料的常見方式。非結構化資料意味著開發人員可以儲存時間戳和名稱等資料,而不必受將資料組織到定義的錶行中的限制。關聯式資料庫要求開發人員使用特定的結構來儲存資料,因此對於具有未知值和資料型別的時間序列資料來說,關聯式資料庫不是可行的選擇。例如,開發人員無法使用關聯式資料庫在時間戳列中儲存字串值,但使用時間序列 NoSQL 資料庫卻可以做到這一點。

NoSQL 資料庫與時間序列資料庫的比較

對於未知值,NoSQL 資料庫是首選方法。你應該選擇支援 NoSQL 的資料庫,如 InfluxDB 或 Elasticsearch。這些時間序列資料庫提供批次資料儲存,查詢時效能快速。它們主要用於大型企業應用,部署起來要困難得多。配置不正確的 NoSQL 資料庫可能會抑制查詢處理過程中的效能。

時間序列資料庫的優勢

每種資料庫都能儲存資訊,但時間序列資料庫是專門為基於時間的分析而構建的。時間序列資料庫的優勢在於它能夠儲存大量資料,每個資料點都包含一個時間戳。由於時間序列資料庫是針對大型資料集而構建的,因此在插入新記錄和檢索大型資料集方面,時間序列資料庫通常比傳統資料庫更快、更高效。

對於涉及日期和時間的查詢,時間序列資料庫通常更加準確,而且儲存時間序列資料的效率更高。任何想要儲存監控資料的組織都會從時間序列資料庫中受益。時間序列資料庫能夠檢索大型資料集,用於分析、視覺化、財務趨勢、活動資訊以及一天中不同時間間隔內頻繁發生的環境變化。

時間序列資料庫的缺點

與任何高階基礎架構一樣,時間序列資料庫更難正確部署和配置。由於大多數時間序列資料庫都是 NoSQL 資料庫,如果不對其進行最佳化,部署不當的 NoSQL 資料庫就會出現效能低下的問題。配置需要企業內部有人瞭解最佳化資料庫的正確方法。

希望儲存時間序列資料的企業需要儲存大量資料的資源。資料可以儲存在雲中,但會增加 IT 成本。支援資料儲存和時間序列資料庫處理的基礎設施可能成本高昂。

結論

如果需要為基於時間的資料找到更好的解決方案,時間序列資料庫是一個不錯的選擇。審查不同型別的資料庫引擎,考慮成本,並找到一種能隨著業務增長和資料儲存量增加而擴充套件的資料庫引擎。切記審查配置和最佳化選項,以確保資料庫儘可能高效地執行。

原文地址:https://www.purestorage.com/au/knowledge/what-is-a-time-series-database.html

相關文章