本發(fā)明涉及車聯(lián)網(wǎng)領域,特別涉及一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法及系統(tǒng)。
背景技術:
隨著現(xiàn)代社會科技的發(fā)展,大數(shù)據(jù)時代的到來對各行各業(yè)帶來了較大的沖擊與發(fā)展,面對面對日益增長的海量數(shù)據(jù),傳統(tǒng)的集中式數(shù)據(jù)庫的弊端日益顯現(xiàn),傳統(tǒng)的關系型數(shù)據(jù)庫開始暴露出一些難以克服的缺點。例如查詢速度慢,難以擴展,沒法應對無限增長的海量數(shù)據(jù)。對于某些數(shù)據(jù)量有限,對數(shù)據(jù)資源需求不是特別強烈的領域,傳統(tǒng)的數(shù)據(jù)存儲模型可以很好的支撐。但是對于像車輛網(wǎng)系統(tǒng)這種處理的數(shù)據(jù)量大,對數(shù)據(jù)管理能力要求高的系統(tǒng)而言,傳統(tǒng)的關系型數(shù)據(jù)庫往往已經(jīng)難以支撐。車聯(lián)網(wǎng),是指通過在車輛儀表臺安裝車載終端設備,實現(xiàn)對車輛所有工作情況和靜、動態(tài)信息的采集、存儲并發(fā)送。車聯(lián)網(wǎng)系統(tǒng)一般具有實時實景功能,可以利用移動網(wǎng)絡實現(xiàn)人車交互。
現(xiàn)有技術中,傳統(tǒng)的車聯(lián)網(wǎng)系統(tǒng)中,底層的存儲模塊一般采用的是傳統(tǒng)的關系型數(shù)據(jù)庫模型,這種模型可以應對有限的數(shù)據(jù)量的數(shù)據(jù),但是,對于大數(shù)據(jù)時代中每天都有很大持續(xù)增長的車輛數(shù)據(jù)的支持有著明顯的缺陷。其有以下的問題:考慮到車輛信息是無限增長的,傳統(tǒng)的關系型數(shù)據(jù)庫的擴展能力不足,一旦信息數(shù)據(jù)到達的關系型數(shù)據(jù)庫的存儲閾值,對于整個車聯(lián)網(wǎng)系統(tǒng)而言,其產(chǎn)生的影響將是災難性的;盡管對于小數(shù)據(jù)量的數(shù)據(jù)處理,關系型數(shù)據(jù)庫的處理速度還是人們可以接受的,但是隨著車輛數(shù)據(jù)的持續(xù)增長,其處理數(shù)據(jù)所帶來的延遲會很大程度上降低用戶體驗。因此,如何能夠在大數(shù)據(jù)時代中提高車聯(lián)網(wǎng)中數(shù)據(jù)的存儲閾值,并減少數(shù)據(jù)處理的延遲時間,提升用戶體驗,是現(xiàn)今急需解決的問題。
技術實現(xiàn)要素:
本發(fā)明的目的是提供一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法及系統(tǒng),以采用傳統(tǒng)的關系型數(shù)據(jù)庫和分布式數(shù)據(jù)庫集群的混合存儲模型,提高車聯(lián)網(wǎng)中數(shù)據(jù)的存儲閾值,并減少數(shù)據(jù)處理的延遲時間,提升用戶體驗。
為解決上述技術問題,本發(fā)明提供一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法,包括:
對車載終端發(fā)送的數(shù)據(jù)的類型進行識別;
當所述類型為實時信息時,將所述數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群;其中,所述實時信息包括can總線信息和obd信息;
當所述類型為配置信息時,將所述數(shù)據(jù)存儲至關系型數(shù)據(jù)庫;其中,所述配置信息包括車輛配置信息和車載終端配置信息。
可選的,所述分布式數(shù)據(jù)庫集群具體為mongodb數(shù)據(jù)庫集群。
可選的,所述將所述數(shù)據(jù)存儲至mongodb數(shù)據(jù)庫集群,包括:
通過mongos路由器根據(jù)所述數(shù)據(jù)的標識,將所述數(shù)據(jù)分攤到對應的mongodb片,利用所述mongodb片對所述數(shù)據(jù)進行存儲,并將所述數(shù)據(jù)和響應的配置信息保存在mongoconfig服務器。
可選的,所述利用所述mongodb片對所述數(shù)據(jù)進行存儲,包括:
所述mongodb片中的仲裁節(jié)點根據(jù)副本集中的副本節(jié)點的性能確定最優(yōu)副本節(jié)點;
主節(jié)點寫入所述數(shù)據(jù)并將所述數(shù)據(jù)復制到所述最優(yōu)副本節(jié)點中。
可選的,該方法還包括:
當所述主節(jié)點宕機時,將所述最優(yōu)副本節(jié)點作為所述主節(jié)點。
可選的,該方法還包括:
當需要讀取所述數(shù)據(jù)時,通過所述最優(yōu)副本節(jié)點讀取所述數(shù)據(jù)。
此外,本發(fā)明還提供了一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲系統(tǒng),包括:
車聯(lián)網(wǎng)云平臺,用于對車載終端發(fā)送的數(shù)據(jù)的類型進行識別;
分布式數(shù)據(jù)庫集群,用于當所述類型為實時信息時,存儲所述數(shù)據(jù);其中,所述實時信息包括can總線信息和obd信息;
關系型數(shù)據(jù)庫,用于當所述類型為配置信息時,存儲所述數(shù)據(jù);其中,所述配置信息包括車輛配置信息和車載終端配置信息。
可選的,所述分布式數(shù)據(jù)庫集群具體用于通過mongos路由器根據(jù)所述數(shù)據(jù)的標識,將所述數(shù)據(jù)分攤到對應的mongodb片,利用所述mongodb片對所述數(shù)據(jù)進行存儲,并將所述數(shù)據(jù)和響應的配置信息保存在mongoconfig服務器。
可選的,所述分布式數(shù)據(jù)庫集群,包括:
最優(yōu)副本節(jié)點確定模塊,用于所述mongodb片中的仲裁節(jié)點根據(jù)副本集中的副本節(jié)點的性能確定最優(yōu)副本節(jié)點;
數(shù)據(jù)寫模塊,用于主節(jié)點寫入所述數(shù)據(jù)并將所述數(shù)據(jù)復制到所述最優(yōu)副本節(jié)點中。
可選的,所述分布式數(shù)據(jù)庫集群,包括:
數(shù)據(jù)讀模塊,用于當需要讀取所述數(shù)據(jù)時,通過所述最優(yōu)副本節(jié)點讀取所述數(shù)據(jù)。
本發(fā)明所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法,包括:對車載終端發(fā)送的數(shù)據(jù)的類型進行識別;當所述類型為實時信息時,將所述數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群;其中,所述實時信息包括can總線信息和obd信息;當所述類型為配置信息時,將所述數(shù)據(jù)存儲至關系型數(shù)據(jù)庫;其中,所述配置信息包括車輛配置信息和車載終端配置信息;
可見,本發(fā)明通過當數(shù)據(jù)的類型為實時信息時,將數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群,可以將車輛的無限增長的實時信息類型的數(shù)據(jù),用分布式數(shù)據(jù)庫集群進行存儲管理;通過當數(shù)據(jù)的類型為配置信息時,將數(shù)據(jù)存儲至關系型數(shù)據(jù)庫,可以通過傳統(tǒng)的關系型數(shù)據(jù)庫對配置信息類型的數(shù)據(jù)進行存儲管理,結合了分布式數(shù)據(jù)庫集群和傳統(tǒng)的關系型數(shù)據(jù)庫各自的優(yōu)點,實現(xiàn)了對車聯(lián)網(wǎng)中數(shù)據(jù)的有效管理,提高了車聯(lián)網(wǎng)中數(shù)據(jù)的存儲閾值,并減少了數(shù)據(jù)處理的延遲時間,提升了用戶體驗。此外,本發(fā)明還提供了一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲系統(tǒng),同樣具有上述有益效果。
附圖說明
為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)提供的附圖獲得其他的附圖。
圖1為本發(fā)明實施例所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的流程圖;
圖2為本發(fā)明實施例所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的數(shù)據(jù)存儲系統(tǒng)整體架構的示意圖;
圖3為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的流程圖;
圖4為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的mongodb數(shù)據(jù)庫集群整體架構的示意圖;
圖5為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的mongodb片內(nèi)部架構的示意圖;
圖6為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的數(shù)據(jù)接收存儲的e-r圖;
圖7為本發(fā)明實施例所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲系統(tǒng)的結構圖。
具體實施方式
為使本發(fā)明實施例的目的、技術方案和優(yōu)點更加清楚,下面將結合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護的范圍。
請參考圖1和圖2,圖1為本發(fā)明實施例所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的流程圖;圖2為本發(fā)明實施例所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的數(shù)據(jù)存儲系統(tǒng)整體架構的示意圖。該方法可以包括:
步驟101:對車載終端發(fā)送的數(shù)據(jù)的類型進行識別。
其中,本步驟可以為如圖2所示的車聯(lián)網(wǎng)云平臺接收車載終端發(fā)送的多個數(shù)據(jù)后,對每個數(shù)據(jù)相關的處理并對每個數(shù)據(jù)的類型進行識別,然后分別通過步驟102或步驟103與底層的數(shù)據(jù)存儲模塊進行交互,也就是將對應類型的數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群或傳統(tǒng)的關系型數(shù)據(jù)庫,實現(xiàn)數(shù)據(jù)的實例化。圖2中的客戶端可以為用戶對車聯(lián)網(wǎng)中存儲數(shù)據(jù)進行查詢或其他交互過程的終端,本實施例對此不做任何限制。
可以理解的是,對于車聯(lián)網(wǎng)中進行本步驟對車載終端發(fā)送的數(shù)據(jù)的類型進行識別的具體位置,可以為如圖2所示的車聯(lián)網(wǎng)云平臺;也可以為底層的數(shù)據(jù)存儲模塊,如車聯(lián)網(wǎng)云平臺對數(shù)據(jù)進行相應的處理后,由數(shù)據(jù)存儲模塊對數(shù)據(jù)的類型進行識別,并將對應類型的數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群或傳統(tǒng)的關系型數(shù)據(jù)庫;還可以為車聯(lián)網(wǎng)數(shù)據(jù)存儲系統(tǒng)的其他位置,本實施例對此不做任何限制。
需要說明的是,本步驟中車載終端的發(fā)送的數(shù)據(jù)可以為一個車載終端發(fā)送的一種類型的數(shù)據(jù),也就是說每個車載終端發(fā)送的每種類型的數(shù)據(jù)均可以通過本步驟進行識別。若車載終端發(fā)送多種類型的數(shù)據(jù),則也可通過與本步驟相似的方式,如通過車聯(lián)網(wǎng)云平臺對多種類型的數(shù)據(jù)進行相應的處理,然后將該數(shù)據(jù)中對應類型的數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群或傳統(tǒng)的關系型數(shù)據(jù)庫。本實施例對此不受任何限制。
具體的,對于車聯(lián)網(wǎng)云平臺對車載終端發(fā)送的數(shù)據(jù)的類型進行識別的具體過程,可以由設計人員根據(jù)實用場景和用戶需求自行設置相應的識別程序,本實施例對此不做任何限制。
步驟102:當所述類型為實時信息時,將所述數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群;其中,所述實時信息包括can總線信息和obd信息。
可以理解的是,本步驟的目的是為了將如can總線信息和obd信息這類車輛的無限增長的實時信息類型的數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群,以提高如圖2的車聯(lián)網(wǎng)數(shù)據(jù)存儲系統(tǒng)中底層的數(shù)據(jù)存儲模塊的存儲閾值,并且通過分布式數(shù)據(jù)庫集群存儲并管理實時信息類型的數(shù)據(jù),可以降低處理該數(shù)據(jù)的延遲,提升用戶體驗。
需要說明的是,對于分布式數(shù)據(jù)庫集群的具體類型和設置方式,可以由設計人員根據(jù)實用場景和用戶需求自行設置,如可以使用mongodb數(shù)據(jù)庫集群和相應的設置方式,也可以使用其他類型的分布式數(shù)據(jù)庫集群和對應的設置方式。本實施例對此不做任何限制。
具體的,對于本步驟中將數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群的具體過程,可以根據(jù)分布式數(shù)據(jù)庫集群的具體類型和設置方式對應進行,如當分布式數(shù)據(jù)庫集群為mongodb數(shù)據(jù)庫集群時,可以通過mongos路由器根據(jù)數(shù)據(jù)的標識,將數(shù)據(jù)分攤到對應的mongodb片,利用mongodb片對數(shù)據(jù)進行存儲,并將數(shù)據(jù)和響應的配置信息保存在mongoconfig服務器。本實施例對此不做任何限制。同樣,對于分布式數(shù)據(jù)庫集群對存儲的數(shù)據(jù)進行管理的具體方式,如mongodb片中主節(jié)點中將數(shù)據(jù)復制到副本集中的副本節(jié)點的具體方式和從mongodb片中讀取數(shù)據(jù)的具體方式,可以由設計人員根據(jù)分布式數(shù)據(jù)庫集群的具體類型和設置方式對應進行設置,本實施例對此同樣不做任何限制。
步驟103:當所述類型為配置信息時,將所述數(shù)據(jù)存儲至關系型數(shù)據(jù)庫;其中,所述配置信息包括車輛配置信息和車載終端配置信息。
可以理解的是,本步驟的目的是為了將如車輛配置信息和車載終端配置信息這類基礎的配置信息類型的數(shù)據(jù)存儲至傳統(tǒng)的關系型數(shù)據(jù)庫。因為傳統(tǒng)的關系型數(shù)據(jù)庫對配置信息類型的數(shù)據(jù)處理具有很大的優(yōu)勢,因此通過傳統(tǒng)的關系型數(shù)據(jù)庫對配置信息類型的數(shù)據(jù)進行存儲和管理,可以很好的發(fā)揮傳統(tǒng)的關系型數(shù)據(jù)庫的優(yōu)點,并且將原本存儲至關系型數(shù)據(jù)庫的實時信息類型的數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群,大大減少了關系型數(shù)據(jù)庫中存儲的數(shù)據(jù)量,可以降低關系型數(shù)據(jù)庫處理配置信息類型的數(shù)據(jù)的延遲,提升用戶體驗。
需要說明的是,對于關系型數(shù)據(jù)庫的具體類型和設置方式,可以使用現(xiàn)有技術中傳統(tǒng)的關系型數(shù)據(jù)庫,如mysql數(shù)據(jù)庫集群,也可以使用其他類型的關系型數(shù)據(jù)庫,本實施例對此不做任何限制。
具體的,對于本步驟中將數(shù)據(jù)存儲至關系型數(shù)據(jù)庫的具體過程和關系型數(shù)據(jù)庫對存儲的數(shù)據(jù)進行管理的具體方式,可以為采用與現(xiàn)有技術中如mysql數(shù)據(jù)庫集群的傳統(tǒng)的關系型數(shù)據(jù)庫相似的過程和方式,也可以采用其他與關系型數(shù)據(jù)庫的具體類型和設置方式對應的過程和方式。本實施例對此不受任何限制。
本實施例中,本發(fā)明實施例通過當數(shù)據(jù)的類型為實時信息時,將數(shù)據(jù)存儲至分布式數(shù)據(jù)庫集群,可以將車輛的無限增長的實時信息類型的數(shù)據(jù),用分布式數(shù)據(jù)庫集群進行存儲管理;通過當數(shù)據(jù)的類型為配置信息時,將數(shù)據(jù)存儲至關系型數(shù)據(jù)庫,可以通過傳統(tǒng)的關系型數(shù)據(jù)庫對配置信息類型的數(shù)據(jù)進行存儲管理,結合了分布式數(shù)據(jù)庫集群和傳統(tǒng)的關系型數(shù)據(jù)庫各自的優(yōu)點,實現(xiàn)了對車聯(lián)網(wǎng)中數(shù)據(jù)的有效管理,提高了車聯(lián)網(wǎng)中數(shù)據(jù)的存儲閾值,并減少了數(shù)據(jù)處理的延遲時間,提升了用戶體驗。
請參考圖3、圖4、圖5和圖6,圖3為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的流程圖;圖4為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的mongodb數(shù)據(jù)庫集群整體架構的示意圖;圖5為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的mongodb片內(nèi)部架構的示意圖;圖6為本發(fā)明實施例所提供的另一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法的數(shù)據(jù)接收存儲的e-r圖。該方法可以包括:
步驟201:對車載終端發(fā)送的數(shù)據(jù)的類型進行識別。
其中,本步驟與步驟101相似,在此不再贅述。
步驟202:當數(shù)據(jù)的類型為實時信息時,通過mongos路由器根據(jù)數(shù)據(jù)的標識,將數(shù)據(jù)分攤到對應的mongodb片,利用mongodb片對數(shù)據(jù)進行存儲,并將數(shù)據(jù)和響應的配置信息保存在mongoconfig服務器。
其中,本實施所提供的方法中,存儲實時信息類型的數(shù)據(jù)的分布式數(shù)據(jù)庫集群可以為如圖4所示的mongodb數(shù)據(jù)庫集群。對于mongodb數(shù)據(jù)庫集群存儲實時信息類型的數(shù)據(jù)的具體方式,可以如圖4所示,車聯(lián)網(wǎng)云平臺(client)將實時信息類型的數(shù)據(jù)發(fā)送至mongos路由器(mongos),通過mongos路由器根據(jù)該數(shù)據(jù)的標識,將該數(shù)據(jù)分攤到對應的mongodb片(shard),利用mongodb片對該數(shù)據(jù)進行存儲,并將該數(shù)據(jù)和響應的配置信息保存在mongoconfig服務器(mongoconfig),以實現(xiàn)mongodb數(shù)據(jù)庫集群的可擴展性和負載均衡;也可以使用其他結構的mongodb數(shù)據(jù)庫集群和對應的方式存儲實時信息類型的數(shù)據(jù)。本實施例對此不做任何限制。對于mongos路由器根據(jù)數(shù)據(jù)的標識,將數(shù)據(jù)分攤到對應的mongodb片的具體過程和數(shù)據(jù)的標識的具體設置,可以由設計人員根據(jù)實用場景和用戶需求自行設置,如可以將數(shù)據(jù)的標識設置為片鍵。只要mongos路由器根據(jù)數(shù)據(jù)的片鍵,將數(shù)據(jù)分攤到對應的mongodb片,本實施例對此不做任何限制。
可以理解的是,對于利用mongodb片對數(shù)據(jù)進行存儲的具體方式,可以為如圖4中mongodb片(shard)中的仲裁節(jié)點(shardserver仲裁)根據(jù)副本集中的副本節(jié)點的性能確定最優(yōu)副本節(jié)點(shardserver副本),主節(jié)點(shardserver)寫入數(shù)據(jù)并將數(shù)據(jù)復制到最優(yōu)副本節(jié)點中,以減少主節(jié)點的復制壓力,提高系統(tǒng)性能;也可以使用如現(xiàn)有技術中的mongodb片對數(shù)據(jù)進行存儲方式,如主節(jié)點直接數(shù)據(jù)并將數(shù)據(jù)復制到副本集的全部副本節(jié)點中。本實施例對此不受任何限制。
優(yōu)選的,本實施例所提供的方法還可以包括當mongodb片中的主節(jié)點宕機時,將最優(yōu)副本節(jié)點作為主節(jié)點對數(shù)據(jù)進行存儲和管理,以達到熱部署的效果,提高系統(tǒng)的穩(wěn)定性。
需要說明的是,對于實際需求而言,mongodb片中大部分業(yè)務都是讀業(yè)務,也就是從mongodb片中讀取數(shù)據(jù),因此,在需要從mongodb片中讀取數(shù)據(jù)時,可以通過該mongodb片的副本集中的副本節(jié)點讀取數(shù)據(jù),也就是讀取副本集中副本節(jié)點作為最優(yōu)副本節(jié)點時復制的主節(jié)點中的數(shù)據(jù),可以如圖5所示的副本集設置(replicaset),對于外界的應用服務器而言,其操作中的讀操作是面向mongodb片的副本集中的副本節(jié)點的,而其操作中的寫操作是面向副本集中的主節(jié)點(主服務器)的,這樣可以有效的減小mongodb數(shù)據(jù)庫集群的壓力,提高了系統(tǒng)的性能以及存儲效率;也可以如現(xiàn)有技術般通過mongodb片主節(jié)點讀取數(shù)據(jù),本實施例對此不做任何限制。
具體的配置操作可以如下:
準備三臺機器:192.168.1.136、192.168.1.137、192.168.1.138。192.168.1.136當作副本集的主節(jié)點,192.168.1.137、192.168.1.138作為副本集的副本節(jié)點。
之后分別在每臺機器上建立mongdb副本集文件夾,并且安裝啟動mongodb程序包,其指令如下:
#存放整個mongodb文件
mkdir-p/data/mongodbtest/replset
#存放mongodb數(shù)據(jù)文件
mkdir-p/data/mongodbtest/replset/data
#進入mongodb文件夾
cd/data/mongodbtest
#下載mongodb安裝包
wgethttp://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.4.8.tgz
#解壓下載的壓縮包
tarxvzfmongodb-linux-x86_64-2.4.8.tgz
#運行mongodb程序
/data/mongodbtest/mongodb-linux-x86_64-2.4.8/bin/mongod--dbpath/data/mongodbtest/replset/data--replsetrepset
之后對副本集進行相應的初始化配置:
這里選擇三臺機器上的任意一臺機器登入,并且使用admin數(shù)據(jù)庫,這時,修改其配置文件,定義副本集配置變量:
之后通過設置配置文件中的幾個參數(shù)來實現(xiàn)讀寫分離。其中,需要在副本節(jié)點secondary設置setslaveok,之后再程序中設置副本節(jié)點負責讀操作。
其中,讀參數(shù)除了decondary以外還有五個參數(shù):primary、primarypreferred、secondary、secondarypreferred、nearest。primary,默認參數(shù),只從主節(jié)點上進行讀取操作;primarypreferred,大部分從主節(jié)點上讀取數(shù)據(jù),只有主節(jié)點不可用時,從secondary節(jié)點(最優(yōu)副本節(jié)點)讀取數(shù)據(jù);secondary,只從secondary節(jié)點上進行讀取操作,存在的問題是secondary節(jié)點的數(shù)據(jù)會比primary節(jié)點數(shù)據(jù)“舊”;secondarypreferred,優(yōu)先從secondary節(jié)點進行讀取操作,secondary節(jié)點不可用時從主節(jié)點讀取數(shù)據(jù);nearest:不管是主節(jié)點、secondary節(jié)點,從網(wǎng)絡延遲最低的節(jié)點上讀取數(shù)據(jù)。
步驟203:當數(shù)據(jù)的類型為配置信息時,將數(shù)據(jù)存儲至mysql數(shù)據(jù)庫集群。
可以理解的是,對于本步驟中將數(shù)據(jù)存儲至mysql數(shù)據(jù)庫集群的具體過程和mysql數(shù)據(jù)庫集群對存儲的數(shù)據(jù)進行管理的具體方式,可以使用與現(xiàn)有技術相似的過程和方式,也可以使用其他過程和方式,本實施例對此不做任何限制。
需要說明的是,對于本實施例所提供的方法中mongodb數(shù)據(jù)庫集群和mysql數(shù)據(jù)庫集群分別的配置信息類型的數(shù)據(jù)和實時信息類型的數(shù)據(jù)的具體劃分方式,可以由設計人員根據(jù)實用場景和用戶需求自行設置,本實施例對此不受任何限制。如圖6所示,對于車載終端發(fā)送過來的數(shù)據(jù),其實時的gps數(shù)據(jù)、can信息和obd信息可以使用monodb數(shù)據(jù)庫集群存儲,而車輛的相對固定的配置信息(車輛信息、車載設備裝車信息和車載終端信息)可以由mysql數(shù)據(jù)庫進行存儲,有效地減輕了現(xiàn)有技術中mysql數(shù)據(jù)庫的壓力,提高了系統(tǒng)性能。
本實施例中,本發(fā)明實施例通過當數(shù)據(jù)的類型為實時信息時,利用mongodb片對數(shù)據(jù)進行存儲實現(xiàn)了mongodb數(shù)據(jù)庫集群的可擴展性和負載均衡;通過mongodb片中最優(yōu)副本節(jié)點的設置,減少了主節(jié)點的復制壓力,提高了系統(tǒng)性能;通過當mongodb片中的主節(jié)點宕機時,將最優(yōu)副本節(jié)點作為主節(jié)點對數(shù)據(jù)進行存儲和管理,達到了熱部署的效果,提高了系統(tǒng)的穩(wěn)定性;通過從最優(yōu)副本節(jié)點讀取數(shù)據(jù),有效的減小了mongodb數(shù)據(jù)庫集群的壓力,提高了系統(tǒng)的性能以及存儲效率,提升了用戶體驗。
請參考圖7,圖7為本發(fā)明實施例所提供的一種基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲系統(tǒng)的結構圖。該系統(tǒng)可以包括:
車聯(lián)網(wǎng)云平臺100,用于對車載終端發(fā)送的數(shù)據(jù)的類型進行識別;
分布式數(shù)據(jù)庫集群200,用于當所述類型為實時信息時,存儲所述數(shù)據(jù);其中,所述實時信息包括can總線信息和obd信息;
關系型數(shù)據(jù)庫300,用于當所述類型為配置信息時,存儲所述數(shù)據(jù);其中,所述配置信息包括車輛配置信息和車載終端配置信息。
可選的,所述分布式數(shù)據(jù)庫集群200可以具體用于通過mongos路由器根據(jù)所述數(shù)據(jù)的標識,將所述數(shù)據(jù)分攤到對應的mongodb片,利用所述mongodb片對所述數(shù)據(jù)進行存儲,并將所述數(shù)據(jù)和響應的配置信息保存在mongoconfig服務器。
可選的,所述分布式數(shù)據(jù)庫集群200,可以包括:
最優(yōu)副本節(jié)點確定模塊,用于所述mongodb片中的仲裁節(jié)點根據(jù)副本集中的副本節(jié)點的性能確定最優(yōu)副本節(jié)點;
數(shù)據(jù)寫模塊,用于主節(jié)點寫入所述數(shù)據(jù)并將所述數(shù)據(jù)復制到所述最優(yōu)副本節(jié)點中。
可選的,所述分布式數(shù)據(jù)庫集群200,可以包括:
數(shù)據(jù)讀模塊,用于當需要讀取所述數(shù)據(jù)時,通過所述最優(yōu)副本節(jié)點讀取所述數(shù)據(jù)。
本實施例中,本發(fā)明實施例通過分布式數(shù)據(jù)庫集群200當數(shù)據(jù)的類型為實時信息時,存儲數(shù)據(jù),可以將車輛的無限增長的實時信息類型的數(shù)據(jù),用分布式數(shù)據(jù)庫集群進行存儲管理;通過關系型數(shù)據(jù)庫300當數(shù)據(jù)的類型為配置信息時,存儲數(shù)據(jù),可以通過傳統(tǒng)的關系型數(shù)據(jù)庫對配置信息類型的數(shù)據(jù)進行存儲管理,結合了分布式數(shù)據(jù)庫集群和傳統(tǒng)的關系型數(shù)據(jù)庫各自的優(yōu)點,實現(xiàn)了對車聯(lián)網(wǎng)中數(shù)據(jù)的有效管理,提高了車聯(lián)網(wǎng)中數(shù)據(jù)的存儲閾值,并減少了數(shù)據(jù)處理的延遲時間,提升了用戶體驗。
說明書中各個實施例采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似部分互相參見即可。對于實施例公開的裝置而言,由于其與實施例公開的方法相對應,所以描述的比較簡單,相關之處參見方法部分說明即可。
專業(yè)人員還可以進一步意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、計算機軟件或者二者的結合來實現(xiàn),為了清楚地說明硬件和軟件的可互換性,在上述說明中已經(jīng)按照功能一般性地描述了各示例的組成及步驟。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。
結合本文中所公開的實施例描述的方法或算法的步驟可以直接用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(ram)、內(nèi)存、只讀存儲器(rom)、電可編程rom、電可擦除可編程rom、寄存器、硬盤、可移動磁盤、cd-rom、或技術領域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。
以上對本發(fā)明所提供的基于車聯(lián)網(wǎng)的數(shù)據(jù)存儲方法及系統(tǒng)進行了詳細介紹。本文中應用了具體個例對本發(fā)明的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本發(fā)明的方法及其核心思想。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內(nèi)。