一種實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫Hash分區(qū)高效擴(kuò)展的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及關(guān)系數(shù)據(jù)庫分區(qū)存儲技術(shù)領(lǐng)域,尤其是一種實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫Hash分區(qū)高效擴(kuò)展的方法。
【背景技術(shù)】
[0002]隨著關(guān)系數(shù)據(jù)庫的普及,越來越多的應(yīng)用系統(tǒng)使用關(guān)系數(shù)據(jù)庫來進(jìn)行數(shù)據(jù)的存儲,但隨著時(shí)間的推移,關(guān)系數(shù)據(jù)庫對于大數(shù)據(jù)表的反應(yīng)會越來越遲緩,從而需要進(jìn)行數(shù)據(jù)庫表的優(yōu)化、設(shè)計(jì)存儲架構(gòu)等;
[0003]傳統(tǒng)的關(guān)系數(shù)據(jù)庫支持為了支持對大數(shù)據(jù)表讀寫,經(jīng)常通過對大數(shù)據(jù)表的存儲通過分區(qū),存儲在多個(gè)物理分區(qū)上,從而降低對同一個(gè)文件進(jìn)行讀取的頻率來提高數(shù)據(jù)的調(diào)取效率,分區(qū)的類型包括范圍分區(qū)、列表分區(qū)、Hash分區(qū)、復(fù)合分區(qū)等,其中的Hash分區(qū)是經(jīng)常使用的分區(qū)方法,通過對關(guān)鍵因子的Hash計(jì)算,從而把數(shù)據(jù)均衡地分布于多個(gè)物理分區(qū)上;
[0004]但是現(xiàn)在的數(shù)據(jù)庫Hash分區(qū)方法,在分區(qū)的數(shù)量上都建議是按2的N次方進(jìn)行分,在進(jìn)行Hash擴(kuò)展時(shí),還需按原有的分區(qū)數(shù)量的1倍進(jìn)行操作,同時(shí)增加分區(qū)時(shí),還需對新的分區(qū)的關(guān)鍵因子的Hash值進(jìn)行重新計(jì)算,導(dǎo)致應(yīng)用系統(tǒng)需要擴(kuò)展新分區(qū)時(shí),需一次性擴(kuò)展比較多的物理空間,同時(shí)還會因?yàn)镠ash值的重新計(jì)算,導(dǎo)致耗費(fèi)大量的時(shí)間。
【發(fā)明內(nèi)容】
[0005]本發(fā)明解決的技術(shù)問題在已提供一種實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫Hash分區(qū)高效擴(kuò)展的方法;使數(shù)據(jù)庫物理空間的增加與刪除可以根據(jù)應(yīng)用系統(tǒng)的需要而自主定義增加或刪除物理空間的數(shù)量,同時(shí)還提高了增加物理分區(qū)時(shí)的效率,從而大大提高數(shù)據(jù)庫的分區(qū)管理。
[0006]本發(fā)明解決上述技術(shù)問題的技術(shù)方案是:
[0007]設(shè)定一個(gè)足夠大的環(huán)形Hash空間,把Hash空間劃分為固定大小的多個(gè)子空間;倉1|建一定數(shù)量的系統(tǒng)物理分區(qū),并與各子空間進(jìn)行映射;在增加數(shù)據(jù)時(shí)對關(guān)鍵因子由CRC32算法進(jìn)行哈希計(jì)算,從而選擇相應(yīng)的邏輯空間并映射存儲到具體的物理空間上;當(dāng)增加系統(tǒng)物理分區(qū)時(shí),修改系統(tǒng)的物理分區(qū)與各子空間的映射關(guān)系,并把存儲在上個(gè)拆分子空間上、按照新的映射關(guān)系需轉(zhuǎn)移到新物理分區(qū)上的數(shù)據(jù),轉(zhuǎn)移到新增的物理空間上;當(dāng)刪除系統(tǒng)物理分區(qū)時(shí),把要刪除的物理分區(qū)的數(shù)據(jù)合并到鄰近的物理分區(qū)上,并在邏輯分區(qū)上也進(jìn)行合并,從而實(shí)現(xiàn)物理分區(qū)的高效快速擴(kuò)展。
[0008]由程序系統(tǒng)中間件設(shè)定環(huán)形Hash空間,此空間滿足特大數(shù)據(jù)量的存儲;并把此存儲空間按每500萬的大小,劃分為N多個(gè)邏輯子空間,用于邏輯空間的映射。
[0009]應(yīng)用系統(tǒng)根據(jù)數(shù)據(jù)量的需要,創(chuàng)建N個(gè)物理分區(qū),N個(gè)物理分區(qū)按已經(jīng)分配好的邏輯子空間把足夠大的環(huán)形Hash空間平均為N個(gè)邏輯分區(qū),邏輯分區(qū)由多個(gè)邏輯子分區(qū)組成,邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)組成映射關(guān)系。
[0010]當(dāng)增加數(shù)據(jù)時(shí),中間件對數(shù)據(jù)的關(guān)鍵因子進(jìn)行CRC32哈希計(jì)算,得出哈希值并找到對應(yīng)的邏輯空間上,從而把數(shù)據(jù)存儲映射到特定的物理空間上。
[0011]當(dāng)增加物理分區(qū)時(shí),中間件對原有的邏輯分區(qū)進(jìn)行判斷,獲取邏輯子分區(qū)中最大的邏輯分區(qū),對其進(jìn)行對半拆分,同時(shí)對其映射的物理分區(qū),通過相應(yīng)的數(shù)據(jù)庫語句,把存儲的數(shù)據(jù)按拆分的哈希值的范圍,轉(zhuǎn)移到新的物理分區(qū)上;
[0012]在增加了物理分區(qū),并對物理分區(qū)中的數(shù)據(jù)進(jìn)行拆分、對邏輯分區(qū)中的邏輯子分區(qū)進(jìn)行拆分后,保存相應(yīng)的邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)的映射關(guān)系,從而為后續(xù)的數(shù)據(jù)讀寫提供保證。
[0013]當(dāng)刪除物理分區(qū)時(shí),中間件對原有的邏輯分區(qū)進(jìn)行分析判斷,選擇要刪除的物理分區(qū)對應(yīng)的邏輯分區(qū)相鄰的邏輯分區(qū),并通過把要刪除的物理分區(qū)的數(shù)據(jù)合并到相鄰的物理分區(qū)上,再把物理分區(qū)進(jìn)行刪除;
[0014]刪除物理分區(qū)后,把要刪除的物理分區(qū)映射的邏輯分區(qū)合并到對應(yīng)的邏輯分區(qū)上,保存相應(yīng)的邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)的映射關(guān)系,從而為后續(xù)的數(shù)據(jù)讀寫提供保證。
[0015]本發(fā)明方法是參考一致性Hash算法,通過設(shè)定足夠大的Hash空間,再把Hash空間進(jìn)行均等的分列,通過邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)的一一對應(yīng)關(guān)系,從而保證在增加或刪除物理分區(qū)時(shí),只需修改邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)的映射關(guān)系,并拆分或合并物理分區(qū)上的數(shù)據(jù),就能大致物理分區(qū)的增加或刪除,也無需對Hash值進(jìn)行重新計(jì)算,從而大大減少一次性操作物理分區(qū)的數(shù)量、時(shí)間,為數(shù)據(jù)庫的分區(qū)管理一個(gè)方便高效的擴(kuò)展方法。本發(fā)明可廣泛應(yīng)用于大數(shù)據(jù)量的關(guān)系數(shù)據(jù)庫表一開始無法預(yù)估具體的數(shù)量、后續(xù)需不斷增加物理分區(qū)的應(yīng)用系統(tǒng)上,從而可節(jié)省擴(kuò)展分區(qū)時(shí)時(shí)間與空間。
【附圖說明】
[0016]下面結(jié)合附圖對本發(fā)明進(jìn)一步說明:
[0017]附圖1是本發(fā)明系統(tǒng)邏輯圖;
[0018]附圖2是本發(fā)明的增加物理分區(qū)流程圖;
【具體實(shí)施方式】
[0019]如圖1、2所示,本發(fā)明是設(shè)定一個(gè)足夠大的環(huán)形Hash空間,把Hash空間劃分為固定大小的多個(gè)子空間;創(chuàng)建一定數(shù)量的系統(tǒng)物理分區(qū),并與各子空間進(jìn)行映射;在增加數(shù)據(jù)時(shí)對關(guān)鍵因子由CRC32算法進(jìn)行哈希計(jì)算,從而選擇相應(yīng)的邏輯空間并映射存儲到具體的物理空間上;當(dāng)增加系統(tǒng)物理分區(qū)時(shí),修改系統(tǒng)的物理分區(qū)與各子空間的映射關(guān)系,并把存儲在上個(gè)拆分子空間上、按照新的映射關(guān)系需轉(zhuǎn)移到新物理分區(qū)上的數(shù)據(jù),轉(zhuǎn)移到新增的物理空間上;當(dāng)刪除系統(tǒng)物理分區(qū)時(shí),把要刪除的物理分區(qū)的數(shù)據(jù)合并到鄰近的物理分區(qū)上,并在邏輯分區(qū)上也進(jìn)行合并,從而實(shí)現(xiàn)物理分區(qū)的高效快速擴(kuò)展。
[0020]具體而言,由程序系統(tǒng)中間件設(shè)定環(huán)形Hash空間,此空間滿足特大數(shù)據(jù)量的存儲;并把此存儲空間按每500萬的大小,劃分為N多個(gè)邏輯子空間,用于邏輯空間的映射。應(yīng)用系統(tǒng)根據(jù)數(shù)據(jù)量的需要,創(chuàng)建N個(gè)物理分區(qū),N個(gè)物理分區(qū)按已經(jīng)分配好的邏輯子空間把足夠大的環(huán)形Hash空間平均為N個(gè)邏輯分區(qū),邏輯分區(qū)由多個(gè)邏輯子分區(qū)組成,邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)組成映射關(guān)系。
[0021]當(dāng)增加數(shù)據(jù)時(shí),中間件對數(shù)據(jù)的關(guān)鍵因子進(jìn)行CRC32哈希計(jì)算,得出哈希值并找到對應(yīng)的邏輯空間上,從而把數(shù)據(jù)存儲映射到特定的物理空間上。
[0022]當(dāng)增加物理分區(qū)時(shí),中間件對原有的邏輯分區(qū)進(jìn)行判斷,獲取邏輯子分區(qū)中最大的邏輯分區(qū),對其進(jìn)行對半拆分,同時(shí)對其映射的物理分區(qū),通過相應(yīng)的數(shù)據(jù)庫語句,把存儲的數(shù)據(jù)按拆分的哈希值的范圍,轉(zhuǎn)移到新的物理分區(qū)上;
[0023]在增加了物理分區(qū),并對物理分區(qū)中的數(shù)據(jù)進(jìn)行拆分、對邏輯分區(qū)中的邏輯子分區(qū)進(jìn)行拆分后,保存相應(yīng)的邏輯分區(qū)、邏輯子分區(qū)、物理分區(qū)的映射關(guān)系,從而為后續(xù)的數(shù)據(jù)讀寫提供保證。
[0024]當(dāng)刪除物理分區(qū)時(shí),中間件對原有的邏輯分區(qū)進(jìn)行分析判斷,選擇要刪除的物理分區(qū)對應(yīng)的邏輯分區(qū)相鄰的邏輯分區(qū),并通過把要刪除的物理分區(qū)的數(shù)據(jù)合并到相鄰的物理分區(qū)上,再把物理分區(qū)進(jìn)行刪除;
[0025]刪除物理分區(qū)后,把要刪除的物理分區(qū)映射的邏輯分區(qū)合并到對應(yīng)的邏輯分區(qū)上,保存相應(yīng)的邏輯分區(qū)、