欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種面向流式數(shù)據(jù)的在線處理方法及系統(tǒng)的制作方法

文檔序號(hào):6492226閱讀:133來源:國(guó)知局
一種面向流式數(shù)據(jù)的在線處理方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明公開了一種面向流式數(shù)據(jù)的在線處理方法,包括:步驟1,建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)按照鍵值結(jié)構(gòu)進(jìn)行屬性抽取后存儲(chǔ)在所述在線內(nèi)存緩存層中;步驟2,在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu);步驟3,對(duì)建立好索引結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況,同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄。步驟4,數(shù)據(jù)清理,若某流式數(shù)據(jù)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過,則將該流式數(shù)據(jù)進(jìn)行清理操作。本發(fā)明大幅度減小了流式處理過程中的數(shù)據(jù)讀寫壓力,能夠有效緩解大規(guī)模流式數(shù)據(jù)處理系統(tǒng)中數(shù)據(jù)庫(kù)的壓力,且能夠提升流式數(shù)據(jù)的實(shí)時(shí)處理速度。
【專利說明】一種面向流式數(shù)據(jù)的在線處理方法及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及大規(guī)模數(shù)據(jù)處理,尤其是涉及到一種面向流式數(shù)據(jù)的在線處理方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著時(shí)代的進(jìn)步和經(jīng)濟(jì)的發(fā)展,人們?nèi)粘I钪袑?duì)信息的需求量越來越大,尤其是隨著互聯(lián)網(wǎng)的日益普及,每天都有海量的信息在互聯(lián)網(wǎng)上發(fā)布和傳播。在2011年,分析調(diào)研機(jī)構(gòu)IDC發(fā)布了《從混沌中提取價(jià)值》。這一報(bào)告顯示,全球信息總量每過兩年,就會(huì)增長(zhǎng)一倍。2011年,全球被創(chuàng)建和被復(fù)制的數(shù)據(jù)總量為1.8ZB。舉例來說,1.8ZB相當(dāng)于全球每個(gè)人每天都去做2.15億次高分辨率的核磁共振檢查所產(chǎn)生的數(shù)據(jù)總量。
[0003]大規(guī)模數(shù)據(jù)分析處理系統(tǒng)的任務(wù)就是對(duì)海量數(shù)據(jù)進(jìn)行處理,從大量數(shù)據(jù)中分析挖掘出有價(jià)值的知識(shí)。通常的數(shù)據(jù)處理系統(tǒng)需要收集來自各個(gè)數(shù)據(jù)源的數(shù)據(jù)進(jìn)行存儲(chǔ),然后在從數(shù)據(jù)存儲(chǔ)設(shè)備中讀取數(shù)據(jù),進(jìn)行分析和處理。一種傳統(tǒng)數(shù)據(jù)分析處理系統(tǒng)的架構(gòu)是設(shè)立中心數(shù)據(jù)庫(kù)來實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)和讀取。首先由采集程序從互聯(lián)網(wǎng)上針對(duì)新聞、論壇、博客、微博、社交網(wǎng)絡(luò)、搜索引擎等不同分類的數(shù)據(jù)進(jìn)行采集并且寫入到中心數(shù)據(jù)庫(kù)中;然后,各種分析程序從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù),進(jìn)行后續(xù)的數(shù)據(jù)分析和處理。中心數(shù)據(jù)庫(kù)同時(shí)承擔(dān)了數(shù)據(jù)的寫入和讀取任務(wù)。
[0004]以數(shù)據(jù)庫(kù)為存儲(chǔ)中心的系統(tǒng)架構(gòu)已經(jīng)得到廣泛的認(rèn)同和應(yīng)用。但是在海量數(shù)據(jù)環(huán)境下,隨著數(shù)據(jù)來源種類的增加、來源數(shù)據(jù)量的增長(zhǎng)和應(yīng)用分析程序數(shù)目的增加,中心數(shù)據(jù)庫(kù)架構(gòu)的問題日益突顯。中心數(shù)據(jù)庫(kù)架構(gòu)的缺點(diǎn)主要體現(xiàn)在了三個(gè)方面:第一實(shí)時(shí)響應(yīng)性能下降;第二多次數(shù)據(jù)庫(kù)交互;第三數(shù)據(jù)處理延時(shí)。
[0005]隨著數(shù)據(jù)來源的增加、數(shù)據(jù)量的增大和應(yīng)用程序數(shù)目的增加,傳統(tǒng)的基于中心數(shù)據(jù)庫(kù)的架構(gòu)的數(shù)據(jù)處理分析系統(tǒng)的缺點(diǎn)日益凸顯。所以,亟須提出一種新的數(shù)據(jù)處理架構(gòu)來使得以上問題得到有效的緩解。
[0006]通常情況下,對(duì)于這個(gè)問題的解決思路可以歸納為以下四種:
[0007]消息中間件方法。消息中間件是一種由消息傳送機(jī)制或消息隊(duì)列模式組成的中間件技術(shù)。消息可以通過消息中間件被發(fā)送到各個(gè)應(yīng)用程序,通過使用消息中間件可以緩解數(shù)據(jù)的讀寫壓力,同時(shí)可以在消息中間件中控制應(yīng)用程序?qū)τ谙⒌脑L問。消息中間件在許多行業(yè)應(yīng)用中發(fā)揮了重要作用。在企業(yè)級(jí)應(yīng)用的需求中消息傳遞需要保證可靠性和安全性,但是,過于關(guān)注可靠性和安全性增加了數(shù)據(jù)處理的時(shí)間和數(shù)據(jù)傳輸?shù)难訒r(shí),不適合大規(guī)模數(shù)據(jù)處理的吞吐量的要求。
[0008]分布式消息隊(duì)列方法。越來越多的公司和研究機(jī)構(gòu)嘗試使用基于分布式的面向消息的系統(tǒng)來緩解中心數(shù)據(jù)庫(kù)架構(gòu)所帶來的問題,這些分布式的消息隊(duì)列大多數(shù)都以開源項(xiàng)目的形式發(fā)布。分布式的消息處理系統(tǒng)能夠高效處理海量數(shù)據(jù)環(huán)境下的消息服務(wù)。但是這種分布式的消息處理系統(tǒng)存在著兩個(gè)問題,一是這些系統(tǒng)都是基于主鍵查詢的方式來進(jìn)行數(shù)據(jù)的讀寫,無法按照某一個(gè)關(guān)鍵字段的查詢,無法完全取代關(guān)系型數(shù)據(jù)庫(kù)的查詢功能;二是分布式的消息處理系統(tǒng)為了保證高吞吐量,無法很好得保證數(shù)據(jù)的完整性和安全性。
[0009]緩存方法。在計(jì)算機(jī)體系結(jié)構(gòu)中對(duì)于內(nèi)存的讀寫速度是磁盤讀寫速度的10倍以上,所以為了避免頻繁的數(shù)據(jù)庫(kù)讀寫,便有人采用了緩存的思想,在數(shù)據(jù)庫(kù)之外開辟一塊內(nèi)存作為數(shù)據(jù)緩沖區(qū),以此來減輕數(shù)據(jù)庫(kù)負(fù)載,提高數(shù)據(jù)訪問速度。這種基于內(nèi)存的緩存仍然存在兩個(gè)問題,一是無法優(yōu)化數(shù)據(jù)寫入數(shù)據(jù)庫(kù)時(shí)效率;二是基于鍵值(Key-Value)組織的數(shù)據(jù),無法針對(duì)某一個(gè)特定的字段進(jìn)行區(qū)間查詢操作。
[0010]內(nèi)存數(shù)據(jù)庫(kù)方法。在Web應(yīng)用中,例如用戶訪問,用戶點(diǎn)擊,這些數(shù)據(jù)都是呈流式到達(dá),所以研究針對(duì)流式數(shù)據(jù)的在線數(shù)據(jù)的處理方法成為了學(xué)術(shù)界和工業(yè)界都十分關(guān)注的問題。另外一個(gè)在線數(shù)據(jù)處理的研究分支是內(nèi)存數(shù)據(jù)庫(kù)的研究與開發(fā)。內(nèi)存數(shù)據(jù)庫(kù),顧名思義就是將數(shù)據(jù)放在內(nèi)存中操作的數(shù)據(jù)庫(kù)。相對(duì)于磁盤,內(nèi)存的數(shù)據(jù)讀寫速度要高出幾個(gè)數(shù)量級(jí),將數(shù)據(jù)保存在內(nèi)存中相比從磁盤上訪問能夠極大地提高應(yīng)用的性能。同時(shí),內(nèi)存數(shù)據(jù)庫(kù)拋棄了磁盤數(shù)據(jù)管理的傳統(tǒng)方式,基于全部數(shù)據(jù)都在內(nèi)存中重新設(shè)計(jì)了體系結(jié)構(gòu),并且在數(shù)據(jù)緩存、快速算法、并行操作方面也進(jìn)行了相應(yīng)的改進(jìn),所以數(shù)據(jù)處理速度比傳統(tǒng)數(shù)據(jù)庫(kù)的數(shù)據(jù)處理速度要快很多,一般都在10倍以上。內(nèi)存數(shù)據(jù)庫(kù)的最大特點(diǎn)是其“主拷貝”或“工作版本”常駐內(nèi)存,即活動(dòng)事務(wù)只與實(shí)時(shí)內(nèi)存數(shù)據(jù)庫(kù)的內(nèi)存拷貝打交道。Redis最大的缺點(diǎn)在于沒有很好得解決數(shù)據(jù)服務(wù)可靠性的問題,所有的數(shù)據(jù)都存放在用戶申請(qǐng)的內(nèi)存空間內(nèi),一旦進(jìn)程重啟,或者異常退出,就會(huì)造成數(shù)據(jù)丟失。但是其無法滿足按照數(shù)據(jù)的不同字段進(jìn)行查詢的需求。
[0011]綜上所述,現(xiàn)有技術(shù)中緩解數(shù)據(jù)訪問壓力的能力,受各種不同因素限制,無法滿足實(shí)際需求。

