成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用時間序列數據,用開源工具助力你的邊緣項目

開源
InfluxData 是一個開源的時間序列數據庫平臺。下面介紹了它是如何被用于邊緣應用案例的。

收集到的隨時間變化的數據稱為時間序列數據。今天,它已經成為每個行業和生態系統的一部分。它是不斷增長的物聯網行業的一大組成部分,將成為人們日常生活的重要部分。但時間序列數據及其需求很難處理。這是因為沒有專門為處理時間序列數據而構建的工具。在這篇文章中,我將詳細介紹這些問題,以及過去 10 年來 InfluxData 如何解決這些問題。

InfluxData

InfluxData 是一個開源的時間序列數據庫平臺。你可能通過 ??InfluxDB?? 了解該公司,但你可能不知道它專門從事時間序列數據庫開發。這很重要,因為在管理時間序列數據時,你要處理兩個問題:存儲生命周期和查詢。

在存儲生命周期中,開發人員通常首先收集和分析非常詳細的數據。但開發人員希望存儲較小的、降低采樣率的數據集,以描述其趨勢,而不占用太多的存儲空間。

查詢數據庫時,你不希望基于 ID 查詢數據,而是希望基于時間范圍進行查詢。使用時間序列數據最常見的一件事是在一段時間內對其進行匯總。在典型的關系型數據庫中存儲數據時,這種查詢是很慢的,這種數據庫使用行和列來描述不同數據點的關系。專門為處理時間序列數據而設計的數據庫可以更快地處理這類查詢。InfluxDB 有自己的內置查詢語言:Flux,這是專門為查詢時間序列數據集而構建的。

Telegraf 如何工作的圖像

Telegraf 如何工作的圖像

數據采集

數據采集和數據處理都有一些很棒的工具。InfluxData 有 12 個以上的客戶端庫,允許你使用自己選擇的編程語言編寫和查詢數據。這是自定義用法的一個很好的工具。開源攝取代理 Telegraf 包括 300 多個輸入和輸出插件。如果你是一個開發者,你也可以貢獻自己的插件。

InfluxDB 還可以接受上傳小體積歷史數據集的 CSV 文件,以及大數據集的批量導入。

    import math
bicycles3 = from(bucket: "smartcity")
|> range(start:2021-03-01T00:00:00z, stop: 2021-04-01T00:00:00z)
|> filter(fn: (r) => r._measurement == "city_IoT")
|> filter(fn: (r) => r._field == "counter")
|> filter(fn: (r) => r.source == "bicycle")
|> filter(fn: (r) => r.neighborhood_id == "3")
|> aggregateWindow(every: 1h, fn: mean, createEmpty:false)
bicycles4 = from(bucket: "smartcity")
|> range(start:2021-03-01T00:00:00z, stop: 2021-04-01T00:00:00z)
|> filter(fn: (r) => r._measurement == "city_IoT")
|> filter(fn: (r) => r._field == "counter")
|> filter(fn: (r) => r.source == "bicycle")
|> filter(fn: (r) => r.neighborhood_id == "4")
|> aggregateWindow(every: 1h, fn: mean, createEmpty:false)join(tables: {neighborhood_3: bicycles3, neighborhood_4: bicycles4}, on ["_time"], method: "inner")
|> keep(columns: ["_time", "_value_neighborhood_3","_value_neighborhood_4"])
|> map(fn: (r) => ({
r with
difference_value : math.abs(x: (r._value_neighborhood_3 - r._value_neighborhood_4))
}))

Flux

Flux 是我們的內部查詢語言,從零開始建立,用于處理時間序列數據。它也是我們一些工具的基礎動力,包括 任務task、警報alert 和 通知notification。要剖析上面的 Flux 查詢,需要定義一些東西。首先,“桶bucket”就是我們所說的數據庫。你可以配置存儲桶,然后將數據流添加到其中。查詢會調用 ??smartcity?? 存儲桶,其范圍為特定的一天(準確地說是 24 小時)。你可以從存儲桶中獲取所有數據,但大多數用戶都包含一個數據范圍。這是你能做的最基本的 Flux 查詢。

接下來,我添加過濾器,將數據過濾到更精確、更易于管理的地方。例如,我過濾分配給 id 為 3 的社區中的自行車數量。從那里,我使用 ??aggregateWindow?? 獲取每小時的平均值。這意味著我希望收到一個包含 24 列的表,每小時一列。我也對 id 為 4 的社區進行同樣的查詢。最后,我將這兩張表相疊加,得出這兩個社區自行車使用量的差異。

如果你想知道什么時候是交通高峰,這是不錯的選擇。顯然,這只是 Flux 查詢功能的一個小例子。但它提供了一個很好的例子,使用了 Flux 附帶的一些工具。我還有很多的數據分析和統計功能。但對于這一點,我建議查看 Flux 文檔。

    import "influxdata/influxdb/tasks"
option task = {name: PB_downsample, every: 1h, offset: 10s}
from(bucket: "plantbuddy")
|>range(start: tasks.lastSuccess(orTime: -task.every))
|>filter(fn: (r) => r["_measurement"] == "sensor_data")
|>aggregateWindow(every: 10m, fn:last, createEmpty:false)
|>yield(name: "last")
|>to(bucket: "downsampled")

任務

InfluxDB 任務task 是一個定時 Flux 腳本,它接收輸入數據流并以某種方式修改或分析它。然后,它將修改后的數據存儲在新的存儲桶中或執行其他操作。將較小的數據集存儲到新的存儲桶中,稱為“降采樣downsampling”,這是數據庫的核心功能,也是時間序列數據生命周期的核心部分。

