怎樣用表格存儲(chǔ)玩轉(zhuǎn)車聯(lián)網(wǎng)數(shù)據(jù)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
“自動(dòng)駕駛汽車”在近兩年頻頻出現(xiàn)于各大科技新聞?lì)^條,自2012年谷歌獲得美國(guó)首個(gè)自動(dòng)駕駛汽車許可證以來(lái),國(guó)外各大知名汽車廠商如奔馳、沃爾沃、大眾、通用、豐田、日產(chǎn)、特斯拉等也紛紛宣布自己的自動(dòng)駕駛汽車驗(yàn)證開發(fā)計(jì)劃。自動(dòng)駕駛依托于人工智能技術(shù)的發(fā)展,而對(duì)于一個(gè)人工智能平臺(tái)來(lái)說(shuō),重要的不光是算法和平臺(tái),更重要的是數(shù)據(jù)!今天我們暫且不聊自動(dòng)駕駛,我們先聊聊最基礎(chǔ)的車聯(lián)網(wǎng)數(shù)據(jù)的存儲(chǔ)與處理。
出于對(duì)兩客一危監(jiān)管的需要,車聯(lián)網(wǎng)很早就開始起步,彼時(shí)大家的車聯(lián)網(wǎng)方案都長(zhǎng)這個(gè)樣子:
將車輛上傳的數(shù)據(jù)進(jìn)行編碼解析,存儲(chǔ)到對(duì)應(yīng)的數(shù)據(jù)庫(kù)中。由于車輛種類的不同,所上傳的傳感器數(shù)據(jù)也會(huì)有所區(qū)別。為了避免修改表結(jié)構(gòu)對(duì)服務(wù)造成的影響,采用的是將傳感器數(shù)據(jù)進(jìn)行分類,分別存儲(chǔ)到不同的數(shù)據(jù)庫(kù)的方法,也就是圖中的數(shù)據(jù)庫(kù)層分為了軌跡庫(kù)、溫度庫(kù)、 油量庫(kù)等。這樣的好處是新增一批新類型的傳感器時(shí),不需要數(shù)據(jù)停庫(kù)維護(hù),不會(huì)影響在線應(yīng)用,但是對(duì)數(shù)據(jù)采集解析程序需要升級(jí)更新,大大增加了維護(hù)的代價(jià)。
另外一方面,隨著近幾年私家車的爆發(fā)式增長(zhǎng),車聯(lián)網(wǎng)也迎來(lái)了更多的機(jī)遇和挑戰(zhàn)。百萬(wàn)在網(wǎng)車輛,幾十萬(wàn)的在線車輛都讓車聯(lián)網(wǎng)系統(tǒng)時(shí)時(shí)刻刻在經(jīng)受著挑戰(zhàn)。
首先就是并發(fā)問(wèn)題。SQLServer的單機(jī)并發(fā)是有限制的,我們只能在已經(jīng)分庫(kù)分表的基礎(chǔ)上再對(duì)數(shù)據(jù)進(jìn)行按時(shí)間或者車輛類型的二次分庫(kù)分表,這大大增加了前后端系統(tǒng)開發(fā)和維護(hù)的復(fù)雜性。同時(shí),為了應(yīng)對(duì)早晚高峰高的不像話的在線率,我們又對(duì)像軌跡、油量等通用的基礎(chǔ)數(shù)據(jù)做了數(shù)據(jù)庫(kù)的主備讀寫分離,避免數(shù)據(jù)采集高峰影響其他的在線業(yè)務(wù),這個(gè)時(shí)候,這個(gè)架構(gòu)已經(jīng)非常非常復(fù)雜了。
不僅僅是在線業(yè)務(wù),由于多層次的分庫(kù)分表,我們的報(bào)表分析程序中跨表跨庫(kù)的Join查詢讓經(jīng)驗(yàn)豐富的DBA也頭疼痛不已。
而為了保持在這個(gè)行業(yè)的競(jìng)爭(zhēng)力,降低成本是非常有效的一個(gè)法寶。我們采用的最直接的手段就是在夜深人靜的時(shí)候 小心翼翼 的刪除掉過(guò)期的數(shù)據(jù)。
新的方案,刻不容緩!
我們開始尋找基于云計(jì)算的分布式數(shù)據(jù)解決方案,直到我們看到了下面的一張圖。
表格存儲(chǔ)(OTS)是阿里云最近推出的一款自研分布式 NoSQL 數(shù)據(jù)庫(kù),其schema free的特性很適合屬性列變化較為頻繁的數(shù)據(jù)存儲(chǔ)。車載設(shè)備更新和迭代的速度也在不斷加快,車聯(lián)網(wǎng)的業(yè)務(wù)模式也在不斷在變化,表格存儲(chǔ)這種弱結(jié)構(gòu)的數(shù)據(jù)模式與當(dāng)前車聯(lián)網(wǎng)數(shù)據(jù)的需求非常契合。所有車輛的數(shù)據(jù)均可以存儲(chǔ)在一張大表里,新的車載設(shè)備上線也不需要修改表結(jié)構(gòu)了。
于是,我們將原來(lái)的方案替換成:
經(jīng)過(guò)測(cè)試,百萬(wàn)車輛50%的在線率的時(shí)候,讀寫的性能都沒有出現(xiàn)明顯的變化,而且表格存儲(chǔ)是一款全托管的服務(wù),也大大減輕了我們運(yùn)維上的代價(jià)。
表格存儲(chǔ)的數(shù)據(jù)生命周期功能可謂是數(shù)據(jù)管理的神器,我們將不同數(shù)據(jù)存儲(chǔ)時(shí)長(zhǎng)要求的數(shù)據(jù)存儲(chǔ)在一張大表中,設(shè)置好過(guò)期時(shí)間,過(guò)期的數(shù)據(jù)會(huì)自動(dòng)被刪除掉,不僅僅很方便的控制了成本,更降低了人工操作的風(fēng)險(xiǎn)。
對(duì)于報(bào)表分析,我們將原來(lái)在SQLServer上的SQL分析語(yǔ)句遷移到了MaxCompute(就是阿里云以前的ODPS) 上,在MaxCompute上關(guān)聯(lián)好TableStore上的外表,定期執(zhí)行,既方便,又省錢。這一樣以來(lái)無(wú)需維護(hù)數(shù)據(jù)分析程序,并且按量付費(fèi)的模式可以最大限度節(jié)省成本。
粗略算了下,使用表格存儲(chǔ)的成本,一輛車不停的跑一年,存儲(chǔ)與讀寫分析的成本也只有1塊5,比買瓶飲料還便宜,比最初使用的方案中單車年成本低了一個(gè)數(shù)量級(jí)。
寫在最后
選擇上云是我們一個(gè)非常大的挑戰(zhàn),一度擔(dān)心云上的穩(wěn)定性會(huì)導(dǎo)致我們業(yè)務(wù)的失靈,然而事實(shí)證明我們的選擇是正確的,云確確實(shí)實(shí)帶來(lái)了很多便利,節(jié)省了很多成本,讓我們可以更聚焦在業(yè)務(wù)邏輯上,技術(shù)架構(gòu)也能快速迭代,為我們保持一定的行業(yè)競(jìng)爭(zhēng)力提供了有力保障。