【發(fā)明內(nèi)容】

[0012]本發(fā)明的目的是:引入一個(gè)基于內(nèi)存的在線緩存層,針對(duì)流式數(shù)據(jù)的特點(diǎn),將原來對(duì)于數(shù)據(jù)庫(kù)的大量讀寫壓力轉(zhuǎn)移到在線緩存層中,從而大幅度減小流式處理過程中數(shù)據(jù)讀寫壓力,有效緩解大規(guī)模流式數(shù)據(jù)處理系統(tǒng)中數(shù)據(jù)庫(kù)的壓力,提升流式數(shù)據(jù)的實(shí)時(shí)處理速度。
[0013]為實(shí)現(xiàn)上述目的,本發(fā)明提出了一種面向流式數(shù)據(jù)的在線處理方法,包括:
[0014]步驟I,建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)按照鍵值結(jié)構(gòu)進(jìn)行屬性抽取后存儲(chǔ)在所述在線內(nèi)存緩存層中;
[0015]步驟2,在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu);
[0016]步驟3,對(duì)建立好索引結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況;同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄;
[0017]步驟4,數(shù)據(jù)清理,若某流式數(shù)據(jù)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過,則將該流式數(shù)據(jù)進(jìn)行清理操作。
[0018]所述在線處理方法還包括:某個(gè)分析程序從所述內(nèi)存緩存層中讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:
[0019]如果該流式數(shù)據(jù)已經(jīng)被所述分析程序訪問過,是已讀標(biāo)志位,則不將該流式數(shù)據(jù)返回所述分析程序;[0020]如果該流式數(shù)據(jù)沒有被所述分析程序訪問過,是未讀標(biāo)志位,則將該流式數(shù)據(jù)返回給所述分析程序,并且將該流式數(shù)據(jù)的標(biāo)志位設(shè)置成已讀標(biāo)志位。
[0021]所述在線處理方法還包括:讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:
[0022]如果該流式數(shù)據(jù)被所有注冊(cè)的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除;
[0023]否則查詢?cè)摿魇綌?shù)據(jù)的駐留時(shí)間是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除。
[0024]所述步驟I中的鍵值結(jié)構(gòu)的建立方式是:對(duì)于每一條流式數(shù)據(jù),內(nèi)存緩存層將為其分配一個(gè)唯一的ID號(hào)作為記錄的鍵,該鍵值對(duì)應(yīng)于該條流式數(shù)據(jù)的所有屬性信息。所述步驟2中所述混合索引結(jié)構(gòu)是按照鍵值結(jié)構(gòu)、B+樹索引結(jié)構(gòu)和哈希索引結(jié)構(gòu)相結(jié)合建立的。
[0025]所述步驟2包括:
[0026]判定所述在線緩存層中的流式數(shù)據(jù)是否需要按字段查詢:
[0027]若需要按字段查詢:如果需要按照當(dāng)前屬性進(jìn)行區(qū)間查詢,對(duì)此屬性字段建立B+樹索引結(jié)構(gòu),如果需要按照當(dāng)前屬性進(jìn)行主鍵查詢,則對(duì)此屬性字段建立哈希索引結(jié)構(gòu);
[0028]若不需要按字段查詢,則不需要對(duì)此屬性字段建立索引結(jié)構(gòu)。
[0029]所述步驟3中:所述訪問標(biāo)志位是一個(gè)32位整型數(shù)字,每個(gè)整型數(shù)字的每一個(gè)比特位都可以表示一個(gè)分析程序?qū)τ诹魇綌?shù)據(jù)的訪問狀態(tài),對(duì)于內(nèi)存中的流式數(shù)據(jù)初始化時(shí),每條流式數(shù)據(jù)的訪問標(biāo)志位的每個(gè)比特位都是O ;
[0030]當(dāng)分析程序向內(nèi)存緩存層進(jìn)行注冊(cè)時(shí),所述內(nèi)存緩存層為其分配一個(gè)訪問標(biāo)志位,當(dāng)某個(gè)分析程序訪問一個(gè)流式數(shù)據(jù)后,所述內(nèi)存緩存層將所述流式數(shù)據(jù)的訪問標(biāo)志位與該分析程序的訪問標(biāo)識(shí)進(jìn)行按位運(yùn)算,并將計(jì)算后的結(jié)果作為該流式數(shù)據(jù)當(dāng)前的訪問標(biāo)志位。
[0031]所述步驟4中:
[0032]讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:
[0033]如果該流式數(shù)據(jù)被所有注冊(cè)的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除;
[0034]否則查詢?cè)摿魇綌?shù)據(jù)是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除。
[0035]為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種面向流式數(shù)據(jù)的在線處理系統(tǒng),包括:
[0036]在線內(nèi)存緩存層構(gòu)建模塊,用于建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)進(jìn)行屬性抽取后按照鍵值結(jié)構(gòu)存儲(chǔ)在所述在線內(nèi)存緩存層中;
[0037]混合索引結(jié)構(gòu)建立模塊,用于在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu);
[0038]訪問標(biāo)志位構(gòu)建模塊,用于對(duì)建立好索弓I結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況,同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄;
[0039]內(nèi)存流式數(shù)據(jù)清理模塊,用于對(duì)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過的流式數(shù)據(jù),進(jìn)行清理操作。[0040]所述在線處理系統(tǒng)還包括:
[0041]流式數(shù)據(jù)退出返回模塊,用于讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:
[0042]如果該流式數(shù)據(jù)已經(jīng)被分析程序訪問過,是已讀標(biāo)志位,則不將該流式數(shù)據(jù)返回分析程序;如果該流式數(shù)據(jù)沒有被分析程序訪問過,是未讀標(biāo)志位,則將該流式數(shù)據(jù)的標(biāo)志位設(shè)置成已讀標(biāo)志位,并且返回該流式數(shù)據(jù)給分析程序。
[0043]所述內(nèi)存流式數(shù)據(jù)清理模塊中:
[0044]當(dāng)分析程序從所述內(nèi)存緩存層中讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:如果該流式數(shù)據(jù)被所有注冊(cè)過的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除該流式數(shù)據(jù);否則查詢?cè)摿魇綌?shù)據(jù)的駐留時(shí)間是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除該流式數(shù)據(jù)。
[0045]本發(fā)明的有益效果在于:本發(fā)明的面向流式數(shù)據(jù)的在線處理方法及系統(tǒng)通過增加了基于內(nèi)存的數(shù)據(jù)緩存,針對(duì)流式數(shù)據(jù)的特點(diǎn),將原來對(duì)于數(shù)據(jù)庫(kù)的大量讀寫壓力轉(zhuǎn)移到在線緩存層中,有效緩解了大規(guī)模流式數(shù)據(jù)處理系統(tǒng)中數(shù)據(jù)庫(kù)的壓力,大幅減小了流式數(shù)據(jù)的讀寫壓力,提升了流式數(shù)據(jù)的實(shí)時(shí)處理速度和數(shù)據(jù)處理系統(tǒng)的時(shí)效性。
[0046]以下結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)描述,但不作為對(duì)本發(fā)明的限定。
【專利附圖】

