數(shù)據(jù)存儲(chǔ)方法及設(shè)備的制造方法
【專(zhuān)利說(shuō)明】
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲(chǔ)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)存儲(chǔ)方法及設(shè)備。
【【背景技術(shù)】】
[0002]Hbase是一個(gè)分布式的、面向列的開(kāi)源數(shù)據(jù)庫(kù)。作為Hbase的客戶端,在向Hbase寫(xiě)入數(shù)據(jù)時(shí)首先會(huì)將數(shù)據(jù)寫(xiě)入到本地緩存,當(dāng)本地緩存中的數(shù)據(jù)量超過(guò)閾值后,再將本地緩存中的數(shù)據(jù)一次性寫(xiě)入Hbase,這樣可以保證客戶端的吞吐量。但是,由于數(shù)據(jù)先寫(xiě)入客戶端的本地緩存,只有本地緩存中的數(shù)據(jù)量超過(guò)閾值后才會(huì)被寫(xiě)入Hbase,因此,實(shí)時(shí)性很差。
【
【發(fā)明內(nèi)容】
】
[0003]本發(fā)明的多個(gè)方面提供一種數(shù)據(jù)存儲(chǔ)方法及設(shè)備,用以在保證數(shù)據(jù)存儲(chǔ)設(shè)備的吞吐量的同時(shí),提高數(shù)據(jù)存儲(chǔ)的實(shí)時(shí)性。
[0004]本發(fā)明的一方面,提供一種數(shù)據(jù)存儲(chǔ)方法,包括:
[0005]當(dāng)有待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),按照第一數(shù)據(jù)存儲(chǔ)邏輯將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中;
[0006]當(dāng)預(yù)設(shè)的同步周期到達(dá)時(shí),按照第二數(shù)據(jù)存儲(chǔ)邏輯將所述本地緩存中的數(shù)據(jù)存儲(chǔ)到所述數(shù)據(jù)庫(kù)中。
[0007]本發(fā)明的另一方面,提供一種數(shù)據(jù)存儲(chǔ)設(shè)備,包括:
[0008]存儲(chǔ)模塊,用于在有待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),按照第一數(shù)據(jù)存儲(chǔ)邏輯將所述待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中;
[0009]同步模塊,用于在預(yù)設(shè)的同步周期到達(dá)時(shí),按照第二數(shù)據(jù)存儲(chǔ)邏輯將所述本地緩存中的數(shù)據(jù)存儲(chǔ)到所述數(shù)據(jù)庫(kù)中。
[0010]在本發(fā)明技術(shù)方案中,當(dāng)有待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),按照第一數(shù)據(jù)存儲(chǔ)邏輯將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中,其中,若先將待存儲(chǔ)數(shù)據(jù)存到本地緩存,有利于提高數(shù)據(jù)存儲(chǔ)設(shè)備的吞吐量,若直接將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,則有利于提高數(shù)據(jù)存儲(chǔ)的實(shí)時(shí)性;另外,還設(shè)置同步周期,當(dāng)同步周期到達(dá)時(shí),按照第二數(shù)據(jù)存儲(chǔ)邏輯將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,可以防止本地緩存中的數(shù)據(jù)長(zhǎng)時(shí)間無(wú)法寫(xiě)入數(shù)據(jù)庫(kù)的情況,一定程度上提高了將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中的實(shí)時(shí)性。
【【附圖說(shuō)明】】
[0011 ] 為了更清楚地說(shuō)明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0012]圖1為本發(fā)明一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0013]圖2為本發(fā)明另一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法的流程示意圖;
[0014]圖3為本發(fā)明一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖;
[0015]圖4為本發(fā)明另一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)設(shè)備的結(jié)構(gòu)示意圖。
【【具體實(shí)施方式】】
[0016]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
[0017]圖1為本發(fā)明一實(shí)施例提供的數(shù)據(jù)存儲(chǔ)方法的流程示意圖。如圖1所示,該方法包括:
[0018]101、當(dāng)有待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),按照第一數(shù)據(jù)存儲(chǔ)邏輯將該待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中。
[0019]102、當(dāng)預(yù)設(shè)的同步周期到達(dá)時(shí),按照第二數(shù)據(jù)存儲(chǔ)邏輯將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。
[0020]首先值得說(shuō)明的是,上述步驟101和102之間并沒(méi)有先后順序,哪個(gè)條件先到達(dá)就先執(zhí)行哪個(gè)條件對(duì)應(yīng)的操作。詳細(xì)來(lái)說(shuō),如果是先有待存儲(chǔ)數(shù)據(jù)到達(dá),則先按照第一數(shù)據(jù)存儲(chǔ)邏輯將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中,之后,當(dāng)預(yù)設(shè)的同步周期到達(dá)時(shí),再按照第二數(shù)據(jù)存儲(chǔ)邏輯將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。如果是預(yù)設(shè)的同步周期先到達(dá),則先按照第二數(shù)據(jù)存儲(chǔ)邏輯將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,之后,當(dāng)有待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),再按照第一數(shù)據(jù)存儲(chǔ)邏輯將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中。
[0021]本實(shí)施例對(duì)上述第一數(shù)據(jù)存儲(chǔ)邏輯不做限定,凡是能夠?qū)⒋鎯?chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)邏輯都適用于本發(fā)明。同理,本實(shí)施例對(duì)上述第二數(shù)據(jù)存儲(chǔ)邏輯也不做限定,凡是能夠在同步周期到達(dá)時(shí)將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中的數(shù)據(jù)存儲(chǔ)邏輯也都適用于本發(fā)明。
[0022]在本實(shí)施例中,當(dāng)有待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),數(shù)據(jù)存儲(chǔ)設(shè)備可以按照第一數(shù)據(jù)存儲(chǔ)邏輯將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存和/或數(shù)據(jù)庫(kù)中。本地緩存是指數(shù)據(jù)存儲(chǔ)設(shè)備一側(cè)的緩存空間。
[0023]在此說(shuō)明,數(shù)據(jù)存儲(chǔ)設(shè)備可以在待存儲(chǔ)數(shù)據(jù)到達(dá)時(shí),直接將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,即實(shí)時(shí)的將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,這樣可以保證數(shù)據(jù)存儲(chǔ)的實(shí)時(shí)性?;蛘撸瑪?shù)據(jù)存儲(chǔ)設(shè)備可以在本地緩存中有存儲(chǔ)空間時(shí),將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到本地緩存中,而在本地緩存中沒(méi)有存儲(chǔ)空間時(shí),將待存儲(chǔ)數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中。這樣先在本地緩存中進(jìn)行緩存,之后可以統(tǒng)一將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,有利于提高數(shù)據(jù)存儲(chǔ)設(shè)備的吞吐量。
[0024]另外,在本實(shí)施例中,預(yù)先設(shè)置同步周期,用于周期性的按照第二數(shù)據(jù)存儲(chǔ)邏輯將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,以避免本地緩存中的數(shù)據(jù)長(zhǎng)時(shí)間不被寫(xiě)到數(shù)據(jù)庫(kù)中,提高數(shù)據(jù)被存儲(chǔ)到數(shù)據(jù)庫(kù)的實(shí)時(shí)性。為了更加清楚的理解本實(shí)施例所帶來(lái)的實(shí)時(shí)性的有益效果,下面對(duì)現(xiàn)有技術(shù)中本地緩存中的數(shù)據(jù)長(zhǎng)時(shí)間不被寫(xiě)到數(shù)據(jù)庫(kù)中的情況進(jìn)行舉例說(shuō)明:
[0025]假設(shè)本地緩存的大小為5個(gè)緩存空間,每個(gè)數(shù)據(jù)占用1個(gè)緩存空間,前后有2次數(shù)據(jù)寫(xiě)入請(qǐng)求,第一寫(xiě)入請(qǐng)求請(qǐng)求寫(xiě)入的數(shù)據(jù)是第一數(shù)據(jù)、第二數(shù)據(jù)和第三數(shù)據(jù),第二寫(xiě)入請(qǐng)求請(qǐng)求寫(xiě)入的數(shù)據(jù)是第四數(shù)據(jù)、第五數(shù)據(jù)、第六數(shù)據(jù)和第七數(shù)據(jù);
[0026]當(dāng)處理第一寫(xiě)入請(qǐng)求時(shí),本地緩存的空間足夠,此時(shí),本地緩存中的數(shù)據(jù)是第一數(shù)據(jù)、第二數(shù)據(jù)和第三數(shù)據(jù),數(shù)據(jù)庫(kù)中暫時(shí)沒(méi)有數(shù)據(jù);
[0027]當(dāng)處理第二寫(xiě)入請(qǐng)求時(shí),本地緩存的空間不足,在寫(xiě)入第四數(shù)據(jù)和第五數(shù)據(jù)后,本地緩存中的數(shù)據(jù)量已達(dá)到閾值(在該實(shí)施方式中是指本地緩存已滿),則需要將本地緩存中的數(shù)據(jù)一次性寫(xiě)入數(shù)據(jù)庫(kù)中,然后清空本地緩存,再繼續(xù)寫(xiě)入第六數(shù)據(jù)和第七數(shù)據(jù)。由于此時(shí)本地緩存的空間足夠,則本地緩存中的第六數(shù)據(jù)和第七數(shù)據(jù)將不被寫(xiě)入數(shù)據(jù)庫(kù),如果本地緩存中的數(shù)據(jù)量一直未達(dá)到閾值(即本地緩存未滿),則第六數(shù)據(jù)和第七數(shù)據(jù)將一直不被寫(xiě)入數(shù)據(jù)庫(kù),導(dǎo)致第六數(shù)據(jù)和第七數(shù)據(jù)無(wú)法及時(shí)被存儲(chǔ)到數(shù)據(jù)庫(kù)中,實(shí)時(shí)性較差。
[0028]而本實(shí)施例通過(guò)設(shè)置同步周期,當(dāng)同步周期到達(dá)時(shí),無(wú)論本地緩存中的數(shù)據(jù)量是否達(dá)到閾值,強(qiáng)制按照第二數(shù)據(jù)存儲(chǔ)邏輯將本地緩存中的數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中,有利于保證數(shù)據(jù)被存儲(chǔ)到數(shù)據(jù)庫(kù)中的實(shí)時(shí)性。例如,當(dāng)同步周期到達(dá)時(shí),數(shù)據(jù)存儲(chǔ)設(shè)備就可以將本地緩存中的第六數(shù)據(jù)和第七數(shù)據(jù)存儲(chǔ)到數(shù)