你可以在當前任務示例中看到,我已經對數據進行了降采樣。我得到每 10 分鐘增量的最后一個值,并將該值存儲在降采樣桶中。原始數據集在這 10 分鐘內可能有數千個數據點,但現在降采樣桶只有 60 個新值。需要注意的一點是,我還使用了范圍內的 ??lastSuccess?? 函數。這會告訴 InfluxDB 從上次成功運行的時間開始運行此任務,以防它在過去 2 小時內失敗,在這種情況下,它可以追溯 3 個小時內的最后一次成功運行。這對于內置錯誤處理非常有用。

檢查和警報通知系統的圖像

檢查和警報通知系統的圖像

檢查和警報

InfluxDB 包含一個 警報Alert 或 檢查Check 和 通知notification

許多人選擇設置通知。為此,你需要定義一個 通知端點notification endpoint。例如,聊天應用程序可以進行 HTTP 調用以接收通知。然后你定義何時接收通知,例如,你可以每小時運行一次檢查。你可以每 24 小時運行一次通知。你可以讓通知響應值更改,例如,“WARN”更改為“CRITICAL”,或者當值為“CRITICAL”時,無論如何都從“OK”更改為“WARN”。這是一個高度可定制的系統。從這個系統創建的 Flux 代碼也可以編輯。

新 Edge 功能的圖像

新 Edge 功能的圖像

邊緣

最后,我想把所有的核心功能放在一起,包括最近發布的一個非常特別的新功能?!癊dge to cloud” 是一個非常強大的工具,允許你運行開源 InfluxDB,并在出現連接問題時在本地存儲數據。連接修復后,它會將數據流傳輸到 InfluxData 云平臺。

這對于邊緣設備和重要數據非常重要,因為任何數據丟失都是有害的。你定義一個要復制到云的存儲桶,然后該存儲桶有一個磁盤支持的隊列來本地存儲數據。然后定義云存儲桶應該復制到的內容。在連接到云端之前,數據都存儲在本地。

InfluxDB 和物聯網邊緣

假設你有一個項目,你想使用連接到植物上的物聯網傳感器 ??監測家里植物的健康狀況??。該項目是使用你的筆記本電腦作為邊緣設備設置的。當你的筆記本電腦合上或關閉時,它會在本地存儲數據,然后在重新連接時將數據流傳到我的云存儲桶。

圖片展示了 Plant buddy 的工作方式

圖片展示了 Plant buddy 的工作方式

需要注意的一點是,在將數據存儲到復制桶之前,這會對本地設備上的數據進行降采樣。你的植物傳感器每秒提供一個數據點。但它將數據壓縮為一分鐘的平均數,因此存儲的數據更少了。在云賬戶中,你可以添加一些警報和通知,讓你知道植物的水分何時低于某個水平,需要澆水。也可以在網站上使用視覺效果來告訴用戶植物的健康狀況。

數據庫是許多應用程序的主干。在像 InfluxDB 的時間序列數據庫平臺中使用帶有時間戳的數據可以節省開發人員的時間,并使他們能夠訪問各種工具和服務。InfluxDB 的維護者喜歡看到人們在我們的開源社區中構建什么,所以請與我們聯系,并與其他人共享你的項目和代碼!

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2021-01-06 08:14:21

時間序列數據庫數據庫

2020-06-10 16:10:35

ActivityWat屏幕使用時間Linux

2022-07-11 08:00:00

開源工具DoppelGANg

2016-06-29 09:53:15

云計算

2009-06-19 16:05:39

時間類型Struts

2018-10-29 11:33:29

2012-03-30 15:15:49

筆記本評測

2016-06-23 10:01:30

2022-10-12 00:05:24

邊緣數據時間序列金融

2021-09-22 14:49:11

時間序列數據分析數據數據庫

2021-04-19 16:15:35

開源開源工具

2021-06-11 13:02:05

開源工具LinuxLinux PC

2023-10-04 09:28:40

CBconvert開源工具

2022-11-15 12:04:54

手機數據監控

2022-09-30 10:31:06

Python時間序列數據

2025-01-13 07:23:14

PythonAeon開發

2019-11-14 15:56:18

開源技術 軟件

2021-09-02 00:11:19

電腦緩存捆綁

2021-04-17 15:11:36

開源VeraCrypt加密文件

2016-03-15 10:14:37

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 狠狠色综合网站久久久久久久 | 精品久久久久香蕉网 | 97av| 亚洲精品亚洲人成人网 | 亚洲狠狠丁香婷婷综合久久久 | 欧美精品中文字幕久久二区 | 九九av| 亚洲成av| 特黄视频 | 日韩在线资源 | 中文字幕免费视频 | 日本视频免费 | 国产成人在线观看免费 | 日本天堂一区二区 | 国产久视频 | 精品一区二区电影 | 亚洲精品国产电影 | 国产欧美精品在线观看 | 国产免费一区二区三区 | 亚洲一区 | 天堂成人av | 午夜成人免费视频 | 黄频免费 | 亚洲一区二区视频在线观看 | 在线视频 中文字幕 | 色眯眯视频在线观看 | 久久精品中文字幕 | 久久久91精品国产一区二区三区 | 日韩精品在线一区 | 久久精品国产一区二区三区不卡 | 国产综合精品一区二区三区 | 黄色网址大全在线观看 | 日韩在线播放视频 | 欧美久久久 | 免费一级淫片aaa片毛片a级 | 欧美激情一区 | 国产日韩一区二区 | 日韩综合 | 国产精品久久久久久久久大全 | 一区二区久久电影 | 欧美日韩一卡二卡 |