久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

物聯(lián)網(wǎng)邊緣計(jì)算中的全能數(shù)據(jù)庫RedisEdge:實(shí)時(shí)數(shù)據(jù),、時(shí)間序列,、AI、消息流,、MapReduce...

 精誠至_金石開 2020-02-04
由于邊緣計(jì)算需要存取多種數(shù)據(jù)模型,,但是計(jì)算資源受限,我們在DB-Engine上所有數(shù)據(jù)庫排名清單上排名前30的數(shù)據(jù)庫中找了一圈,,找到的輕量級的非商業(yè)的支持多模型(注意:有的數(shù)據(jù)庫的多模型實(shí)際上只支持兩種數(shù)據(jù)模型,,不能滿足邊緣計(jì)算的需求)的數(shù)據(jù)庫Redis。
作者:與子同袍

1.邊緣計(jì)算的數(shù)據(jù)存取需求

在物聯(lián)網(wǎng)邊緣計(jì)算的復(fù)雜環(huán)境中,,應(yīng)用程序不可避免地需要多個(gè)數(shù)據(jù)模型:

  • 內(nèi)存數(shù)據(jù)庫存儲采集的實(shí)時(shí)設(shè)備數(shù)據(jù),。

  • 現(xiàn)場會斷網(wǎng),所以需要把待發(fā)送到云端的數(shù)據(jù)存儲到時(shí)間序列數(shù)據(jù)庫中,。同時(shí)邊緣側(cè)需要對歷史數(shù)據(jù)進(jìn)行聚合分析,,例如計(jì)算溫度一段時(shí)間內(nèi)平均值。

  • 現(xiàn)場采集的數(shù)據(jù)需要轉(zhuǎn)發(fā)給一個(gè)或多個(gè)消費(fèi)者進(jìn)行處理,。

  • 邊緣側(cè)需要人工智能學(xué)習(xí)能力,,來支持視頻流分析,圖像識別,,故障診斷等低延遲響應(yīng)業(yè)務(wù),。

  • 邊緣側(cè)進(jìn)行類似MapReduce的計(jì)算。

  • 運(yùn)行占用空間小,,以能在性能受限的邊緣計(jì)算計(jì)算節(jié)點(diǎn)上運(yùn)行,。

1.jpg
由于邊緣計(jì)算需要存取多種數(shù)據(jù)模型,但是計(jì)算資源受限,,我們要是把DB-Engine上的專用的文檔數(shù)據(jù)庫MongoDB,、圖數(shù)據(jù)庫Neo4J、搜索引擎ElasticSearch,,時(shí)間序列數(shù)據(jù)庫InfluxDB加上內(nèi)存數(shù)據(jù)庫Redis自己都塞到一塊NXP 飛思卡爾ARM A7的內(nèi)存只有512MB,,F(xiàn)LASH只有8GB的千把塊RMB的嵌入式網(wǎng)關(guān)上,根本就跑不起來,,得買更貴的研華工控機(jī)才行,。

既然這樣做不可行,我們?nèi)B-Engine這個(gè)數(shù)據(jù)庫排名網(wǎng)站上逛逛,,看看到底有沒有能滿足邊緣計(jì)算這種苛刻要求的數(shù)據(jù)庫,。

2.Redis的解決之道

我們的目標(biāo)是,,找到一種輕量級的非商業(yè)的支持邊緣計(jì)算所需的多種數(shù)據(jù)模型的數(shù)據(jù)庫。

在DB-Engine上所有數(shù)據(jù)庫排名清單上排名前30的數(shù)據(jù)庫中找了一圈,,輕量級的非商業(yè)的支持多模型(注意:有的數(shù)據(jù)庫的多模型實(shí)際上只支持兩種數(shù)據(jù)模型,,不能滿足邊緣計(jì)算的需求)的數(shù)據(jù)庫,就只有Redis了,。
2.jpg

Redis的全名是REmote DIctionary Server,,遠(yuǎn)程字典服務(wù)器,看上去只是一個(gè)可以遠(yuǎn)程存放字典類型的內(nèi)存數(shù)據(jù)庫,。實(shí)際上由于Redis的架構(gòu)設(shè)計(jì),,它可以開發(fā)新的數(shù)據(jù)結(jié)構(gòu)和模塊,正如Postgresql可以讓開發(fā)人員開發(fā)新的數(shù)據(jù)庫數(shù)據(jù)結(jié)構(gòu)和擴(kuò)展一樣,。因此它實(shí)際上和Memcached不同,,不只是KV鍵值對數(shù)據(jù)庫,還是多模型(Multi-model)數(shù)據(jù)庫,。

