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

分布式數(shù)據(jù)庫中子表分裂的方法、子表節(jié)點(diǎn)和系統(tǒng)的制作方法

文檔序號(hào):9597952閱讀:707來源:國知局
分布式數(shù)據(jù)庫中子表分裂的方法、子表節(jié)點(diǎn)和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,尤其涉及一種分布式數(shù)據(jù)庫中子表分裂方法、子表節(jié)點(diǎn) 和系統(tǒng)。
【背景技術(shù)】
[0002] 在大多數(shù)分布式數(shù)據(jù)庫中,通常采用KeyValue類型的存儲(chǔ)方式,即將用戶需要存 儲(chǔ)的數(shù)據(jù)存放在Value部分,構(gòu)建與Value對(duì)應(yīng)的Key,當(dāng)用戶需要查找Value時(shí),通過Key 索引查找對(duì)應(yīng)的Value。在數(shù)據(jù)存儲(chǔ)時(shí),是按照Key的字典順序自然排序的。
[0003] 數(shù)據(jù)存儲(chǔ)在用戶創(chuàng)建的相應(yīng)用戶表(Table)。一個(gè)Table中可以存儲(chǔ)大量的數(shù)據(jù), 為了方便分布式管理和維護(hù),可以按照記錄的Key值的字典順序切割生成一個(gè)或多個(gè)子表 (Region),每個(gè)Region是一個(gè)Key區(qū)間數(shù)據(jù)的集合,也可以說是連續(xù)行數(shù)據(jù)的集合。每個(gè) KeyValue所對(duì)應(yīng)的Key只包括在一個(gè)Region區(qū)間。例如圖1所示,圖1為一個(gè)用戶表中 子表的示意圖,其中,圖1中Region-Ι中的Key-A代表著在字典順序上一個(gè)無窮小的值, Region-M中的Key-Y代表著在字典順序上一個(gè)無窮大的值。
[0004] 目前,子表的分裂分為兩種形式:第一,在建表初期,預(yù)設(shè)定分裂點(diǎn)(Split Points),子表會(huì)按照預(yù)設(shè)定的分裂點(diǎn)生成新的子表。例如:建表時(shí)建立Region[Key-A, Key-Y),預(yù)設(shè)定的分裂點(diǎn)為{B, C,......X}, Region[Key_A,Key-Υ)會(huì)按照預(yù)設(shè)定的分裂點(diǎn) 自動(dòng)生成多個(gè)子表:Region-1 [Key-A,Key-B),Region2[Key_B,Key-C),Region3[Key_C, Key-D),......RegionM[Key-X,Key_Y),如圖2所示。第二,當(dāng)子表中存儲(chǔ)的數(shù)據(jù)達(dá)到一定內(nèi) 存時(shí),會(huì)自動(dòng)分為兩個(gè)子表,或者通過用戶手動(dòng)觸發(fā)子表分裂。例如:如圖3所示,圖3為 一個(gè)子表分裂為兩個(gè)子表的不意圖,分別將Region [,C),Region [C, E),Region [E, G),......, Region [X,)分裂為兩個(gè)子表,依次分裂為 Region [,B)、Region [B, C),Region [C, D)、 Region [D, E),Region [E, F)、Region [F, G),......,Region [X,Y)、Region [Y, Z)。當(dāng)一個(gè)用戶 表中包括多個(gè)子表時(shí),也可以按照第二種分裂方式將子表進(jìn)行分裂,以提高讀寫數(shù)據(jù)的性 能。
[0005] 但是,如果在建表初期預(yù)設(shè)定的分裂點(diǎn)不合理,例如在建表時(shí)確定的分裂點(diǎn)為 {a, b, c, d, e, f},基于這些分裂點(diǎn)的子表為(_ °°,a),[a, b),[b, c),[c, d),[d, e),[e, f), [f,+ 0 )。運(yùn)行一段時(shí)間之后,發(fā)現(xiàn)原來的分裂點(diǎn)是不合理的,更加合理的分裂點(diǎn)應(yīng)該為 {g,h,i,j,k,1,m},而原來的子表中又已經(jīng)存在用戶數(shù)據(jù)了,此時(shí)對(duì)子表進(jìn)行分裂,讀取一 個(gè)文件中的數(shù)據(jù),然后存放到兩個(gè)或多個(gè)文件中,子表分裂速度慢,且讀寫數(shù)據(jù)的性能較 差,如果將子表分裂的越多,讀寫數(shù)據(jù)的性能會(huì)越差,且分裂后的子表也依然會(huì)造成數(shù)據(jù)分 布不均勻的問題。

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

