您好,登錄后才能下訂單哦!
本篇內(nèi)容介紹了“時(shí)序數(shù)據(jù)庫(kù)在Spring Boot中的使用方法”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
什么是時(shí)序數(shù)據(jù)庫(kù)?全稱(chēng)為時(shí)間序列數(shù)據(jù)庫(kù)。時(shí)間序列數(shù)據(jù)庫(kù)主要用于指處理帶時(shí)間標(biāo)簽(按照時(shí)間的順序變化,即時(shí)間序列化)的數(shù)據(jù),帶時(shí)間標(biāo)簽的數(shù)據(jù)也稱(chēng)為時(shí)間序列數(shù)據(jù)。
時(shí)間序列數(shù)據(jù)主要由電力行業(yè)、化工行業(yè)等各類(lèi)型實(shí)時(shí)監(jiān)測(cè)、檢查與分析設(shè)備所采集、產(chǎn)生的數(shù)據(jù),這些工業(yè)數(shù)據(jù)的典型特點(diǎn)是:產(chǎn)生頻率快(每一個(gè)監(jiān)測(cè)點(diǎn)一秒鐘內(nèi)可產(chǎn)生多條數(shù)據(jù))、嚴(yán)重依賴(lài)于采集時(shí)間(每一條數(shù)據(jù)均要求對(duì)應(yīng)唯一的時(shí)間)、測(cè)點(diǎn)多信息量大(常規(guī)的實(shí)時(shí)監(jiān)測(cè)系統(tǒng)均有成千上萬(wàn)的監(jiān)測(cè)點(diǎn),監(jiān)測(cè)點(diǎn)每秒鐘都產(chǎn)生數(shù)據(jù),每天產(chǎn)生幾十GB的數(shù)據(jù)量)。雖然關(guān)系型數(shù)據(jù)庫(kù)也可以存儲(chǔ)基于時(shí)間序列的數(shù)據(jù),但由于存儲(chǔ)結(jié)構(gòu)上的劣勢(shì),使得這些數(shù)據(jù)無(wú)法高效的實(shí)現(xiàn)高頻存儲(chǔ)和查詢統(tǒng)計(jì),因此就誕生了一種專(zhuān)門(mén)針對(duì)時(shí)間序列來(lái)做存儲(chǔ)和優(yōu)化的數(shù)據(jù)庫(kù),以滿足更高的效率要求。
InfluxDB就是目前比較流行的開(kāi)源時(shí)序數(shù)據(jù)庫(kù)(官網(wǎng)地址:https://www.influxdata.com/),我們比較常見(jiàn)的使用場(chǎng)景就是一些與時(shí)間相關(guān)的高頻的數(shù)據(jù)記錄和統(tǒng)計(jì)需要,比如:監(jiān)控?cái)?shù)據(jù)的存儲(chǔ)和查詢。
在進(jìn)行下面的動(dòng)手環(huán)節(jié)之前,先了解一下InfluxDB中的幾個(gè)重要名詞:
database:數(shù)據(jù)庫(kù)
measurement:類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)中的table(表)
points:類(lèi)似于關(guān)系數(shù)據(jù)庫(kù)中的row(一行數(shù)據(jù))
其中,一個(gè)Point由三個(gè)部分組成:
time:時(shí)間戳
fields:記錄的值
tags:索引的屬性
在了解了什么是時(shí)序數(shù)據(jù)庫(kù)以及InfluxDB一些基礎(chǔ)概念之后,下面我們通過(guò)一個(gè)簡(jiǎn)單的定時(shí)上報(bào)監(jiān)控?cái)?shù)據(jù)的小案例,進(jìn)一步理解InfluxDB的基礎(chǔ)配置、數(shù)據(jù)組織和寫(xiě)入操作!
第一步:創(chuàng)建一個(gè)基礎(chǔ)的Spring Boot項(xiàng)目(如果您還不會(huì),可以參考這篇文章:快速入門(mén)1)
第二步:在pom.xml中引入influx的官方SDK
<dependency> <groupId>org.influxdb</groupId> <artifactId>influxdb-java</artifactId> </dependency>
注意:這里因?yàn)镾pring Boot 2.x版本的parent中有維護(hù)InfluxDB的SDK版本,所以不需要手工指明版本信息。如果使用的Spring Boot版本比較老,那么可能會(huì)缺少version信息,就需要手工寫(xiě)了。
第三步:配置要連接的influxdb信息
spring.influx.url=http://localhost:8086 spring.influx.user=admin spring.influx.password=
三個(gè)屬性分別代表:連接地址、用戶名、密碼。到這一步,基礎(chǔ)配置就完成了。
注意:雖然沒(méi)有spring data的支持,但spring boot 2.x版本中也實(shí)現(xiàn)了InfluxDB的自動(dòng)化配置,所以只需要寫(xiě)好配置信息,就可以使用了。具體配置屬性可以查看源碼:org.springframework.boot.autoconfigure.influx.InfluxDbProperties。
第四步:創(chuàng)建定時(shí)任務(wù),模擬上報(bào)數(shù)據(jù),并寫(xiě)入InfluxDB
@Service @AllArgsConstructor @Slf4j public class Monitor { private InfluxDB influxDB; @Scheduled(fixedRate = 5000) public void writeQPS() { // 模擬要上報(bào)的統(tǒng)計(jì)數(shù)據(jù) int count = (int) (Math.random() * 100); Point point = Point.measurement("ApiQPS") // ApiQPS表 .tag("url", "/hello") // url字段 .addField("count", count) // 統(tǒng)計(jì)數(shù)據(jù) .time(System.currentTimeMillis(), TimeUnit.MILLISECONDS) // 時(shí)間 .build(); // 往test庫(kù)寫(xiě)數(shù)據(jù) influxDB.write("test", "autogen", point); log.info("上報(bào)統(tǒng)計(jì)數(shù)據(jù):" + count); } }
第一步:?jiǎn)?dòng)InfluxDB,并通過(guò)命令行準(zhǔn)備好要使用的數(shù)據(jù)庫(kù),主要涉及的命令如下;
進(jìn)入InfluxDB:
$ influx
查詢當(dāng)前存在的數(shù)據(jù)庫(kù):
> show databases
創(chuàng)建數(shù)據(jù)庫(kù)(注意數(shù)據(jù)庫(kù)名稱(chēng)與上面Java代碼中write的第一個(gè)參數(shù)一致):
> create database "test"
第二步:?jiǎn)?dòng)Spring Boot應(yīng)用,在定時(shí)任務(wù)的作用下,我們會(huì)看到類(lèi)似下面的日志:
2021-08-03 01:52:47.732 INFO 94110 --- [ main] c.d.chapter63.Chapter63Application : Started Chapter63Application in 2.326 seconds (JVM running for 3.027) 2021-08-03 01:52:47.764 INFO 94110 --- [ scheduling-1] com.didispace.chapter63.Monitor : 上報(bào)統(tǒng)計(jì)數(shù)據(jù):25 2021-08-03 01:52:52.736 INFO 94110 --- [ scheduling-1] com.didispace.chapter63.Monitor : 上報(bào)統(tǒng)計(jì)數(shù)據(jù):30 2021-08-03 01:52:57.737 INFO 94110 --- [ scheduling-1] com.didispace.chapter63.Monitor : 上報(bào)統(tǒng)計(jì)數(shù)據(jù):38 2021-08-03 01:53:02.739 INFO 94110 --- [ scheduling-1] com.didispace.chapter63.Monitor : 上報(bào)統(tǒng)計(jì)數(shù)據(jù):51 2021-08-03 01:53:07.739 INFO 94110 --- [ scheduling-1] com.didispace.chapter63.Monitor : 上報(bào)統(tǒng)計(jì)數(shù)據(jù):31
第三步:通過(guò)命令,查看一下InfluxDB中是否已經(jīng)存在這些數(shù)據(jù)
> select * from ApiQPS order by time desc; name: ApiQPS time count url ---- ----- --- 1627926787730000000 31 /hello 1627926782730000000 51 /hello 1627926777729000000 38 /hello 1627926772727000000 30 /hello 1627926767728000000 25 /hello
可以看到,已經(jīng)存在與日志中一樣的數(shù)據(jù)了。
“時(shí)序數(shù)據(jù)庫(kù)在Spring Boot中的使用方法”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。