亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于共享內(nèi)存優(yōu)化算法的用采終端實(shí)時(shí)庫(kù)設(shè)計(jì)實(shí)現(xiàn)

        2019-03-06 08:24:34曹子濤許金宇
        自動(dòng)化與儀表 2019年2期
        關(guān)鍵詞:方法

        曹子濤,許金宇,熊 劍

        (國(guó)電南瑞科技股份有限公司,南京211106)

        隨著智能電網(wǎng)和智慧城市的快速發(fā)展, 以及“電,水,氣,熱四表合一”的試點(diǎn)應(yīng)用,國(guó)家電網(wǎng)公司大力推進(jìn)智能用電信息采集系統(tǒng)的建設(shè)。 面對(duì)日趨增加的各類(lèi)應(yīng)用,以及物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能等技術(shù)的發(fā)展趨勢(shì),大量數(shù)據(jù)存儲(chǔ)和計(jì)算能力成為越來(lái)越重要的問(wèn)題[1-2],對(duì)用采終端的數(shù)據(jù)采集存儲(chǔ)的實(shí)時(shí)性、高效性提出了更高的要求。 傳統(tǒng)的關(guān)系型歷史數(shù)據(jù)庫(kù)需要對(duì)磁盤(pán)文件進(jìn)行讀寫(xiě)操作,運(yùn)行效率低,無(wú)法滿(mǎn)足要求,因此需要高效的實(shí)時(shí)數(shù)據(jù)庫(kù)進(jìn)行支撐[3]。

        用電信息采集終端(簡(jiǎn)稱(chēng)用采終端)遵循DL/T 698.45《電能信息采集與管理系統(tǒng) 第4-5 部分:通信協(xié)議—面向?qū)ο蟮臄?shù)據(jù)交換協(xié)議》電力行業(yè)標(biāo)準(zhǔn),其中描述的實(shí)時(shí)數(shù)據(jù)可以分為結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)2 類(lèi)。 結(jié)構(gòu)化數(shù)據(jù)主要指固定長(zhǎng)度和類(lèi)型的數(shù)據(jù),有采集量、參數(shù)、控制命令等;非結(jié)構(gòu)化數(shù)據(jù)主要指長(zhǎng)度不定的數(shù)據(jù)如字節(jié)序列、文件等。

        目前,針對(duì)用采終端設(shè)計(jì)的實(shí)時(shí)庫(kù)較少,同時(shí)未考慮對(duì)于結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的區(qū)分,因而不能充分的滿(mǎn)足性能最優(yōu)和占用空間最小。 文獻(xiàn)[4-5]未對(duì)用采終端實(shí)時(shí)庫(kù)的實(shí)現(xiàn)做深入闡述,未對(duì)性能和空間利用率進(jìn)行研究;文獻(xiàn)[6]僅介紹了哈希Hash 索引技術(shù), 未指出內(nèi)存定位和管理等方法;文獻(xiàn)[7]僅給出了粗略的方案設(shè)計(jì)。 在此所設(shè)計(jì)的實(shí)時(shí)庫(kù)針對(duì)這2 類(lèi)數(shù)據(jù)的不同特點(diǎn)采用不同的設(shè)計(jì)方法,以最大化提高運(yùn)行效率和內(nèi)存空間利用率。

        1 用采終端實(shí)時(shí)庫(kù)需求分析

        用電信息采集終端是執(zhí)行電能信息采集、轉(zhuǎn)發(fā)控制命令、數(shù)據(jù)管理、數(shù)據(jù)雙向傳輸?shù)脑O(shè)備。 數(shù)據(jù)的采集和管理是用采終端的核心功能,其數(shù)據(jù)包括實(shí)時(shí)數(shù)據(jù)、參數(shù)數(shù)據(jù)、轉(zhuǎn)發(fā)數(shù)據(jù)、控制命令、事件信息、歷史數(shù)據(jù)等。 其中,參數(shù)數(shù)據(jù)、計(jì)算數(shù)據(jù)、采集數(shù)據(jù)等采集終端的核心任務(wù)數(shù)據(jù),由于對(duì)實(shí)時(shí)性要求較高,需要存入實(shí)時(shí)庫(kù)以便不同的進(jìn)程進(jìn)行高效的訪問(wèn)與更新。

        用電信息采集終端往往需要連接大量的電能表和采集器, 其連接方式多種多樣 (電力線載波、RS485、微功率無(wú)線),而且采集設(shè)備的地理位置分布廣泛,同時(shí)要面對(duì)各種各樣的用戶(hù)類(lèi)型,包括大型專(zhuān)變、小型專(zhuān)變、單三相一般用戶(hù)等[4]。實(shí)時(shí)、高效地處理如此大量繁雜的數(shù)據(jù)是用采終端要解決的核心問(wèn)題。

        用采終端的內(nèi)存容量較為有限,同時(shí)內(nèi)存的使用率對(duì)于整個(gè)系統(tǒng)的運(yùn)行情況有著非常重要的影響, 過(guò)高的內(nèi)存使用率會(huì)大大降低系統(tǒng)運(yùn)行速度,因此對(duì)于大量數(shù)據(jù)的處理,在不降低效率的同時(shí)盡可能的節(jié)省內(nèi)存空間是非常必要的。

        2 用采終端實(shí)時(shí)庫(kù)關(guān)鍵技術(shù)分析與設(shè)計(jì)

        2.1 用采終端實(shí)時(shí)庫(kù)軟件架構(gòu)

        實(shí)時(shí)庫(kù)位于用采終端的軟件架構(gòu)中的位置如圖1 所示。 圖中,實(shí)時(shí)數(shù)據(jù)庫(kù)位于平臺(tái)業(yè)務(wù)層,管理數(shù)據(jù)采集、任務(wù)調(diào)度、通信管理等數(shù)據(jù)的交換。

        圖1 實(shí)時(shí)庫(kù)架構(gòu)Fig.1 Real-time database framework

        2.2 實(shí)時(shí)庫(kù)索引技術(shù)分析與設(shè)計(jì)

        提高實(shí)時(shí)庫(kù)的訪問(wèn)速度的關(guān)鍵在于索引,建立合理的索引可以避免遍歷查找,從而提高實(shí)時(shí)庫(kù)的檢索效率。 實(shí)時(shí)庫(kù)常用的索引包括數(shù)組、自平衡二叉樹(shù)(AVL)、B/B+樹(shù)、T 樹(shù)、Hash 索引等。 AVL,B/B+樹(shù)、T 樹(shù)等算法,在性能或者空間利用率上不太適合隨機(jī)散列查找[6],而考慮到用采系統(tǒng)實(shí)時(shí)庫(kù)自身數(shù)據(jù)類(lèi)型不固定、隨機(jī)查找為主的特點(diǎn),采用Hash 索引作為用采系統(tǒng)實(shí)時(shí)庫(kù)的索引機(jī)制具備最好的時(shí)間和空間的平衡性。 另外,在Hash 索引的基礎(chǔ)上,使用Hash 桶來(lái)進(jìn)一步提高查找效率, 同時(shí)實(shí)現(xiàn)Hash 值的防碰撞功能。

        2.3 實(shí)時(shí)庫(kù)的共享內(nèi)存管理技術(shù)分析與設(shè)計(jì)

        使用共享內(nèi)存是實(shí)時(shí)庫(kù)的必然選擇。 在UNIX中,主要包括進(jìn)程間通信IPC(inter-process communication)和可移植操作系統(tǒng)接口POSIX(portable operating system interface of UNIX)2 種方法實(shí)現(xiàn)[7]。 由于IPC 方法允許使用的內(nèi)存容量比較有限,考慮到對(duì)大量數(shù)據(jù)的存儲(chǔ)要求,故在此采用POSIX 標(biāo)準(zhǔn)的基于文件映射的共享內(nèi)存,在擴(kuò)大一定容量的基礎(chǔ)上而又不損失性能。

        如果使用的共享內(nèi)存超出系統(tǒng)內(nèi)存容量,POSIX 標(biāo)準(zhǔn)的共享內(nèi)存會(huì)使用磁盤(pán)文件進(jìn)行緩存,一定程度上降低了效率,因此需要盡可能地在不損失效率的情況下節(jié)約內(nèi)存空間。

        另外, 由于非結(jié)構(gòu)化數(shù)據(jù)的長(zhǎng)度不統(tǒng)一性,插入記錄時(shí)每次會(huì)計(jì)算分配的地址,從而會(huì)有一定的計(jì)算耗時(shí), 而如果全部按照統(tǒng)一的長(zhǎng)度進(jìn)行存儲(chǔ),又會(huì)造成較多的內(nèi)存空間浪費(fèi)。 因此,針對(duì)長(zhǎng)度固定和長(zhǎng)度不固定的數(shù)據(jù)進(jìn)行區(qū)分設(shè)計(jì),可以較好地解決性能和空間的平衡問(wèn)題。

        3 內(nèi)存數(shù)據(jù)庫(kù)的實(shí)現(xiàn)

        3.1 防碰撞的Hash 桶索引技術(shù)實(shí)現(xiàn)

        每張實(shí)時(shí)庫(kù)的表對(duì)應(yīng)另外一個(gè)Hash 桶索引表。 選取一個(gè)或者多個(gè)域作為記錄的關(guān)鍵字,內(nèi)部有N 個(gè)桶來(lái)存放外部節(jié)點(diǎn)信息, 檢索時(shí)Hash 函數(shù)計(jì)算該關(guān)鍵字對(duì)應(yīng)的Hash 值, 并將該關(guān)鍵字節(jié)點(diǎn)根據(jù)特定的規(guī)則分別放入對(duì)應(yīng)的Hash 桶中。 檢索時(shí),首先根據(jù)關(guān)鍵字計(jì)算獲取該關(guān)鍵字位于哪個(gè)桶中,然后進(jìn)行匹配計(jì)算比較Hash 值,同時(shí)為了防止碰撞的產(chǎn)生,在Hash 值匹配的情況下,會(huì)再次比較關(guān)鍵字本身的值,從而確保在Hash 值碰撞時(shí), 仍然可以準(zhǔn)確查找到關(guān)鍵字對(duì)應(yīng)的值。Hash 索引表中存放地址偏移,在訪問(wèn)記錄時(shí),根據(jù)關(guān)鍵字查找到對(duì)應(yīng)的內(nèi)存地址偏移即可高效的訪問(wèn)數(shù)據(jù)。Hash桶處理過(guò)程如圖2 所示。

        圖2 Hash 桶Fig.2 Hash buckets

        3.2 內(nèi)存直接定位和管理技術(shù)實(shí)現(xiàn)

        記錄的內(nèi)存地址訪問(wèn)速度是提高效率的關(guān)鍵。在DL/T 698.45 中, 記錄鍵值是對(duì)象描述符OAD(object attribute descriptor),即數(shù)據(jù)的唯一標(biāo)識(shí)。 而Hash 表中存儲(chǔ)的記錄的關(guān)鍵字就是OAD, 因此需要根據(jù)OAD 在Hash 表中查找到對(duì)應(yīng)的內(nèi)存地址偏移,以實(shí)現(xiàn)內(nèi)存的直接定位,而對(duì)于結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)分別使用不同的地址分配和和訪問(wèn)方法, 結(jié)構(gòu)化數(shù)據(jù)使用靜態(tài)鏈表索引的映射,非結(jié)構(gòu)化數(shù)據(jù)采用增加記錄信息頭的方法。

        3.2.1 結(jié)構(gòu)化數(shù)據(jù)

        對(duì)于結(jié)構(gòu)化數(shù)據(jù),由于每條記錄的長(zhǎng)度均都一致, 因此每條記錄的起始地址的間隔都是固定的。靜態(tài)鏈表的索引可以滿(mǎn)足該特點(diǎn),把對(duì)靜態(tài)鏈表插入時(shí)分配的位置索引映射到實(shí)時(shí)庫(kù)的表中,就可以滿(mǎn)足內(nèi)存地址的分配和訪問(wèn)功能。

        在Hash 表中存放記錄對(duì)應(yīng)的靜態(tài)鏈表的索引, 訪問(wèn)時(shí)從Hash 表中查找到該記錄對(duì)應(yīng)的索引值,從而直接根據(jù)索引乘以每條記錄的長(zhǎng)度計(jì)算出內(nèi)存地址。 結(jié)構(gòu)化數(shù)據(jù)內(nèi)存結(jié)構(gòu)如圖3 所示。

        圖3 結(jié)構(gòu)化數(shù)據(jù)內(nèi)存結(jié)構(gòu)Fig.3 Structured data memory structure

        3.2.2 非結(jié)構(gòu)化數(shù)據(jù)

        (1)內(nèi)存管理方法

        對(duì)于非結(jié)構(gòu)化數(shù)據(jù),由于每條記錄的長(zhǎng)度不固定,如果采用靜態(tài)鏈表映射的方法,每條記錄都按照統(tǒng)一的長(zhǎng)度,則在分配內(nèi)存的時(shí)候會(huì)造成極大的空間浪費(fèi)。 同時(shí),對(duì)于插入、刪除操作的內(nèi)存分配可能導(dǎo)致記錄覆蓋等問(wèn)題,要解決該問(wèn)題會(huì)導(dǎo)致程序處理過(guò)于復(fù)雜,降低了程序的執(zhí)行效率,因此設(shè)計(jì)了一種內(nèi)存管理的方法。

        在每條記錄前存儲(chǔ)本條記錄的信息頭,在預(yù)先分配的表空間范圍內(nèi)對(duì)數(shù)據(jù)進(jìn)行管理。 其中,信息頭包含了以下信息:當(dāng)前數(shù)據(jù)塊的長(zhǎng)度、當(dāng)前數(shù)據(jù)塊是否空閑、前一個(gè)數(shù)據(jù)塊的長(zhǎng)度等。

        在插入記錄時(shí),會(huì)遍歷空閑的內(nèi)存空間,直到找到滿(mǎn)足記錄長(zhǎng)度的空閑內(nèi)存空間段, 占用該空間,并返回該空間起始地址,同時(shí)分配剩余的空間為空閑的內(nèi)存空間, 在信息頭內(nèi)記錄數(shù)據(jù)長(zhǎng)度,同時(shí)置為占用狀態(tài)。

        在刪除記錄時(shí),首先檢查相鄰的內(nèi)存空間是否也是空閑的,如果是則先合并空閑空間,再把對(duì)應(yīng)信息頭置為空閑狀態(tài)。

        在Hash 表中存放記錄對(duì)應(yīng)的內(nèi)存偏移量,訪問(wèn)時(shí)從Hash 表中查找到該記錄對(duì)應(yīng)的地址偏移量, 直接用起始地址加上偏移量計(jì)算出內(nèi)存地址。非結(jié)構(gòu)化數(shù)據(jù)內(nèi)存結(jié)構(gòu)如圖4 所示。

        圖4 非結(jié)構(gòu)化數(shù)據(jù)內(nèi)存結(jié)構(gòu)Fig.4 Unstructured data memory structure

        (2)內(nèi)存碎片整理與備份

        對(duì)于非結(jié)構(gòu)化數(shù)據(jù),由于長(zhǎng)期頻繁的插入刪除操作可能會(huì)造成內(nèi)存碎片的問(wèn)題,降低了內(nèi)存的使用率,因此需要內(nèi)存碎片整理功能,釋放與合并所有無(wú)法被利用的碎片空間,同時(shí)拷貝和移動(dòng)相應(yīng)的記錄。

        考慮到對(duì)內(nèi)存數(shù)據(jù)的拷貝和移動(dòng)有可能會(huì)出現(xiàn)錯(cuò)誤或者異常,因此對(duì)移動(dòng)數(shù)據(jù)在移動(dòng)前備份在共享內(nèi)存中,在發(fā)生異常時(shí)可以立即快速恢復(fù)。

        另外,由于整理后的記錄的內(nèi)存地址偏移量可能會(huì)改變, 因此內(nèi)存整理后的原有的Hash 表中的偏移量需要更新,而原實(shí)時(shí)庫(kù)的訪問(wèn)在更新后不會(huì)受到任何影響。 偏移地址的更新過(guò)程如圖5 所示。

        4 試驗(yàn)測(cè)試

        圖5 偏移地址更新Fig.5 Offset address update

        為了體現(xiàn)區(qū)分結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)不同的設(shè)計(jì)在效率和占用空間方面各自的性能差異,選取電能量相關(guān)數(shù)據(jù),對(duì)這2 種數(shù)據(jù)設(shè)計(jì)了7 種測(cè)試方法:總共10 張用采終端的實(shí)時(shí)庫(kù)表,每次對(duì)每張表插入、讀取、更新、刪除記錄5000 條,共執(zhí)行100 次,記錄平均耗時(shí)和使用的內(nèi)存空間。 7 種方法具體如下:

        測(cè)試1 結(jié)構(gòu)化數(shù)據(jù)采用非結(jié)構(gòu)化數(shù)據(jù)的使用方法;

        測(cè)試2 結(jié)構(gòu)化數(shù)據(jù)采用結(jié)構(gòu)化數(shù)據(jù)的使用方法;

        測(cè)試3 非結(jié)構(gòu)化數(shù)據(jù)采用結(jié)構(gòu)化數(shù)據(jù)的使用方法;

        測(cè)試4 非結(jié)構(gòu)化數(shù)據(jù)采用非結(jié)構(gòu)化數(shù)據(jù)的使用方法;

        測(cè)試5 混合數(shù)據(jù)全部采用結(jié)構(gòu)化數(shù)據(jù)的使用方法;

        測(cè)試6 混合數(shù)據(jù)全部采用非結(jié)構(gòu)化數(shù)據(jù)的使用方法;

        測(cè)試7 混合數(shù)據(jù)區(qū)分采用對(duì)應(yīng)數(shù)據(jù)的使用方法。

        這7 種方法的測(cè)試結(jié)果包括每張表的平均耗時(shí)、使用的總內(nèi)存空間,具體數(shù)據(jù)見(jiàn)表1。

        表1 實(shí)時(shí)庫(kù)測(cè)試結(jié)果Tab.1 Test results of real-time database

        實(shí)際測(cè)試結(jié)果表明,結(jié)構(gòu)化數(shù)據(jù)采用結(jié)構(gòu)化數(shù)據(jù)的存取方法在時(shí)間和空間上均表現(xiàn)更優(yōu),而非結(jié)構(gòu)化數(shù)據(jù)采用非結(jié)構(gòu)化數(shù)據(jù)的存取方法,在空間的利用率上提升非常明顯,效率上和使用結(jié)構(gòu)化的存取方法幾乎相當(dāng),因此使用該方法更優(yōu)。 而對(duì)于同時(shí)存在結(jié)構(gòu)化數(shù)據(jù)和非結(jié)構(gòu)化數(shù)據(jù)的混合數(shù)據(jù),分別使用對(duì)應(yīng)數(shù)據(jù)的存取方法無(wú)論在時(shí)間還是空間上都比不加區(qū)分的方法更優(yōu)。

        5 結(jié)語(yǔ)

        詳細(xì)闡述了用采終端非關(guān)系型實(shí)時(shí)庫(kù)的實(shí)現(xiàn)方案, 關(guān)鍵在于使用防碰撞的Hash 桶索引表存放地址偏移的直接定位技術(shù),和區(qū)分結(jié)構(gòu)數(shù)據(jù)與非結(jié)構(gòu)數(shù)據(jù)的內(nèi)存管理技術(shù), 滿(mǎn)足了實(shí)時(shí)庫(kù)的實(shí)時(shí)性、高效性,同時(shí)實(shí)現(xiàn)了對(duì)有限內(nèi)存空間在大量數(shù)據(jù)處理中的最大化利用。 該實(shí)時(shí)數(shù)據(jù)庫(kù)已在YDT100 系列用采終端實(shí)際應(yīng)用。 對(duì)于未來(lái)的大數(shù)據(jù)分析、物聯(lián)網(wǎng)等智能用電技術(shù)的發(fā)展趨勢(shì),用采終端的實(shí)時(shí)庫(kù)后續(xù)需要考慮用電采集系統(tǒng)的分布式遠(yuǎn)程交互和大數(shù)據(jù)分析等功能升級(jí)[8-10]。

        猜你喜歡
        方法
        中醫(yī)特有的急救方法
        中老年保健(2021年9期)2021-08-24 03:52:04
        高中數(shù)學(xué)教學(xué)改革的方法
        化學(xué)反應(yīng)多變幻 “虛擬”方法幫大忙
        變快的方法
        兒童繪本(2020年5期)2020-04-07 17:46:30
        學(xué)習(xí)方法
        可能是方法不對(duì)
        用對(duì)方法才能瘦
        Coco薇(2016年2期)2016-03-22 02:42:52
        最有效的簡(jiǎn)單方法
        山東青年(2016年1期)2016-02-28 14:25:23
        四大方法 教你不再“坐以待病”!
        Coco薇(2015年1期)2015-08-13 02:47:34
        賺錢(qián)方法
        精品亚洲a∨无码一区二区三区 | 影视av久久久噜噜噜噜噜三级 | 日本免费一区二区在线看片| 一边捏奶头一边高潮视频| 国产97色在线 | 亚洲| 久久久久国产一级毛片高清版A | 一本色道久久综合亚洲精品不| 精品福利一区二区三区免费视频 | 国产一区二区女内射| a毛片全部免费播放| av网站入口在线免费观看| 日本视频一中文有码中文| 亚洲乱码一区av春药高潮 | 2021国产精品一区二区在线 | 中文字幕有码一区二区三区| 国产一区二区三区中出| 小妖精又紧又湿高潮h视频69| 精品国产一区二区三区av 性色| 精品不卡久久久久久无码人妻| av成人资源在线观看| 亚洲av片无码久久五月| 国产成人综合色在线观看网站| 色综合久久精品中文字幕| 国产亚洲av夜间福利在线观看| 人妻丰满av无码中文字幕| 国产第19页精品| 亚洲av综合日韩精品久久久| 日韩一级黄色片一区二区三区| 国产盗摄xxxx视频xxxx| 亚洲AV无码国产成人久久强迫 | 中文文精品字幕一区二区| 偷拍一区二区三区在线观看 | 国产肉体xxxx裸体784大胆| 麻豆国产高清精品国在线| 在线亚洲免费精品视频| 国产精品久久久福利| 蜜臀久久99精品久久久久久小说| 亚洲高清国产品国语在线观看| 国产精品老熟女乱一区二区| 国产成人精品久久一区二区三区| 日韩一区二区肥|