[0006] 本發(fā)明實(shí)施例提供一種分布式數(shù)據(jù)庫中子表分裂的方法、子表節(jié)點(diǎn)和系統(tǒng),通過 在用戶表中預(yù)留一個(gè)子表,該子表在當(dāng)前數(shù)據(jù)存儲(chǔ)時(shí)保持為空子表。當(dāng)需要將數(shù)據(jù)存儲(chǔ)到 該子表中時(shí),將該子表進(jìn)行分裂,以實(shí)現(xiàn)用戶表中子表的快速多點(diǎn)分裂,提升用戶表的讀寫 性能。
[0007] -方面,本申請(qǐng)的實(shí)施例提供一種分布式數(shù)據(jù)庫中子表分裂的方法,當(dāng)數(shù)據(jù)按照 鍵-值類型存儲(chǔ)的方式進(jìn)行存儲(chǔ)時(shí),根據(jù)預(yù)設(shè)條件,例如業(yè)務(wù)類型,預(yù)估計(jì)當(dāng)前業(yè)務(wù)類型存 儲(chǔ)數(shù)據(jù)的Key值范圍,設(shè)置空子表,該空子表為存儲(chǔ)新的鍵-值類型的數(shù)據(jù)預(yù)留的空表,即 當(dāng)前存儲(chǔ)的數(shù)據(jù)不會(huì)存儲(chǔ)在該空表中。該方法包括:當(dāng)以鍵-值類型存儲(chǔ)的數(shù)據(jù)需要存儲(chǔ) 到空子表中時(shí),接收子表分裂命令,該子表分裂命令可以為用戶調(diào)用的一個(gè)接口或者一個(gè) 命令,該子表分裂命令中包括空子表分裂的分裂點(diǎn)信息。根據(jù)子表分裂命令將狀態(tài)表中 記錄的空子表的狀態(tài)標(biāo)識(shí)為不再提供讀寫服務(wù),也可以理解為不支持提供讀寫服務(wù)。根據(jù) 空子表分裂點(diǎn)的信息,將空子表分裂為兩個(gè)或者兩個(gè)以上的新子表,并將狀態(tài)表中記錄的 新生成的子表的狀態(tài)標(biāo)識(shí)為可提供讀寫服務(wù),可理解為支持提供讀寫服務(wù)。并指示將新生 成的子表存儲(chǔ)的子表節(jié)點(diǎn)(或存儲(chǔ)節(jié)點(diǎn))的位置信息記錄在元數(shù)據(jù)表中,以便于用戶根據(jù) 元數(shù)據(jù)表中記錄的新生成子表所在的子表節(jié)點(diǎn)的位置信息,獲取存儲(chǔ)在新生成子表中的數(shù) 據(jù)。
[0008] 基于上述方案,通過在用戶表中預(yù)留一個(gè)子表,該子表在當(dāng)前數(shù)據(jù)存儲(chǔ)時(shí)保持為 空子表。當(dāng)需要將數(shù)據(jù)存儲(chǔ)到該子表中時(shí),將該子表進(jìn)行分裂,分裂完成之后再存入數(shù)據(jù), 實(shí)現(xiàn)了用戶表中子表的快速多點(diǎn)分裂,提升了用戶表的讀寫性能。
[0009] 在一個(gè)可能的設(shè)計(jì)中,當(dāng)接收到子表分裂命令時(shí),向共享狀態(tài)機(jī)發(fā)送一個(gè)可以表 征空子表開始分裂的信息。當(dāng)共享狀態(tài)機(jī)接收到該信息時(shí),將記錄的空子表的狀態(tài)標(biāo)識(shí)為 空子表開始分裂,以明確該子表的服務(wù)狀態(tài),避免向該空子表中寫入數(shù)據(jù),造成數(shù)據(jù)丟失。
[0010] 在另一個(gè)可能的設(shè)計(jì)中,當(dāng)子表分裂完成之后,向共享狀態(tài)機(jī)發(fā)送可以表征空子 表完成分裂的信息。當(dāng)共享狀態(tài)機(jī)接收到該信息時(shí),將記錄的空子表的狀態(tài)標(biāo)識(shí)為空子表 分裂完成,以明確該空子表的狀態(tài),以禁止向該空子表中寫入數(shù)據(jù),造成數(shù)據(jù)丟失。
[0011] 在又一個(gè)可能的設(shè)計(jì)中,當(dāng)空子表分裂為至少兩個(gè)新子表時(shí),指示更新元數(shù)據(jù)表 中空子表的狀態(tài)為不支持提供可讀寫服務(wù),便于通過查詢?cè)獢?shù)據(jù)表獲取該空子表的服務(wù)狀 態(tài),以用于在后續(xù)存儲(chǔ)空間清理中,刪除該空子表的信息。
[0012] 另一方面,本申請(qǐng)的實(shí)施例提供一種子表節(jié)點(diǎn),當(dāng)數(shù)據(jù)按照鍵-值類型的存儲(chǔ)方 式進(jìn)行數(shù)據(jù)存儲(chǔ)時(shí),根據(jù)預(yù)設(shè)條件,例如存儲(chǔ)數(shù)據(jù)的業(yè)務(wù)類型,預(yù)估計(jì)存儲(chǔ)數(shù)據(jù)的Key值的 范圍,設(shè)置空子表,即當(dāng)前存儲(chǔ)的數(shù)據(jù)不會(huì)存儲(chǔ)在該空子表中。該子表節(jié)點(diǎn)包括接收單元、 更新單元、分裂單元和記錄單元。當(dāng)新的鍵-值類型的數(shù)據(jù)需要存儲(chǔ)在空子表中時(shí),接收單 元接收子表分裂命令,該子表分裂命令可以為用戶調(diào)用的一個(gè)接口或者一個(gè)命令,該命令 包括空子表分裂點(diǎn)信息。更新單元根據(jù)子表分裂命令將狀態(tài)表中的空子表的狀態(tài)標(biāo)識(shí)為不 再提供讀寫服務(wù),即不支持提供讀寫服務(wù)。分裂單元根據(jù)分裂點(diǎn)信息,將空子表分裂成兩個(gè) 或者兩個(gè)以上的新子表,并將新子表的狀態(tài)標(biāo)識(shí)為可提供讀寫服務(wù),可理解為支持提供讀 寫服務(wù)。指示記錄單元將新子表所在的子表節(jié)點(diǎn)(或存儲(chǔ)節(jié)點(diǎn))的位置信息記錄在元數(shù)據(jù) 表中,以便于通過查詢?cè)獢?shù)據(jù)表中記錄的新子表的位置信息,獲取存儲(chǔ)在新子表中的數(shù)據(jù)。
[0013] 基于上述方案,通過在用戶表中預(yù)留一個(gè)子表,該子表在當(dāng)前數(shù)據(jù)存儲(chǔ)時(shí)保持為 空子表。當(dāng)需要將數(shù)據(jù)存儲(chǔ)到該子表中時(shí),將該子表進(jìn)行分裂,分裂完成之后再存入數(shù)據(jù), 實(shí)現(xiàn)了用戶表中子表的快速多點(diǎn)分裂,提升了用戶表的讀寫性能。
[0014] 在一個(gè)可能的設(shè)計(jì)中,該表節(jié)點(diǎn)還包括發(fā)送單元,用于向共享狀態(tài)機(jī)發(fā)送表征空 子表開始分裂的信息。當(dāng)共享狀態(tài)機(jī)接收到該信息時(shí),將空子表的狀態(tài)標(biāo)識(shí)為開始分裂,以 避免向該空子表中寫入數(shù)據(jù),造成數(shù)據(jù)丟失。
[0015] 在另一個(gè)可能的設(shè)計(jì)中,當(dāng)子表分裂完成之后,發(fā)送單元向共享狀態(tài)機(jī)發(fā)送可以 表征空子表完成分裂的信息。當(dāng)共享狀態(tài)機(jī)接收到該信息時(shí),將記錄的空子表的狀態(tài)標(biāo) 識(shí)為空子表分裂完成,以明確該空子表的狀態(tài),以禁止向該空子表中寫入數(shù)據(jù),造成數(shù)據(jù)丟 失。
[0016] 在又一個(gè)可能的設(shè)計(jì)中,指示更新單元將元數(shù)據(jù)表中的空子表的狀態(tài)標(biāo)識(shí)為不支 持提供讀寫服務(wù),便于通過查詢?cè)獢?shù)據(jù)表獲取該空子表的服務(wù)狀態(tài),以用于在后續(xù)存儲(chǔ)空 間清理中,刪除該空子表的信息。
[0017] 再一方面,本申請(qǐng)實(shí)施例提供一種系統(tǒng),該系統(tǒng)包括多個(gè)管理節(jié)點(diǎn)和共享狀態(tài)機(jī), 多個(gè)管理節(jié)點(diǎn)可以管理一個(gè)或者多個(gè)另一方面中的子表節(jié)點(diǎn),以用于數(shù)據(jù)按照鍵-值類型 的存儲(chǔ)方式存儲(chǔ)時(shí),根據(jù)預(yù)設(shè)條件,設(shè)置第一子表,所述第一子表是指為存儲(chǔ)新的鍵-值 類型的數(shù)據(jù)而預(yù)留的空表;當(dāng)所述新的鍵-值類型的數(shù)據(jù)需要存儲(chǔ)到所述第一子表時(shí),通 過所述至少一個(gè)子表節(jié)點(diǎn)、所述多個(gè)管理節(jié)點(diǎn)和所述共享狀態(tài)機(jī)完成對(duì)所述第一子表的分 裂。
[0018] 本申請(qǐng)?zhí)峁┑姆植际綌?shù)據(jù)庫中子表分裂的方法、子表節(jié)點(diǎn)和系統(tǒng),通過在用戶表 中預(yù)留一個(gè)子表,該子表在當(dāng)前數(shù)據(jù)存儲(chǔ)時(shí)保持為空子表。
當(dāng)前第1頁1 2 3 4 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
都匀市| 麻阳| 台湾省| 灯塔市| 类乌齐县| 高平市| 梁河县| 清苑县| 资溪县| 天台县| 梨树县| 望谟县| 贺兰县| 双城市| 永顺县| 象州县| 荃湾区| 蚌埠市| 阳高县| 东港市| 新源县| 琼结县| 师宗县| 万州区| 双流县| 清原| 水富县| 金阳县| 夏津县| 锡林郭勒盟| 宁陕县| 福清市| 措勤县| 沙河市| 浪卡子县| 浦城县| 信丰县| 中超| 渝中区| 莫力| 瑞金市|