那什么是多模型數(shù)據(jù)庫呢,?我們把鼠標(biāo)光標(biāo)移到Redis的Multi-model右邊的信息圖標(biāo)上,,會彈出對Redis數(shù)據(jù)庫的Multi-model多模型的解釋,。我們可以看到,Redis在完成本職工作Key-value鍵值對數(shù)據(jù)庫的同時(shí),,還可以當(dāng)做文檔數(shù)據(jù)庫,、圖數(shù)據(jù)庫、搜索引擎和時(shí)間序列數(shù)據(jù)庫使用,。
3.jpg

Redis這個(gè)定位用到邊緣計(jì)算就有點(diǎn)無敵了,。為什么這么說?

我們要是把那些重量級數(shù)據(jù)庫比作加農(nóng)炮,、榴彈炮這些“大炸嗶”,,就會發(fā)現(xiàn)它有兩個(gè)缺點(diǎn),一是用來對付小目標(biāo)殺雞用牛刀成本太高,;二是重量大很難由步兵攜帶,,對連排級的這種”邊緣側(cè)戰(zhàn)斗”火力支援響應(yīng)慢。反觀RedisEdge可以比作迫擊炮,,正好是彌補(bǔ)了這幾位大塊頭的缺點(diǎn),,便攜,易用,,不存在射擊死角,,可以很方便的為步兵提供曲射火力支援。

雖然Redis的多模型數(shù)據(jù)庫功能肯定沒有專門的文檔數(shù)據(jù)庫MongoDB,、專門的時(shí)間序列數(shù)據(jù)庫InfluxDB,、專門的圖數(shù)據(jù)庫Neo4J那么強(qiáng)大,,但是我們要知道,在邊緣計(jì)算這種應(yīng)用場景,,Redis提供的那些數(shù)據(jù)模型功能已經(jīng)夠用了,。

Redis 只需要添加邊緣計(jì)算所需的數(shù)據(jù)結(jié)構(gòu)和模塊,就可以滿足邊緣計(jì)算所需的功能,,適用于物聯(lián)網(wǎng)邊緣計(jì)算的苛刻條件,。

按照這個(gè)思路形成的軟件,套上現(xiàn)在時(shí)髦的Edge這個(gè)Buzzword,,那就叫RedisEdge吧,。

RedisEdge將開源版本Redis(帶有Redis Streams的5.0版本)與RedisAI和RedisTimeSeries、RedisGears這三個(gè)模塊一起打包,,就可以提供邊緣計(jì)算所需的數(shù)據(jù)模型了:

  • Redis 5.0版本,,內(nèi)置的Set、List,、Hash等數(shù)據(jù)結(jié)構(gòu)可用作實(shí)時(shí)內(nèi)存數(shù)據(jù)庫,,用來存儲邊緣網(wǎng)關(guān)采集到的設(shè)備實(shí)時(shí)數(shù)據(jù)。

  • Redis 5.0版本的Redis Streams數(shù)據(jù)結(jié)構(gòu),,可用做消息中間件,,把采集到的設(shè)備實(shí)時(shí)數(shù)據(jù)轉(zhuǎn)發(fā)給其他邊緣計(jì)算軟件組件。

  • RedisTimeSeries是Redis的一個(gè)模塊,,可用作時(shí)間序列數(shù)據(jù)庫,,在邊緣計(jì)算網(wǎng)關(guān)斷網(wǎng)的情況下,能夠離線保存需要上傳到云端的設(shè)備歷史數(shù)據(jù),。同時(shí)也有歷史數(shù)據(jù)降采樣,、壓縮、聚合的功能,。

  • RedisGears也是Redis的一個(gè)模塊,,類似MapReduce的分布式動(dòng)態(tài)執(zhí)行框架,可以用來在分布式的邊緣計(jì)算節(jié)點(diǎn)或者霧計(jì)算節(jié)點(diǎn)上運(yùn)行Serverless無服務(wù)程序代碼,。

  • RedisAI也是Redis的一個(gè)模塊,,用于執(zhí)行深度學(xué)習(xí)模型,在邊緣側(cè)調(diào)用PyTorch,、Tensorflow和ONNXRuntime等深度學(xué)習(xí)工具,。

有了RedisEdge,就可以優(yōu)雅地處理邊緣計(jì)算所需的各種數(shù)據(jù)模型,,消除了在邊緣計(jì)算節(jié)點(diǎn)安裝多種數(shù)據(jù)庫的復(fù)雜性,。RedisEdge不是部署五個(gè)不同的數(shù)據(jù)庫來支持這些需求,而是在Redis上添加特定的數(shù)據(jù)結(jié)構(gòu)和特定功能的Redis模塊,,從而極大地簡化了系統(tǒng)架構(gòu)和部署復(fù)雜度,。
4.jpg

可能有的開發(fā)人員還是不太放心,,擔(dān)心性能問題。其實(shí)這個(gè)擔(dān)心是多余的,。Redis每秒可以寫入上百萬條數(shù)據(jù),,延遲<1ms,占用空間非常?。?lt;5MB),,因此很容易運(yùn)行在受限制的計(jì)算環(huán)境中。

