㈠ Spring Boot中使用時序資料庫InfluxDB
除了最常用的關系資料庫和緩存之外,之前我們已經介紹了在Spring Boot中如何配置和使用 MongoDB 、 LDAP 這些存儲的案例。接下來,我們繼續介紹另一種特殊的資料庫:時序資料庫InfluxDB在Spring Boot中的使用。
什麼是時序資料庫?全稱為時間序列資料庫。時間序列資料庫主要用於指處理帶時間標簽(按照時間的順序變化,即時間序列化)的數據,帶時間標簽的數據也稱為時間序列數據。時間序列數據主要由電力行業、化工行業等各類型實時監測、檢查與分析設備所採集、產生的數據,這些工業數據的典型特點是:產生頻率快(每一個監測點一秒鍾內可產生多條數據)、嚴重依賴於採集時間(每一條數據均要求對應唯一的時間)、測點多信息量大(常規的實時監測系統均有成千上萬的監測點,監測點每秒鍾都產生數據,每天產生幾十GB的數據量)。雖然關系型資料庫也可以存儲基於時間序列的數據,但由於存儲結構上的劣勢,使得這些數據無法高效地實現高頻存儲和查詢統計,因此就誕生了一種專門針對時間序列來做存儲和優化的資料庫,以滿足更高的效率要求。(參考:網路:時序資料庫https://ke..com/item/%E6%97%B6%E5%BA%8F%E6%95%B0%E6%8D%AE%E5%BA%93/922671)
InfluxDB就是目前比較流行的開源時序資料庫(官網地址:https://www.influxdata.com/),我們比較常見的使用場景就是一些與時間相關的高頻的數據記錄和統計需要,比如:監控數據的存儲和查詢。
在進行下面的動手環節之前,先了解一下InfluxDB中的幾個重要名詞:
其中,一個Point由三個部分組成:
在了解了什麼是時序資料庫以及InfluxDB一些基礎概念之後,下面我們通過一個簡單的定時上報監控數據的小案例,進一步理解InfluxDB的基礎配置、數據組織和寫入操作!
第一步 :創建一個基礎的Spring Boot項目(如果您還不會,可以參考這篇文章:快速入門(https://blog.didispace.com/spring-boot-learning-21-1-1/)
第二步 :在 pom.xml 中引入influx的官方SDK
注意:這里因為Spring Boot 2.x版本的parent中有維護InfluxDB的SDK版本,所以不需要手工指明版本信息。如果使用的Spring Boot版本比較老,那麼可能會缺少version信息,就需要手工寫了。
第三步 :配置要連接的influxdb信息
三個屬性分別代表:連接地址、用戶名、密碼。到這一步,基礎配置就完成了。
注意:雖然沒有spring data的支持,但spring boot 2.x版本中也實現了InfluxDB的自動化配置,所以只需要寫好配置信息,就可以使用了。具體配置屬性可以查看源碼: org.springframework.boot.autoconfigure.influx.InfluxDbProperties 。
第四步 :創建定時任務,模擬上報數據,並寫入InfluxDB
第一步 :啟動InfluxDB,並通過命令行准備好要使用的資料庫,主要涉及的命令如下;
第二步 :啟動Spring Boot應用,在定時任務的作用下,我們會看到類似下面的日誌:
第三步 :通過命令,查看一下InfluxDB中是否已經存在這些數據
可以看到,已經存在與日誌中一樣的數據了。
本文的完整工程可以查看下面倉庫中 2.x 目錄下的 chapter6-3 :
㈡ 請問個人使用,哪種資料庫比較好
對於個人使用而言,選擇哪種資料庫主要取決於你的需求和使用場景。以下是一些常用的資料庫及其特點:
MySQL:開源免費,適合野羨李小型項目和網站,易於使用,具有廣泛的社區支持和資源。
PostgreSQL:開源免費派譽,適合大型項目和企業應用,功能頌遲強大,支持高級特性,例如完整的事務處理和高級查詢語言。
SQLite:輕量級的嵌入式資料庫,不需要獨立的伺服器,適合小型應用和移動設備應用。
Microsoft SQL Server:商業資料庫,適合在Windows環境下使用,具有強大的功能和高性能。
Oracle:商業資料庫,適合大型企業應用,功能非常強大,但價格昂貴。
在選擇資料庫時,可以考慮以下因素:
資料庫的類型和功能是否滿足你的需求。
資料庫的性能是否滿足你的要求。
資料庫的可靠性和安全性是否得到保障。
資料庫的易用性和可維護性如何。
資料庫的成本是否合理。
綜合考慮以上因素,你可以選擇適合自己使用的資料庫。