• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      一種基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架

      2014-02-27 05:50:56林祥輝黃康平許洪波程學(xué)旗
      中文信息學(xué)報(bào) 2014年1期
      關(guān)鍵詞:分析程序延時(shí)數(shù)據(jù)處理

      林祥輝,張 瑾,黃康平,許 磊,許洪波,程學(xué)旗,程 工

      (1. 中國(guó)科學(xué)院計(jì)算技術(shù)研究所,北京 100190;2. 中國(guó)科學(xué)院大學(xué),北京 100190;3. 國(guó)家計(jì)算機(jī)網(wǎng)絡(luò)應(yīng)急技術(shù)處理協(xié)調(diào)中心,北京 100190)

      1 引言

      處于信息爆炸的時(shí)代,我們的生活被海量數(shù)據(jù)所包圍。從大量的數(shù)據(jù)源中挖掘出有價(jià)值的信息成為了大規(guī)模數(shù)據(jù)分析挖掘系統(tǒng)的重點(diǎn)。大規(guī)模數(shù)據(jù)分析挖掘系統(tǒng)的主要處理流程是收集來(lái)自各個(gè)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行存儲(chǔ),然后對(duì)負(fù)責(zé)數(shù)據(jù)分析的應(yīng)用程序提供數(shù)據(jù)服務(wù),進(jìn)行數(shù)據(jù)分析處理。傳統(tǒng)的架構(gòu)是設(shè)立中心數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和服務(wù)。各種數(shù)據(jù)源將數(shù)據(jù)寫(xiě)入到中心數(shù)據(jù)庫(kù)中進(jìn)行統(tǒng)一存儲(chǔ);應(yīng)用分析程序從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),進(jìn)行分析和處理。但是在海量數(shù)據(jù)環(huán)境下,隨著數(shù)據(jù)來(lái)源種類的增加、來(lái)源數(shù)據(jù)量的增長(zhǎng)和應(yīng)用分析程序數(shù)目的增加,中心數(shù)據(jù)庫(kù)架構(gòu)的問(wèn)題日益突顯。中心數(shù)據(jù)庫(kù)架構(gòu)的缺點(diǎn)主要體現(xiàn)在三個(gè)方面: 1.對(duì)數(shù)據(jù)庫(kù)寫(xiě)入頻率的增加影響了數(shù)據(jù)庫(kù)的實(shí)時(shí)響應(yīng)性能;2.數(shù)據(jù)要經(jīng)過(guò)中心數(shù)據(jù)庫(kù)存儲(chǔ)后才能被應(yīng)用程序使用,這種串行的工作模式增加了數(shù)據(jù)處理延時(shí);3.隨應(yīng)用程序個(gè)數(shù)的增加,對(duì)數(shù)據(jù)庫(kù)的重復(fù)讀取次數(shù)呈線數(shù)增加,嚴(yán)重影響了數(shù)據(jù)庫(kù)的IO訪問(wèn)性能。本文針對(duì)在海量數(shù)據(jù)環(huán)境下的基于中心數(shù)據(jù)庫(kù)的架構(gòu)所帶來(lái)的問(wèn)題,提出了基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架,通過(guò)在數(shù)據(jù)庫(kù)之前增加了一個(gè)基于內(nèi)存的數(shù)據(jù)緩存層,改變了數(shù)據(jù)處理流程,實(shí)現(xiàn)了對(duì)于數(shù)據(jù)庫(kù)的讀寫(xiě)分離?;趦?nèi)存的在線數(shù)據(jù)處理服務(wù)框架的使用提高了整個(gè)系統(tǒng)的響應(yīng)速度,縮短了平均數(shù)據(jù)處理延時(shí),減少了應(yīng)用分析程序讀取數(shù)據(jù)庫(kù)的次數(shù)。

      本文的組織結(jié)構(gòu)如下: 第2節(jié)介紹基于中心數(shù)據(jù)庫(kù)架構(gòu)和數(shù)據(jù)處理的相關(guān)工作以及現(xiàn)有解決方案存在的問(wèn)題;第3節(jié)提出了基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架并且介紹實(shí)現(xiàn)方法;第4節(jié)在實(shí)驗(yàn)中對(duì)比了基于中心式數(shù)據(jù)庫(kù)的處理框架和基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架的響應(yīng)速度和平均數(shù)據(jù)處理延時(shí);第5節(jié)對(duì)目前的工作成果進(jìn)行總結(jié)并展望下一步的研究?jī)?nèi)容。

      2 相關(guān)工作

      2.1 基于中心數(shù)據(jù)庫(kù)的處理架構(gòu)

      在數(shù)據(jù)分析處理應(yīng)用中,基于中心數(shù)據(jù)庫(kù)的分析處理架構(gòu)被廣泛使用。如圖1所示,大規(guī)模數(shù)據(jù)分析處理系統(tǒng)通常采用中心數(shù)據(jù)庫(kù)的架構(gòu),中心數(shù)據(jù)庫(kù)主要提供了存儲(chǔ)服務(wù)和數(shù)據(jù)服務(wù)。來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)被寫(xiě)入到中心數(shù)據(jù)庫(kù)中進(jìn)行存儲(chǔ),應(yīng)用分析程序從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)進(jìn)行分析和處理。但是數(shù)據(jù)量的增長(zhǎng)給基于中心數(shù)據(jù)庫(kù)的處理架構(gòu)帶來(lái)了挑戰(zhàn)。

      圖1 基于中心數(shù)據(jù)庫(kù)的分析處理架構(gòu)示意圖

      傳統(tǒng)的數(shù)據(jù)來(lái)源包括了新聞、論壇和博客[1-2]三種主要的信息渠道。隨著互聯(lián)網(wǎng)應(yīng)用的普及,來(lái)自搜索引擎、微博平臺(tái)[3-4]和社交網(wǎng)站的數(shù)據(jù)成為了新的數(shù)據(jù)來(lái)源。各種產(chǎn)生速率和數(shù)據(jù)量都不相同的數(shù)據(jù)源同時(shí)對(duì)中心數(shù)據(jù)庫(kù)提交請(qǐng)求,會(huì)增加數(shù)據(jù)庫(kù)事務(wù)的復(fù)雜性,增加數(shù)據(jù)庫(kù)鎖的處理時(shí)間從而降低了數(shù)據(jù)庫(kù)的實(shí)時(shí)響應(yīng)時(shí)間。在基于中心數(shù)據(jù)的處理架構(gòu)中數(shù)據(jù)需要經(jīng)過(guò)中心數(shù)據(jù)庫(kù)后才能被應(yīng)用分析程序所使用,這種串行的處理模式增加了數(shù)據(jù)平均處理延時(shí)。應(yīng)用程序個(gè)數(shù)的增加使得讀取數(shù)據(jù)庫(kù)的次數(shù)增加,每一條數(shù)據(jù)記錄都會(huì)被所有的分析程序請(qǐng)求,對(duì)于數(shù)據(jù)庫(kù)的讀請(qǐng)求的次數(shù)將會(huì)隨著應(yīng)用分析程序數(shù)目的增長(zhǎng)呈線性增長(zhǎng)。多次的數(shù)據(jù)讀操作導(dǎo)致數(shù)據(jù)庫(kù)讀操作的效率下降,影響了數(shù)據(jù)庫(kù)的性能。Brad Fitzpatrick在2003年開(kāi)發(fā)了Memcached[5],通過(guò)在數(shù)據(jù)庫(kù)之前加入緩存,減輕了數(shù)據(jù)庫(kù)的讀取壓力,但是其無(wú)法有效降低對(duì)數(shù)據(jù)庫(kù)的寫(xiě)負(fù)載。

      隨著數(shù)據(jù)來(lái)源、數(shù)據(jù)量和應(yīng)用程序的增加,傳統(tǒng)的基于中心數(shù)據(jù)庫(kù)架構(gòu)的數(shù)據(jù)處理分析系統(tǒng)的缺點(diǎn)日益凸顯,亟須提出一種新的數(shù)據(jù)處理架構(gòu)來(lái)使得以上問(wèn)題得到有效解決。

      2.2 消息中間件技術(shù)

      消息中間件[6-8]是一種由消息傳送機(jī)制或消息隊(duì)列模式組成的中間件技術(shù)。消息可以通過(guò)消息中間件被發(fā)送到各個(gè)應(yīng)用程序,通過(guò)使用消息中間件可以減少對(duì)數(shù)據(jù)庫(kù)的讀取。在大型的面向消息中間件系統(tǒng)中,發(fā)布/訂閱[9-11]模式是一個(gè)重要數(shù)據(jù)訪問(wèn)范式。該模型通過(guò)一個(gè)消息隊(duì)列和數(shù)據(jù)訪問(wèn)控制機(jī)制將應(yīng)用程序分為發(fā)布者和訂閱者,發(fā)布者負(fù)責(zé)將產(chǎn)生的消息放在消息隊(duì)列中,訂閱者可以從中獲取自己感興趣的數(shù)據(jù)。這種發(fā)布者和訂閱者的松散耦合可以允許更好的可擴(kuò)放性和數(shù)據(jù)訪問(wèn)的控制。

      消息中間件已經(jīng)廣泛應(yīng)用在金融、郵電、交通等行業(yè)。面向企業(yè)級(jí)應(yīng)用的產(chǎn)品如Apache ActiveMQ[12-13],IBM Websphere MQ[14-16]都是針對(duì)這種企業(yè)級(jí)的應(yīng)用需求而產(chǎn)生。在企業(yè)級(jí)應(yīng)用的需求中消息傳遞的關(guān)注點(diǎn)是要保證消息能夠安全到達(dá)對(duì)方,但是這種解決方案增加了數(shù)據(jù)處理和傳輸?shù)难訒r(shí)。

      越來(lái)越多的公司和研究機(jī)構(gòu)嘗試使用分布式消息處理系統(tǒng)來(lái)緩解中心數(shù)據(jù)庫(kù)架構(gòu)所帶來(lái)的問(wèn)題。LinkIn公司2010年提出的Kafka[17],VMWare公司支持的開(kāi)源項(xiàng)目RabbitMQ[18-19]等都是基于分布式架構(gòu)的消息處理系統(tǒng),能夠高效處理海量數(shù)據(jù)環(huán)境下的消息服務(wù)。然而這些系統(tǒng)都是基于主鍵的數(shù)據(jù)讀寫(xiě),不能支持按照某一個(gè)關(guān)鍵字段的查詢,無(wú)法完全取代關(guān)系型數(shù)據(jù)庫(kù)的查詢功能。

      3 基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架

      3.1 基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架

      針對(duì)基于中心數(shù)據(jù)庫(kù)的數(shù)據(jù)處理分析架構(gòu)的不足,我們提出了一種基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架,其工作原理如圖2所示,我們?cè)谠械幕谥行臄?shù)據(jù)的數(shù)據(jù)處理分析處理系統(tǒng)的基礎(chǔ)上增加了一個(gè)內(nèi)存在線緩存層。來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)寫(xiě)入到基于內(nèi)存的數(shù)據(jù)緩存中。存在于緩存中的數(shù)據(jù)分成了兩個(gè)數(shù)據(jù)流向,一方面,寫(xiě)入到緩存中的數(shù)據(jù)可以對(duì)應(yīng)用程序提供在線的數(shù)據(jù)服務(wù);另外一方面,緩存中的數(shù)據(jù)會(huì)被寫(xiě)入到數(shù)據(jù)庫(kù)中進(jìn)行存儲(chǔ)。

      圖2 基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架

      內(nèi)存在線緩存層包括了多索引的數(shù)據(jù)存取模塊和數(shù)據(jù)訪問(wèn)控制模塊。多索引的數(shù)據(jù)存取模塊通過(guò)多索引緩存結(jié)構(gòu)和高效的并發(fā)控制實(shí)現(xiàn)了對(duì)于高并發(fā)的讀寫(xiě)請(qǐng)求的實(shí)時(shí)響應(yīng)。數(shù)據(jù)訪問(wèn)控制模塊對(duì)應(yīng)用分析程序的數(shù)據(jù)讀取進(jìn)行記錄和控制,有效地減少了數(shù)據(jù)庫(kù)的讀寫(xiě)次數(shù)。相比于基于中心數(shù)據(jù)庫(kù)的架構(gòu),增加了內(nèi)存在線緩存層之后數(shù)據(jù)庫(kù)只需要處理內(nèi)存在線緩存對(duì)于數(shù)據(jù)庫(kù)的寫(xiě)請(qǐng)求,而原來(lái)對(duì)于數(shù)據(jù)庫(kù)的讀請(qǐng)求則由內(nèi)存在線緩存提供的在線數(shù)據(jù)服務(wù)進(jìn)行處理。數(shù)據(jù)在進(jìn)入中心數(shù)據(jù)庫(kù)之前就可以由基于內(nèi)存的在線緩存對(duì)應(yīng)用分析程序提供數(shù)據(jù)服務(wù)。內(nèi)存在線緩存層的加入實(shí)現(xiàn)了對(duì)于數(shù)據(jù)庫(kù)的讀寫(xiě)分離,有效地減少了數(shù)據(jù)庫(kù)讀寫(xiě)負(fù)載。

      3.2 多索引的高效數(shù)據(jù)存取模塊

      基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架為了高效地處理對(duì)于內(nèi)存在線緩存的讀寫(xiě)請(qǐng)求,我們?cè)O(shè)計(jì)了一種多索引的高效數(shù)據(jù)存取模塊。如圖3所示,多索引的高效數(shù)據(jù)存取模塊采用Key-Value[20]數(shù)據(jù)存儲(chǔ)結(jié)構(gòu),同時(shí)借鑒了關(guān)系型數(shù)據(jù)庫(kù)的設(shè)計(jì)思路,根據(jù)業(yè)務(wù)需求,在多個(gè)字段建立索引,以提高插入和查詢的效率。多索引數(shù)據(jù)存取模塊在平均情況下以O(shè)(1)的時(shí)間進(jìn)行去重操作,在最壞情況下以O(shè)(logn)的時(shí)間進(jìn)行插入和查詢操作。

      首先,我們將來(lái)自不同數(shù)據(jù)源的數(shù)據(jù)按照Key-Value的方式進(jìn)行存儲(chǔ),Key由一個(gè)全局唯一的64位的整型數(shù)字表示,Value包括了數(shù)據(jù)的一些原始屬性,包括發(fā)布時(shí)間、采集時(shí)間、原文內(nèi)容等字段。在內(nèi)存在線緩存中,我們規(guī)定所有數(shù)據(jù)的Key值是全局唯一的,如果有重復(fù)Key值要進(jìn)行寫(xiě)操作時(shí),內(nèi)存在線緩存應(yīng)該阻止重復(fù)數(shù)據(jù)寫(xiě)入內(nèi)存緩存中。不同的應(yīng)用分析程序會(huì)按照時(shí)間段在內(nèi)存在線緩存中進(jìn)行查詢,例如一個(gè)應(yīng)用分析程序會(huì)請(qǐng)求從 “19:00” 到“20:00”之間的數(shù)據(jù)。內(nèi)存緩存需要高效地處理應(yīng)用分析程序的讀請(qǐng)求為其提供數(shù)據(jù)服務(wù)。

      其次,為了滿足高效的讀寫(xiě)需求,我們針對(duì)不同的讀寫(xiě)需求通過(guò)建立不同類型的索引結(jié)構(gòu)來(lái)提高內(nèi)存緩存的讀寫(xiě)性能。針對(duì)數(shù)據(jù)Key值唯一性的要求, 我們對(duì)每一條記錄的Key值建立散列索引來(lái)判斷寫(xiě)入的數(shù)據(jù)是否已經(jīng)存在。對(duì)Key值建立了散列索引后,只需要花費(fèi)O(1)的時(shí)間代價(jià)就可以判斷待寫(xiě)入的數(shù)據(jù)是否重復(fù)。對(duì)于按照字段進(jìn)行區(qū)間查詢的需求,我們對(duì)查詢字段建立B+樹(shù)索引。應(yīng)用分析程序可以在內(nèi)存在線緩存中以O(shè)(logn)的時(shí)間代價(jià)按字段進(jìn)行區(qū)間查詢。

      圖3 基于多索引的數(shù)據(jù)存取結(jié)構(gòu)

      3.3 基于發(fā)布/訂閱模式的數(shù)據(jù)訪問(wèn)控制

      數(shù)據(jù)訪問(wèn)控制模塊的任務(wù)是防止同一條數(shù)據(jù)被同一程序反復(fù)讀取?;趦?nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架對(duì)應(yīng)用分析程序提供了數(shù)據(jù)服務(wù),將原來(lái)對(duì)于數(shù)據(jù)庫(kù)的多次讀數(shù)據(jù)請(qǐng)求轉(zhuǎn)移到了內(nèi)存在線緩存層中。雖然基于內(nèi)存和網(wǎng)絡(luò)的數(shù)據(jù)服務(wù)的讀寫(xiě)開(kāi)銷要小于數(shù)據(jù)庫(kù)的讀寫(xiě),但是對(duì)于同一條數(shù)據(jù)記錄的多次讀取仍會(huì)造成網(wǎng)絡(luò)負(fù)擔(dān)。所以,我們?cè)跀?shù)據(jù)訪問(wèn)控制模塊中采用了發(fā)布/訂閱者模型來(lái)進(jìn)行數(shù)據(jù)訪問(wèn)控制,讓一條數(shù)據(jù)記錄以最少的次數(shù)被分析應(yīng)用程序所使用。在我們的應(yīng)用中各種不同的數(shù)據(jù)源是發(fā)布者,往在線緩存中發(fā)布數(shù)據(jù);應(yīng)用分析程序是訂閱者,對(duì)自己需要的數(shù)據(jù)進(jìn)行讀取。通過(guò)發(fā)布/訂閱模型控制一個(gè)應(yīng)用分析程序只能對(duì)同一條數(shù)據(jù)讀取一次, 這樣就避免了數(shù)據(jù)重復(fù)傳輸。訪問(wèn)控制模塊由訂閱注冊(cè)器和匹配器組成,下面將介紹訂閱注冊(cè)器和匹配器的工作流程。

      首先,應(yīng)用分析程序需要在在線緩存的注冊(cè)模塊進(jìn)行注冊(cè)申請(qǐng),然后可以根據(jù)注冊(cè)所得到的訪問(wèn)標(biāo)識(shí)來(lái)對(duì)數(shù)據(jù)進(jìn)行訪問(wèn)。圖4中Register算法描述了分析程序在獲取數(shù)據(jù)之前需要進(jìn)行的注冊(cè)流程。我們?cè)O(shè)定注冊(cè)訂閱的程序的最大數(shù)目為32,用一個(gè)32位整數(shù)的每個(gè)比特位來(lái)標(biāo)識(shí)一個(gè)具體的分析程序。對(duì)于每一個(gè)申請(qǐng)注冊(cè)訂閱的分析程序,根據(jù)其名字在一個(gè)保存著應(yīng)用程序名字和數(shù)據(jù)獲取標(biāo)識(shí)的映射結(jié)構(gòu)。當(dāng)一個(gè)分析程序開(kāi)始注冊(cè)時(shí),將在這個(gè)映射結(jié)構(gòu)中進(jìn)行查詢,如果分析已經(jīng)注冊(cè)成功,那么就將其之前注冊(cè)的數(shù)據(jù)獲取標(biāo)識(shí)返回給分析程序;如果一個(gè)分析程序是第一次進(jìn)行注冊(cè),那么就把當(dāng)前最大位的左一位標(biāo)示的數(shù)字作為這個(gè)新注冊(cè)的分析程序的數(shù)據(jù)獲取標(biāo)識(shí);如果目前已注冊(cè)的用戶達(dá)到了最大限度,那么算法將返回-1,表示分析程序注冊(cè)失敗。

      圖4 Register算法

      然后,在應(yīng)用分析程序注冊(cè)成功后通過(guò)匹配器對(duì)所需要的數(shù)據(jù)進(jìn)行讀取。分析程序使用自己的appName來(lái)進(jìn)行數(shù)據(jù)獲取請(qǐng)求,圖5-a中描述了應(yīng)用分析程序取數(shù)據(jù)庫(kù)的邏輯。首先根據(jù)分析程序的名字在名字—標(biāo)識(shí)映射結(jié)構(gòu)中取得appName所對(duì)應(yīng)的數(shù)據(jù)獲取標(biāo)識(shí),然后針對(duì)目標(biāo)數(shù)據(jù)計(jì)算其數(shù)據(jù)訪問(wèn)標(biāo)志位,如果此數(shù)據(jù)未被當(dāng)前分析程序所訪問(wèn)過(guò),則將這條數(shù)據(jù)返回給當(dāng)前的分析程序;如果此數(shù)據(jù)已經(jīng)被當(dāng)前分析程序使用過(guò),那么算法則不會(huì)返回這條數(shù)據(jù)。

      一個(gè)具體的數(shù)據(jù)訪問(wèn)流程的例子如圖5-b所示。已知一條數(shù)據(jù)當(dāng)前的訪問(wèn)標(biāo)識(shí)位為0000000000001000(十進(jìn)制標(biāo)示為8)。首先分析程序appName4,試圖請(qǐng)求獲取這條數(shù)據(jù),AccessData算法從之前的映射結(jié)構(gòu)中查詢得知appName4是已經(jīng)成功注冊(cè)的分析程序,其數(shù)據(jù)訪問(wèn)標(biāo)識(shí)為8,然后將8和此數(shù)據(jù)的訪問(wèn)控制位進(jìn)行按位與(&)運(yùn)算,在運(yùn)算結(jié)果中檢查appName4的數(shù)據(jù)訪問(wèn)標(biāo)識(shí)所代表的位置(此處為第4位)的值,如果該值為1,說(shuō)明appName4程序在之前已經(jīng)使用過(guò)這條數(shù)據(jù), 因此appName4就不能取得這條數(shù)據(jù)。然后分析程序appName5請(qǐng)求這條數(shù)據(jù),與之前的流程一樣,使用appName5的訪問(wèn)控制標(biāo)識(shí)對(duì)數(shù)據(jù)的訪問(wèn)控制位進(jìn)行按位與運(yùn)算之后,檢查appName5所對(duì)應(yīng)的位置的值為0,說(shuō)明appName5在之前尚未訪問(wèn)過(guò)這條數(shù)據(jù),所以算法會(huì)將此數(shù)據(jù)返回給appName5,同時(shí)會(huì)將這條數(shù)據(jù)的記錄訪問(wèn)控制位置為1,以防止appName5在下一次重復(fù)訪問(wèn)到這條記錄。

      圖5?a AccessData算法圖5?b AccessData流程示意圖

      4 實(shí)驗(yàn)

      為了驗(yàn)證我們所提出的基于內(nèi)存的高效在線數(shù)據(jù)處理服務(wù)框架,通過(guò)內(nèi)存在線緩存提供的在線數(shù)據(jù)服務(wù),可以縮短數(shù)據(jù)平均處理延時(shí);通過(guò)內(nèi)存在線緩存對(duì)外提供讀寫(xiě)服務(wù),可以減少數(shù)據(jù)庫(kù)的讀寫(xiě),同時(shí)縮短數(shù)據(jù)庫(kù)的平均響應(yīng)時(shí)間。我們分別采用基于中心數(shù)據(jù)庫(kù)(Oracle數(shù)據(jù)庫(kù))的架構(gòu)和基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架進(jìn)行系統(tǒng)性能對(duì)比。實(shí)驗(yàn)部分分別對(duì)兩種架構(gòu)下的平均處理延時(shí)進(jìn)行統(tǒng)計(jì)和分析,并分析在兩種架構(gòu)下的數(shù)據(jù)庫(kù)的平均響應(yīng)時(shí)間的變化情況。

      4.1 數(shù)據(jù)平均處理延時(shí)對(duì)比實(shí)驗(yàn)

      實(shí)驗(yàn)在數(shù)據(jù)規(guī)模相當(dāng)(1億條數(shù)據(jù))的兩套線上系統(tǒng)進(jìn)行,兩個(gè)系統(tǒng)分別采用了基于中心數(shù)據(jù)庫(kù)的架構(gòu)和基于內(nèi)存在線數(shù)據(jù)處理服務(wù)框架。我們將系統(tǒng)從數(shù)據(jù)源獲取到一條數(shù)據(jù)的時(shí)間到該數(shù)據(jù)被應(yīng)用分析程序處理完成的時(shí)間定義為一條數(shù)據(jù)的處理延時(shí)。圖6中我們分別統(tǒng)計(jì)了13批增量數(shù)據(jù)的平均處理延時(shí)。

      圖6 數(shù)據(jù)處理延時(shí)對(duì)比圖

      從圖6中可以看出,基于中心數(shù)據(jù)庫(kù)架構(gòu)的數(shù)據(jù)延時(shí)曲線整體高于基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架的數(shù)據(jù)處理延時(shí)曲線,這說(shuō)明數(shù)據(jù)通過(guò)在線緩存進(jìn)行轉(zhuǎn)發(fā)能夠有效的提高數(shù)據(jù)處理的時(shí)效性。從表1中可以看出,在基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架下,數(shù)據(jù)的平均處理延時(shí)為32秒,而基于中心數(shù)據(jù)庫(kù)架構(gòu)的數(shù)據(jù)平均處理延時(shí)為則是82秒,在線緩存框架使平均數(shù)據(jù)處理時(shí)間縮短了61%。

      表1 數(shù)據(jù)處理延時(shí)對(duì)比表

      值得注意的是,兩種架構(gòu)中數(shù)據(jù)的處理延時(shí)曲線都呈現(xiàn)出了一種周期性的規(guī)律,但是由于內(nèi)存在線緩存處理和轉(zhuǎn)發(fā)數(shù)據(jù)的速率要明顯快于數(shù)據(jù)庫(kù),所以可以看出基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架的曲線的周期要明顯小于由基于中心數(shù)據(jù)庫(kù)的數(shù)據(jù)處理延時(shí)曲線。一個(gè)有意思的現(xiàn)象是圖中第10批數(shù)據(jù)通過(guò)在線緩存轉(zhuǎn)發(fā)的處理延時(shí)為42s,而通過(guò)數(shù)據(jù)庫(kù)分發(fā)的處理延時(shí)僅僅是16s。出現(xiàn)這種情況的原因是數(shù)據(jù)到達(dá)的時(shí)間周期正好與分析程序請(qǐng)求數(shù)據(jù)庫(kù)的周期開(kāi)始處相吻合,數(shù)據(jù)剛剛寫(xiě)入到數(shù)據(jù)庫(kù)中,很快就被分析程序所請(qǐng)求。但是從整體趨勢(shì)上分析,數(shù)據(jù)通過(guò)數(shù)據(jù)庫(kù)轉(zhuǎn)發(fā)的平均處理延時(shí)明顯大于通過(guò)內(nèi)存在線緩存進(jìn)行轉(zhuǎn)發(fā)的平均處理延時(shí)。本文所提出的基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架有效地提高數(shù)據(jù)分析處理的時(shí)效性。

      4.2 數(shù)據(jù)庫(kù)平均事務(wù)響應(yīng)時(shí)間對(duì)比實(shí)驗(yàn)

      本實(shí)驗(yàn)中,我們分別對(duì)兩個(gè)系統(tǒng)的Oracle數(shù)據(jù)庫(kù)生成自動(dòng)工作負(fù)載報(bào)告[18](Automatic Workload Repository,以下簡(jiǎn)稱AWR報(bào)告),通過(guò)AWR報(bào)告計(jì)算兩種架構(gòu)下數(shù)據(jù)庫(kù)的平均事務(wù)響應(yīng)時(shí)間。

      AWR是從Oracle10g開(kāi)始提出的一種記錄數(shù)據(jù)庫(kù)工作負(fù)載的報(bào)告。AWR永久地保存系統(tǒng)的性能診斷信息給DBA們提供了更加有效的系統(tǒng)監(jiān)測(cè)工具。在工業(yè)界中AWR報(bào)告被廣泛地應(yīng)用在數(shù)據(jù)庫(kù)性能分析上。

      Oracle在10g版本明確引入time model[19],選取了事務(wù)平均響應(yīng)時(shí)間來(lái)衡量數(shù)據(jù)庫(kù)對(duì)事務(wù)處理的響應(yīng)速度。基于事務(wù)的平均響應(yīng)時(shí)間,可以看作性能優(yōu)化效果的一個(gè)交付和對(duì)比。事務(wù)平均響應(yīng)時(shí)間的計(jì)算方法如式(1)所示

      avg trans respone time(s)=

      (1)

      表2是兩個(gè)對(duì)比實(shí)驗(yàn)數(shù)據(jù)庫(kù)在一個(gè)小時(shí)內(nèi)的AWR報(bào)告的片段。從中可以看出在基于中心數(shù)據(jù)庫(kù)架構(gòu)的環(huán)境下,數(shù)據(jù)庫(kù)的文件順序讀次數(shù)為10 671次,數(shù)據(jù)庫(kù)平均事務(wù)響應(yīng)時(shí)間為7.09s。在使用了基于在線緩存的架構(gòu)之后,由于應(yīng)用程序不再?gòu)臄?shù)據(jù)庫(kù)中讀取數(shù)據(jù),所以數(shù)據(jù)庫(kù)文件順序讀取次數(shù)下降為385同時(shí)平均事務(wù)響應(yīng)時(shí)間下降為2.88s。在使用了在線緩存的結(jié)構(gòu)之后,數(shù)據(jù)庫(kù)的負(fù)載大大減小, 數(shù)據(jù)庫(kù)的響應(yīng)時(shí)間也得到了顯著的縮短。本實(shí)驗(yàn)證明了本文提出的基于內(nèi)存的在線數(shù)據(jù)處理服務(wù)框架,大大減少了數(shù)據(jù)庫(kù)的讀寫(xiě)負(fù)擔(dān),有效地提高了數(shù)據(jù)庫(kù)的實(shí)時(shí)響應(yīng)速度。

      表2 數(shù)據(jù)庫(kù)事務(wù)平均響應(yīng)時(shí)間對(duì)比

      5 結(jié)論

      本文針對(duì)在海量數(shù)據(jù)環(huán)境下傳統(tǒng)的基于中心數(shù)據(jù)庫(kù)的數(shù)據(jù)分析處理架構(gòu)所帶來(lái)的數(shù)據(jù)庫(kù)響應(yīng)速度慢、數(shù)據(jù)分析處理延時(shí)長(zhǎng)、數(shù)據(jù)庫(kù)讀請(qǐng)求次數(shù)多的問(wèn)題,提出了基于在線緩存的數(shù)據(jù)分析處理框架。實(shí)驗(yàn)結(jié)果表明,基于在線緩存的數(shù)據(jù)處理服務(wù)框架有效提高了數(shù)據(jù)庫(kù)的響應(yīng)速度,縮短數(shù)據(jù)處理周期,減少了對(duì)數(shù)據(jù)庫(kù)讀請(qǐng)求的次數(shù)。然而,隨著數(shù)據(jù)量的進(jìn)一步增長(zhǎng),基于單機(jī)內(nèi)存的在線緩存將無(wú)法容納所有的數(shù)據(jù)。我們的下一步工作將著眼于采用分布式的架構(gòu)來(lái)解決這一問(wèn)題。

      [1] 李盛韜,余智華,程學(xué)旗,白碩. Web信息采集研究進(jìn)展[J]. 計(jì)算機(jī)科學(xué),2003(02): 151-171.

      [2] 郭巖,劉春陽(yáng),余智華,等. 網(wǎng)絡(luò)輿情信息源影響力的評(píng)估研究[J]. 中文信息學(xué)報(bào), 2011,25(3):64-71.

      [3] 曹鵬,李靜遠(yuǎn),滿彤,等.Twitter中近似重復(fù)消息的判定方法研究[J].中文信息學(xué)報(bào),2011,25(1):20-27.

      [4] 郭浩,陸余良.基于信息傳播的微博用戶影響力度量[C]//CCIR2011.

      [5] Fitzpatrick B. Distributed caching with memcached[J]. Journal Linux, 2004,124:7559.

      [6] Krakowiak, Sacha. “What’s middleware?”. ObjectWeb.org. Retrieved 2005-05-06.

      [7] 徐晶,許煒. 消息中間件綜述[J]. 計(jì)算機(jī)工程, 2005, 33(16):73-76.

      [8] 李文逍,楊小虎. 基于分布式緩存的消息中間件存儲(chǔ)模型[J]. 計(jì)算機(jī)工程,2010,36(13):93-95.

      [9] Birman K, Joseph T. Exploiting virtual synchrony in distributed systems[C]//Proceeding of SOSP ’87 the eleventh ACM Symposium on Operating systems principles, 1987: 123-138.

      [10] Hasan, Souleiman. Approximate Semantic Matching of Heterogeneous Events [C]//Proceeding of the 6th ACM International Conference on Distributed Event-Based Systems 2012, 252-263.

      [11] Eugster P T, Felber P A, Guerraoui R. The Many Faces of Publish/Subscribe Proceeding of ACM Computing Surveys, 2003,35(2): 114.

      [12] The Apache Software Foundation ActiveMQ[DB/OL] http://activemq.apache.org/, 2012.

      [13] Snyder, Bruce, Bosanac, Dejan, et al. ActiveMQ in Action (1st ed.)[M], Manning Publications, 2010: 375.

      [14] Iyengar A, Jessani V, Chilanti M. WebSphere Business Integration Primer: Process Server, BPEL, SCA, and SOA 1st[M], IBM Press , 2007.

      [15] Kloppmann M. IBM Deutschland Entwicklung GmbH Business process choreography in WebSphere: Combining the power of BPEL and J2EE[J], IBM Systems Journal, 2004, 43(2): 270-296.

      [16] B.Mann. Worldwide Product Manager Providing a Backbone for Connectivity with SOA Messaging[M], 2009.

      [17] Kreps J, Narkhede N, Rao J. Kafka: a Distributed Messaging System for Log Processing[M], 2011.

      [18] Videla A, Williams J J W. RabbitMQ in Action:Distributed messaging for everyone[M]. 2012.

      [19] home page http://www.rabbitmq.com/[DB/OL], 2012.

      [20] Seeger M. Key-Value Stores: a practical overview Computer Science and Media[A], Ultra-Large-Sites September 2009.

      [21] Automatic Workload Repository (AWR) in Oracle Database[DB/OL], http://www.oracle-base.com/articles/10g/automatic-workload-repository-10g.php.

      [22] Oracle Database Performance Method page[M/CD].

      [23] http://docs.oracle.com/cd/B19306_01/server.102/b28051/tdppt_method.htm[DB/OL].

      猜你喜歡
      分析程序延時(shí)數(shù)據(jù)處理
      管控經(jīng)營(yíng)風(fēng)險(xiǎn),以分析程序提升企業(yè)財(cái)務(wù)報(bào)表審計(jì)效能
      認(rèn)知診斷缺失數(shù)據(jù)處理方法的比較:零替換、多重插補(bǔ)與極大似然估計(jì)法*
      ILWT-EEMD數(shù)據(jù)處理的ELM滾動(dòng)軸承故障診斷
      基于級(jí)聯(lián)步進(jìn)延時(shí)的順序等效采樣方法及實(shí)現(xiàn)
      基于希爾伯特- 黃變換的去噪法在外測(cè)數(shù)據(jù)處理中的應(yīng)用
      Two-dimensional Eulerian-Lagrangian Modeling of Shocks on an Electronic Package Embedded in a Projectile with Ultra-high Acceleration
      基于小波包變換的樂(lè)音時(shí)—頻綜合分析程序的開(kāi)發(fā)
      桑塔納車發(fā)動(dòng)機(jī)延時(shí)熄火
      光控觸摸延時(shí)開(kāi)關(guān)設(shè)計(jì)
      河南科技(2014年23期)2014-02-27 14:19:00
      基于POS AV610與PPP的車輛導(dǎo)航數(shù)據(jù)處理
      合阳县| 尼木县| 遂宁市| 东城区| 延寿县| 平阳县| 梅州市| 石棉县| 苗栗县| 渭源县| 和硕县| 镶黄旗| 福清市| 旺苍县| 黎川县| 邵东县| 镇巴县| 资阳市| 涪陵区| 喀什市| 洛扎县| 陆良县| 台山市| 东安县| 琼海市| 吴桥县| 宜君县| 四会市| 塘沽区| 石屏县| 庆元县| 紫云| 永泰县| 沅江市| 乐陵市| 青州市| 太原市| 威远县| 徐汇区| 深泽县| 宜州市|