【附圖說明】
[0047]圖1是本發(fā)明的面向流式數(shù)據(jù)的在線處理方法流程圖;
[0048]圖2是本發(fā)明的面向流式數(shù)據(jù)的在線處理系統(tǒng)示意圖。
【具體實(shí)施方式】
[0049]本發(fā)明的核心思想在于,在原有架構(gòu)上引入一個(gè)基于內(nèi)存的在線緩存層,針對(duì)流式數(shù)據(jù)的特點(diǎn),將原來對(duì)于數(shù)據(jù)庫(kù)的大量讀寫壓力,轉(zhuǎn)移到在線緩存中,并且能夠高效得提供數(shù)據(jù)服務(wù)。
[0050]圖1是本發(fā)明的面向流式數(shù)據(jù)的在線處理方法流程圖。如圖1所示,該方法包括:
[0051]步驟1,建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)按照鍵值結(jié)構(gòu)進(jìn)行屬性抽取后存儲(chǔ)在所述在線內(nèi)存緩存層中。
[0052]步驟2,在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu)。
[0053]步驟3,對(duì)建立好索引結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況;同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄。
[0054]流式數(shù)據(jù)是動(dòng)態(tài)存在的,對(duì)于每條流式數(shù)據(jù),其會(huì)被哪些分析程序訪問的是一定的。
[0055]步驟4,數(shù)據(jù)清理,若某流式數(shù)據(jù)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過,則將該流式數(shù)據(jù)進(jìn)行清理操作。
[0056]所述步驟I中的鍵值結(jié)構(gòu)的建立方式是:對(duì)于每一條流式數(shù)據(jù),內(nèi)存緩存層將為其分配一個(gè)唯一的ID號(hào)作為記錄的鍵,該鍵值對(duì)應(yīng)于該條流式數(shù)據(jù)的所有屬性信息。在原有基于中心數(shù)據(jù)庫(kù)架構(gòu)的基礎(chǔ)上,增加了一個(gè)在線的內(nèi)存緩存層。增加的內(nèi)存緩存層基于內(nèi)存進(jìn)行流式數(shù)據(jù)的管理,并且通過網(wǎng)絡(luò)接口對(duì)外提供數(shù)據(jù)讀寫服務(wù)。內(nèi)存緩存層的增加對(duì)于數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)流向進(jìn)行了調(diào)整。一方面,采集程序?qū)⒉杉降牧魇綌?shù)據(jù)寫入到內(nèi)存緩存中,分析程序從內(nèi)存緩存中讀取流式數(shù)據(jù),進(jìn)行數(shù)據(jù)分析。另一方面,內(nèi)存緩存將定期將內(nèi)存中的流式數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中進(jìn)行持久化存儲(chǔ)。
[0057]在線內(nèi)存緩存中,每一條流式數(shù)據(jù)按照鍵值的方式組織存儲(chǔ)。對(duì)于每一條流式數(shù)據(jù),內(nèi)存緩存將為其分配一個(gè)全局唯一的ID號(hào)作為記錄的鍵,跟隨著鍵存儲(chǔ)的是記錄的所有屬性的信息。所有的流式數(shù)據(jù)以鍵值方式進(jìn)行存儲(chǔ),并且通過流式數(shù)據(jù)的鍵來唯一標(biāo)識(shí)一條記錄。在基于鍵值存儲(chǔ)的基礎(chǔ)上,本發(fā)明對(duì)于流式數(shù)據(jù)建立混合多索引結(jié)構(gòu),對(duì)于每條流式數(shù)據(jù)的不同的字段建立不同類型的索引結(jié)構(gòu)。對(duì)于存儲(chǔ)的流式數(shù)據(jù),有的查詢需要按照屬性字段進(jìn)行唯一性的查詢,有的查詢需要按照字段的區(qū)間進(jìn)行查詢。對(duì)于有唯一性需求的查詢,在內(nèi)存中對(duì)這些字段建立哈希索引。以唯一性字段作為哈希索引的索引值建立哈希索引,在哈希索引結(jié)構(gòu)中進(jìn)行唯一性查詢時(shí),在最好情況下可以以0(1)(即常數(shù))的時(shí)間復(fù)雜度進(jìn)行流式數(shù)據(jù)的查詢。對(duì)于有區(qū)間查詢需求的屬性字段,在內(nèi)存中對(duì)這些字段建立B+樹索引。通過B+樹索引結(jié)構(gòu)進(jìn)行的區(qū)間查詢?cè)谄骄闆r下可以以O(shè) (1gn)(即對(duì)數(shù))的時(shí)間復(fù)雜度內(nèi)完成。
[0058]所述在線處理方法還包括動(dòng)態(tài)注冊(cè)步驟:
[0059]某個(gè)分析程序從所述內(nèi)存緩存層中讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:
[0060]如果該流式數(shù)據(jù)已經(jīng)被所述分析程序訪問過,是已讀標(biāo)志位,則不將該流式數(shù)據(jù)返回所述分析程序;
[0061]如果該流式數(shù)據(jù)沒有被所述分析程序訪問過,是未讀標(biāo)志位,則將該流式數(shù)據(jù)返回給所述分析程序,并且將該流式數(shù)據(jù)的標(biāo)志位設(shè)置成已讀標(biāo)志位。本發(fā)明在內(nèi)存中建立基于訪問控制標(biāo)簽的應(yīng)用程序動(dòng)態(tài)注冊(cè)與取消注冊(cè)機(jī)制,提供高擴(kuò)展性的數(shù)據(jù)流式讀取。針對(duì)流式數(shù)據(jù),本發(fā)明在內(nèi)存中對(duì)于每一條流式數(shù)據(jù)記錄增加一個(gè)數(shù)據(jù)訪問標(biāo)簽。數(shù)據(jù)訪問標(biāo)簽是一個(gè)32位整型數(shù)字,整型數(shù)字的每一個(gè)比特位都可以表示一個(gè)分析程序?qū)τ诹魇綌?shù)據(jù)的使用情況。分析程序需要向內(nèi)存緩存進(jìn)行注冊(cè),內(nèi)存緩存為其分配一個(gè)數(shù)據(jù)訪問標(biāo)識(shí),即使用32位整型數(shù)字中的某一個(gè)比特位來表示進(jìn)行注冊(cè)的分析程序。當(dāng)分析程序注冊(cè)成功之后,內(nèi)存緩存會(huì)為其分配一個(gè)訪問數(shù)據(jù)的標(biāo)識(shí),該分析程序就是通過該標(biāo)識(shí)來對(duì)流式數(shù)據(jù)進(jìn)行訪問和使用。在流式數(shù)據(jù)的處理中為了減少重復(fù)流式數(shù)據(jù)對(duì)于網(wǎng)絡(luò)帶寬的占用,每個(gè)分析程序不能重復(fù)訪問同一條流式數(shù)據(jù)。對(duì)于內(nèi)存中的數(shù)據(jù)初始化時(shí),每條流式數(shù)據(jù)的數(shù)據(jù)訪問標(biāo)識(shí)的每個(gè)比特位都是O。當(dāng)某個(gè)應(yīng)用程序訪問過該流式數(shù)據(jù)之后,內(nèi)存緩存將這條流式數(shù)據(jù)的數(shù)據(jù)訪問標(biāo)志位與該分析程序的數(shù)據(jù)訪問標(biāo)識(shí)進(jìn)行按位的或運(yùn)算,將計(jì)算后的結(jié)果作為該流式數(shù)據(jù)當(dāng)前的數(shù)據(jù)訪問控制標(biāo)簽。當(dāng)一個(gè)應(yīng)用程序訪問過某條流式數(shù)據(jù)之后,就不能重復(fù)訪問該流式數(shù)據(jù)。
[0062]所述步驟4中包括:
[0063]讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:
[0064]如果該流式數(shù)據(jù)被所有注冊(cè)的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除;
[0065]否則查詢?cè)摿魇綌?shù)據(jù)是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除。
[0066]即本發(fā)明建立了高效的內(nèi)存數(shù)據(jù)清理與退出機(jī)制,及時(shí)清理內(nèi)存中駐留的流式數(shù)據(jù),提高數(shù)據(jù)服務(wù)的可用性。對(duì)于內(nèi)存中的流式數(shù)據(jù)的清理機(jī)制,本發(fā)明將其分為兩種情況進(jìn)行考慮。在正常情況下,內(nèi)存數(shù)據(jù)緩存檢查內(nèi)存中流式數(shù)據(jù)的訪問控制標(biāo)簽,如果發(fā)現(xiàn)對(duì)于所有注冊(cè)過的分析程序,都已經(jīng)使用過該流式數(shù)據(jù),那么將啟動(dòng)數(shù)據(jù)清理過程,將其從內(nèi)存中刪除。在異常情況下,內(nèi)存數(shù)據(jù)緩存檢查內(nèi)存中流式數(shù)據(jù)的訪問控制標(biāo)簽,如果發(fā)現(xiàn)有某些分析程序尚未訪問過該流式數(shù)據(jù),則對(duì)這條流式數(shù)據(jù)在內(nèi)存中的駐留時(shí)間進(jìn)行判斷。如果該流式數(shù)據(jù)在內(nèi)存中長(zhǎng)時(shí)間駐留,超過了規(guī)定的時(shí)間閾值,那么將啟動(dòng)數(shù)據(jù)清理過程,將其從內(nèi)存中刪除;如果該流式數(shù)據(jù)在內(nèi)存中的駐留時(shí)間未超過規(guī)定的時(shí)間閾值,則不對(duì)其進(jìn)行處理,讓其繼續(xù)存儲(chǔ)于內(nèi)存中。
[0067]圖2是本發(fā)明的面向流式數(shù)據(jù)的在線處理系統(tǒng)示意圖。如圖2所示,該系統(tǒng)包括:
[0068]在線內(nèi)存緩存層構(gòu)建模塊,用于建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)進(jìn)行屬性抽取后按照鍵值結(jié)構(gòu)存儲(chǔ)在所述在線內(nèi)存緩存層中;
[0069]混合索引結(jié)構(gòu)建立模塊,用于在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu);
[0070]訪問標(biāo)志位構(gòu)建模塊,用于對(duì)建立好索弓I結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況;同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄;
[0071]內(nèi)存流式數(shù)據(jù)清理模塊,用于對(duì)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過的流式數(shù)據(jù),進(jìn)行清理操作。
[0072]在原有基于中心數(shù)據(jù)庫(kù)架構(gòu)的基礎(chǔ)上,增加了一個(gè)在線的內(nèi)存緩存層。增加的內(nèi)存緩存層基于內(nèi)存進(jìn)行流式數(shù)據(jù)的管理,并且通過網(wǎng)絡(luò)接口對(duì)外提供數(shù)據(jù)讀寫服務(wù)。內(nèi)存緩存層的增加對(duì)于數(shù)據(jù)處理系統(tǒng)的數(shù)據(jù)流向進(jìn)行了調(diào)整。一方面,采集程序?qū)⒉杉降牧魇綌?shù)據(jù)寫入到內(nèi)存緩存中,分析程序從內(nèi)存緩存中讀取流式數(shù)據(jù),進(jìn)行數(shù)據(jù)分析。另一方面,內(nèi)存緩存將定期將內(nèi)存中的流式數(shù)據(jù)寫入到數(shù)據(jù)庫(kù)中進(jìn)行持久化存儲(chǔ)。
[0073]在線內(nèi)存緩存中,每一條流式數(shù)據(jù)按照鍵值的方式組織存儲(chǔ)。對(duì)于每一條流式數(shù)據(jù),內(nèi)存緩存將為其分配一個(gè)全局唯一的ID號(hào)作為記錄的鍵,該鍵值對(duì)應(yīng)于該條流式數(shù)據(jù)的所有屬性信息。所有的流式數(shù)據(jù)以鍵值方式進(jìn)行存儲(chǔ),并且通過流式數(shù)據(jù)的鍵來唯一標(biāo)識(shí)一條記錄。在基于鍵值存儲(chǔ)的基礎(chǔ)上,本發(fā)明對(duì)于流式數(shù)據(jù)建立混合多索引結(jié)構(gòu),對(duì)于每條流式數(shù)據(jù)的不同的字段建立不同類型的索引結(jié)構(gòu)。對(duì)于存儲(chǔ)的流式數(shù)據(jù),有的查詢需要按照屬性字段進(jìn)行唯一性的查詢,有的查詢需要按照字段的區(qū)間進(jìn)行查詢。對(duì)于有唯一性需求的查詢,在內(nèi)存中對(duì)這些字段建立哈希索引。以唯一性字段作為哈希索引的索引值建立哈希索引,在哈希索引結(jié)構(gòu)中進(jìn)行唯一性查詢時(shí),在平均情況下可以以0(1)(即常數(shù))的時(shí)間復(fù)雜度進(jìn)行流式數(shù)據(jù)的查詢。對(duì)于有區(qū)間查詢需求的屬性字段,在內(nèi)存中對(duì)這些字段建立B+樹索引。通過B+樹索引結(jié)構(gòu)進(jìn)行的區(qū)間查詢?cè)谄骄闆r下可以以O(shè)(1gn)(即對(duì)數(shù))的時(shí)間復(fù)雜度內(nèi)完成。
[0074]所述在線處理系統(tǒng)還包括:
[0075]流式數(shù)據(jù)退出返回模塊,用于讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:[0076]如果該流式數(shù)據(jù)已經(jīng)被分析程序訪問過,是已讀標(biāo)志位,則不將該流式數(shù)據(jù)返回分析程序;如果該流式數(shù)據(jù)沒有被分析程序訪問過,是未讀標(biāo)志位,則將該流式數(shù)據(jù)的標(biāo)志位設(shè)置成已讀標(biāo)志位,并且返回該流式數(shù)據(jù)給分析程序。本發(fā)明在內(nèi)存中建立基于訪問控制標(biāo)簽的應(yīng)用程序動(dòng)態(tài)注冊(cè)與取消注冊(cè)機(jī)制,提供高擴(kuò)展性的數(shù)據(jù)流式讀取。針對(duì)流式數(shù)據(jù),本發(fā)明在內(nèi)存中對(duì)于每一條流式數(shù)據(jù)記錄增加一個(gè)數(shù)據(jù)訪問標(biāo)簽。數(shù)據(jù)訪問標(biāo)簽是一個(gè)32位整型數(shù)字,整型數(shù)字的每一個(gè)比特位都可以表示一個(gè)分析程序?qū)τ诹魇綌?shù)據(jù)的使用情況。分析程序需要向內(nèi)存緩存進(jìn)行注冊(cè),內(nèi)存緩存為其分配一個(gè)數(shù)據(jù)訪問標(biāo)識(shí),即使用32位整型數(shù)字中的某一個(gè)比特位來表示進(jìn)行注冊(cè)的分析程序。當(dāng)分析程序注冊(cè)成功之后,內(nèi)存緩存會(huì)為其分配一個(gè)訪問數(shù)據(jù)的標(biāo)識(shí),該分析程序就是通過該標(biāo)識(shí)來對(duì)流式數(shù)據(jù)進(jìn)行訪問和使用。在流式數(shù)據(jù)的處理中為了減少重復(fù)數(shù)據(jù)對(duì)于網(wǎng)絡(luò)帶寬的占用,每個(gè)分析程序不能重復(fù)訪問同一條流式數(shù)據(jù)。對(duì)于內(nèi)存中的數(shù)據(jù)初始化時(shí),每條流式數(shù)據(jù)的數(shù)據(jù)訪問標(biāo)識(shí)的每個(gè)比特位都是O。當(dāng)某個(gè)應(yīng)用程序訪問過該流式數(shù)據(jù)之后,內(nèi)存緩存將這條流式數(shù)據(jù)的數(shù)據(jù)訪問標(biāo)志位與該分析程序的數(shù)據(jù)訪問標(biāo)識(shí)進(jìn)行按位的或運(yùn)算,將計(jì)算后的結(jié)果作為該流式數(shù)據(jù)當(dāng)前的數(shù)據(jù)訪問控制標(biāo)簽。當(dāng)一個(gè)應(yīng)用程序訪問過某條流式數(shù)據(jù)之后,就不能重復(fù)訪問該流式數(shù)據(jù)。
[0077]所述內(nèi)存流式數(shù)據(jù)清理模塊中:
[0078]當(dāng)分析程序從所述內(nèi)存緩存層中讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:如果該流式數(shù)據(jù)被所有注冊(cè)過的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除該流式數(shù)據(jù);否則查詢?cè)摿魇綌?shù)據(jù)的駐留時(shí)間是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除該流式數(shù)據(jù)。
[0079]即本發(fā)明建立了高效的內(nèi)存數(shù)據(jù)清理與退出機(jī)制,及時(shí)清理內(nèi)存中駐留的流式數(shù)據(jù),提高數(shù)據(jù)服務(wù)的可用性。對(duì)于內(nèi)存中的流式數(shù)據(jù)的清理機(jī)制,本發(fā)明將其分為兩種情況進(jìn)行考慮。在正常情況下,內(nèi)存數(shù)據(jù)緩存檢查內(nèi)存中流式數(shù)據(jù)的訪問控制標(biāo)簽,如果發(fā)現(xiàn)對(duì)于所有注冊(cè)過的分析程序,都已經(jīng)使用過該流式數(shù)據(jù),那么將啟動(dòng)數(shù)據(jù)清理過程,將其從內(nèi)存中刪除,提升內(nèi)存的有效利用率。異常情況下,內(nèi)存數(shù)據(jù)緩存檢查內(nèi)存中流式數(shù)據(jù)的訪問控制標(biāo)簽,如果發(fā)現(xiàn)有某些分析程序尚未訪問過該流式數(shù)據(jù),則對(duì)這條流式數(shù)據(jù)在內(nèi)存中的駐留時(shí)間進(jìn)行判斷。如果該流式數(shù)據(jù)在內(nèi)存中長(zhǎng)時(shí)間駐留,超過了規(guī)定的時(shí)間閾值,那么將啟動(dòng)數(shù)據(jù)清理過程,將其從內(nèi)存中刪除;如果該流式數(shù)據(jù)在內(nèi)存中的駐留時(shí)間未超過規(guī)定的時(shí)間閾值,則不對(duì)其進(jìn)行處理,讓其繼續(xù)存儲(chǔ)于內(nèi)存中。
[0080]當(dāng)然,本發(fā)明還可有其它多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā)明作出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明權(quán)利要求的保護(hù)范圍。
【權(quán)利要求】
1.一種面向流式數(shù)據(jù)的在線處理方法,其特征在于,包括: 步驟I,建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)按照鍵值結(jié)構(gòu)進(jìn)行屬性抽取后存儲(chǔ)在所述在線內(nèi)存緩存層中; 步驟2,在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu); 步驟3,對(duì)建立好索引結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況,同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄; 步驟4,數(shù)據(jù)清理,若某流式數(shù)據(jù)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過,則將該流式數(shù)據(jù)進(jìn)行清理操作。
2.如權(quán)利要求1所述的在線處理方法,其特征在于,所述在線處理方法還包括動(dòng)態(tài)注冊(cè)步驟: 某個(gè)分析程序從所述內(nèi)存緩存層中讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位: 如果該流式數(shù)據(jù)已經(jīng)被所述分析程序訪問過,是已讀標(biāo)志位,則不將該流式數(shù)據(jù)返回所述分析程序; 如果該流式數(shù)據(jù)沒有被所述分析程序訪問過,是未讀標(biāo)志位,則將該流式數(shù)據(jù)返回給所述分析程序,并且將該流式數(shù)據(jù)的標(biāo)志位設(shè)置成已讀標(biāo)志位。
3.如權(quán)利要求1所述的在線處理方法,其特征在于,所述步驟I中的鍵值結(jié)構(gòu)的建立方式是:對(duì)于每一條流式數(shù)據(jù) ,內(nèi)存緩存層將為其分配一個(gè)唯一的ID號(hào)作為記錄的鍵,該鍵記錄該流式數(shù)據(jù)所有屬性的信息。
4.如權(quán)利要求1所述的在線處理方法,其特征在于,所述步驟2中所述混合索引結(jié)構(gòu)是按照鍵值結(jié)構(gòu)、B+樹索引結(jié)構(gòu)和哈希索引結(jié)構(gòu)相結(jié)合建立的。
5.如權(quán)利要求1所述的在線處理方法,其特征在于,所述步驟2包括: 判定所述在線緩存層中的流式數(shù)據(jù)是否需要按字段查詢: 若需要按字段查詢:如果需要按照當(dāng)前屬性進(jìn)行區(qū)間查詢,對(duì)此屬性字段建立B+樹索引結(jié)構(gòu),如果需要按照當(dāng)前屬性進(jìn)行主鍵查詢,則對(duì)此屬性字段建立哈希索引結(jié)構(gòu); 若不需要按字段查詢,則不需要對(duì)此屬性字段建立索引結(jié)構(gòu)。
6.如權(quán)利要求1所述的在線處理方法,其特征在于,所述步驟3中:所述訪問標(biāo)志位是一個(gè)32位整型數(shù)字,每個(gè)整型數(shù)字的每一個(gè)比特位都可以表示一個(gè)分析程序?qū)τ诹魇綌?shù)據(jù)的訪問狀態(tài),對(duì)于內(nèi)存中的流式數(shù)據(jù)初始化時(shí),每條流式數(shù)據(jù)的訪問標(biāo)志位的每個(gè)比特位都是O ; 當(dāng)分析程序向內(nèi)存緩存層進(jìn)行注冊(cè)時(shí),所述內(nèi)存緩存層為其分配一個(gè)訪問標(biāo)志位,當(dāng)某個(gè)分析程序訪問一個(gè)流式數(shù)據(jù)后,所述內(nèi)存緩存層將所述流式數(shù)據(jù)的訪問標(biāo)志位與該分析程序的訪問標(biāo)識(shí)進(jìn)行按位運(yùn)算,并將計(jì)算后的結(jié)果作為該流式數(shù)據(jù)當(dāng)前的訪問標(biāo)志位。
7.如權(quán)利要求1所述的在線處理方法,其特征在于,所述步驟4中: 讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位: 如果該流式數(shù)據(jù)被所有注冊(cè)的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除; 否則查詢?cè)摿魇綌?shù)據(jù)的駐留時(shí)間是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除。
8.一種面向流式數(shù)據(jù)的在線處理系統(tǒng),其特征在于,包括: 在線內(nèi)存緩存層構(gòu)建模塊,用于建立在線內(nèi)存緩存層,對(duì)所述流式數(shù)據(jù)進(jìn)行屬性抽取后按照鍵值結(jié)構(gòu)存儲(chǔ)在所述在線內(nèi)存緩存層中; 混合索引結(jié)構(gòu)建立模塊,用于在所述內(nèi)存緩存層中對(duì)所述流式數(shù)據(jù)建立混合索引結(jié)構(gòu); 訪問標(biāo)志位構(gòu)建模塊,用于對(duì)建立好索引結(jié)構(gòu)的每條流式數(shù)據(jù)增加一個(gè)訪問標(biāo)志位,此標(biāo)志位用于標(biāo)志不同分析程序?qū)τ谠摿魇綌?shù)據(jù)的注冊(cè)情況,同時(shí)對(duì)每一個(gè)分析程序訪問流式數(shù)據(jù)的狀態(tài)進(jìn)行記錄; 內(nèi)存流式數(shù)據(jù)清理模塊,用于對(duì)被所述內(nèi)存緩存層中的所有指定的分析程序訪問過的流式數(shù)據(jù),進(jìn)行清理操作。
9.如權(quán)利要求8所述的在線處理方法,其特征在于,所述在線處理系統(tǒng)還包括: 流式數(shù)據(jù)退出返回模塊,用于讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:如果該流式數(shù)據(jù)已經(jīng)被分析程序訪問過,是已讀標(biāo)志位,則不將該流式數(shù)據(jù)返回分析程序;如果該流式數(shù)據(jù)沒有被分析程序訪問過,是未讀標(biāo)志位,則將該流式數(shù)據(jù)的標(biāo)志位設(shè)置成已讀標(biāo)志位,并且返回該流式數(shù)據(jù)給分析程序。
10.如權(quán)利要求8所述的在線處理方法,其特征在于,所述內(nèi)存流式數(shù)據(jù)清理模塊中: 當(dāng)分析程序從所述內(nèi)存緩存層中讀取流式數(shù)據(jù)后,檢查所述流式數(shù)據(jù)的訪問標(biāo)志位:如果該流式數(shù)據(jù)被所有注冊(cè)過的分析程序訪問過,則將該流式數(shù)據(jù)從內(nèi)存緩存層里清除該流式數(shù)據(jù);否則查詢?cè)摿魇綌?shù)據(jù)的駐留時(shí)間是否超過閾值,若未超過該閾值則繼續(xù)等待分析程序的訪問,若超過該閾值則將該 流式數(shù)據(jù)從內(nèi)存緩存層里清除該流式數(shù)據(jù)。
【文檔編號(hào)】G06F17/30GK103853766SQ201210510056
【公開日】2014年6月11日 申請(qǐng)日期:2012年12月3日 優(yōu)先權(quán)日:2012年12月3日
【發(fā)明者】張瑾, 程學(xué)旗, 林祥輝, 黃康平 申請(qǐng)人:中國(guó)科學(xué)院計(jì)算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
吐鲁番市| 阿图什市| 美姑县| 大同县| 田东县| 民勤县| 中宁县| 庐江县| 宜兴市| 大余县| 岑巩县| 灵台县| 浦江县| 南和县| 台东县| 澄江县| 榆林市| 泸溪县| 湘潭市| 项城市| 罗山县| 关岭| 莫力| 元阳县| 施秉县| 汝州市| 句容市| 皋兰县| 始兴县| 若尔盖县| 皮山县| 泰来县| 孝义市| 肇庆市| 观塘区| 农安县| 静海县| 吉林省| 团风县| 扶绥县| 漠河县|