它可以在各種邊緣設(shè)備上運(yùn)行,,范圍從ARM嵌入式處理器到基于x64的硬件,。因此它非常適合在物聯(lián)網(wǎng)設(shè)備、邊緣網(wǎng)關(guān)設(shè)備,、霧節(jié)點(diǎn)上使用,。

3.邊緣計(jì)算中的應(yīng)用場景

既然RedisEdge是用在邊緣計(jì)算的,我們來看下RedisEdge官方提供的兩個(gè)邊緣計(jì)算應(yīng)用場景,。第一個(gè)是把RedisEdge嵌入到EdgeX Foundry中,。第二個(gè)是把RedisEdge嵌入到Azure IoT Edge平臺中。

EdgeX Foundry是一個(gè)擁有70多家成員公司的Linux基金會項(xiàng)目,。它是一個(gè)開源的物聯(lián)網(wǎng)邊緣計(jì)算微服務(wù)框架,,使任何人都可以輕松開發(fā)物聯(lián)網(wǎng)邊緣應(yīng)用程序。EdgeX Foundry參考實(shí)現(xiàn)中的核心服務(wù)數(shù)據(jù)庫用的是MongoDB這個(gè)文檔數(shù)據(jù)庫,。雖然用MongoDB也可以存儲實(shí)時(shí)數(shù)據(jù)和歷史數(shù)據(jù),,也可以用中間表來傳遞消息,。但是它不夠輕量級,,適用場景就會受到很大限制。

在下圖中,,RedisEdge運(yùn)行在EdgeX Foundry的核心服務(wù)層,。RedisEdge作為內(nèi)存數(shù)據(jù)庫、時(shí)間序列數(shù)據(jù)庫,、元數(shù)據(jù)存儲,、配置文件存儲。

在導(dǎo)出服務(wù)層,,RedisEdge作為導(dǎo)出客戶端注冊信息的數(shù)據(jù)庫,。
5.jpg

RedisEdge還可用作Azure IoT Edge的模塊,使Azure IoT服務(wù)的物聯(lián)網(wǎng)應(yīng)用程序開發(fā)人員可以輕松利用Redis的強(qiáng)大功能,。
6.jpg

4.其他類似方案

那除了RedisEdge之外,,邊緣計(jì)算數(shù)據(jù)庫是否還有其他可選方案呢?

一個(gè)方案是用開源多模型數(shù)據(jù)庫Postgresql + 擴(kuò)展插件(連接第三方數(shù)據(jù)庫postgres-fdw + PG時(shí)間序列數(shù)據(jù)庫擴(kuò)展timescale + REST接口暴露PostgREST + 實(shí)時(shí)流分析pipelinedb) + PL/Python函數(shù)或SPI接口,。

其中Postgresql作為核心數(shù)據(jù)庫,,提供關(guān)系型數(shù)據(jù)模型和文檔數(shù)據(jù)模型,。

postgres-fdw擴(kuò)展,用于與第三方數(shù)據(jù)庫進(jìn)行集成,。

timescale這個(gè)Postgresql的時(shí)間序列數(shù)據(jù)庫擴(kuò)展,,給Postgresql添加了時(shí)間序列數(shù)據(jù)庫功能,用于存儲設(shè)備歷史數(shù)據(jù)和歷史數(shù)據(jù)降采樣,、聚合,。

pipelinedb這個(gè)Postgresql實(shí)時(shí)流分析擴(kuò)展,用于對采集的設(shè)備數(shù)據(jù)進(jìn)行實(shí)時(shí)分析,。

PostgREST用于將數(shù)據(jù)庫暴露為RESTful API接口,,用于給邊緣計(jì)算應(yīng)用程序調(diào)用訪問。

PL/Python或C語言的SPI接口,,可以用來調(diào)用人工智能庫如PyTorch(libtorch)或Tensorflow(libtensorflow)等,,然后將其封裝為Postgresql的函數(shù),這樣邊緣計(jì)算應(yīng)用開發(fā)人員通過調(diào)用數(shù)據(jù)庫函數(shù)即可實(shí)現(xiàn)在邊緣側(cè)運(yùn)行深度學(xué)習(xí)模型,。

這種方式比RedisEdge更重量級一點(diǎn),,適合在邊緣計(jì)算側(cè)需要更復(fù)雜計(jì)算的地方。這個(gè)方案的缺點(diǎn)是其中有商業(yè)軟件,。當(dāng)然,,我們也可以借鑒RedisEdge的Streams數(shù)據(jù)結(jié)構(gòu)和RedisTimeseries模塊,開發(fā)Postgresql的對應(yīng)的擴(kuò)展,。

另外一個(gè)方案就是北京濤思科技的TDengine,。這個(gè)項(xiàng)目要解決的問題和RedisEdge也是類似的,只不過是自己從頭開發(fā)的,。而RedisEdge是Redis+Redis模塊的方式組合起來的。

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多