一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法
【專(zhuān)利摘要】本發(fā)明公開(kāi)了一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,包括以下步驟:步驟S01,對(duì)用戶(hù)名分配一個(gè)ID值,通過(guò)Hash函數(shù)返回相應(yīng)字符串,獲得一個(gè)Key值;步驟S02,用戶(hù)數(shù)據(jù)通過(guò)所述Key值,創(chuàng)建目標(biāo)表名稱(chēng);步驟S03,數(shù)據(jù)庫(kù)存儲(chǔ)表中生成以所述目標(biāo)表名稱(chēng)命名的用戶(hù)表;步驟S04,輸入用戶(hù)名,通過(guò)Hash函數(shù)計(jì)算出數(shù)據(jù)存儲(chǔ)表的表名,然后訪問(wèn)相應(yīng)的表。與現(xiàn)有技術(shù)相比,本發(fā)明設(shè)計(jì)簡(jiǎn)單,提高數(shù)據(jù)表操作效率,增加可用度。
【專(zhuān)利說(shuō)明】一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)數(shù)據(jù)庫(kù)分表技術(shù),具體涉及一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法。
【背景技術(shù)】
[0002]網(wǎng)站用戶(hù)越來(lái)越大。對(duì)用戶(hù)的相關(guān)的數(shù)據(jù)存貯,和用戶(hù)數(shù)據(jù)讀取的優(yōu)化至關(guān)重要。這關(guān)系到網(wǎng)站對(duì)用戶(hù)體驗(yàn)度的高低,并且一個(gè)網(wǎng)站最重要的就是服務(wù)于用戶(hù)。如果用戶(hù)感覺(jué)注冊(cè)登錄等相關(guān)操作慢體驗(yàn)不好,會(huì)嚴(yán)重影響網(wǎng)站的使用。當(dāng)用戶(hù)數(shù)據(jù)達(dá)到幾百萬(wàn),上千萬(wàn)的時(shí)候mysql單表查詢(xún)一次的時(shí)間會(huì)倍增。如果有復(fù)雜查詢(xún)的話,可能會(huì)卡死在那。
[0003]Mysql集群的拓展性高,不用改變sql語(yǔ)句,容易實(shí)施,但單表的數(shù)據(jù)量大,單條語(yǔ)句執(zhí)行耗時(shí)長(zhǎng),服務(wù)器成本太高。
【發(fā)明內(nèi)容】
[0004]本發(fā)明克服了現(xiàn)有技術(shù)的不足,提供一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法。
[0005]為解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案為:
一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,包括以下步驟:
步驟SOI,對(duì)用戶(hù)名分配一個(gè)ID值,通過(guò)Hash函數(shù)返回相應(yīng)字符串,獲得一個(gè)Key值; 步驟S02,用戶(hù)數(shù)據(jù)通過(guò)所述Key值,創(chuàng)建目標(biāo)表名稱(chēng);
步驟S03,數(shù)據(jù)庫(kù)存儲(chǔ)表中生成以所述目標(biāo)表名稱(chēng)命名的用戶(hù)表;
步驟S04,輸入用戶(hù)名,通過(guò)Hash函數(shù)計(jì)算出數(shù)據(jù)存儲(chǔ)表的表名,然后訪問(wèn)相應(yīng)的表。
[0006]通過(guò)Hash函數(shù)返回的字符串為二進(jìn)制或者十六進(jìn)制。
[0007]較優(yōu)地,字符串為4位字符串。
[0008]與現(xiàn)有技術(shù)相比,本發(fā)明的有益效果有:多臺(tái)服務(wù)器內(nèi)建用戶(hù)算法,將用戶(hù)名按照一定的唯一算法將用戶(hù)存貯到不同的表中,提高單表的性能,將一些常用字段匯總方便用戶(hù)操作,提高操作效率,增加可用度。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0009]圖1為本發(fā)明的方法流程圖。
【具體實(shí)施方式】
[0010]下面結(jié)合附圖對(duì)本發(fā)明作更進(jìn)一步的說(shuō)明。
[0011]一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,包括以下步驟:
步驟SOI,對(duì)用戶(hù)名分配一個(gè)ID值,通過(guò)Hash函數(shù)返回相應(yīng)字符串,獲得一個(gè)Key值; 步驟S02,用戶(hù)數(shù)據(jù)通過(guò)所述Key值,創(chuàng)建目標(biāo)表名稱(chēng);
步驟S03,數(shù)據(jù)庫(kù)存儲(chǔ)表中生成以所述目標(biāo)表名稱(chēng)命名的用戶(hù)表;步驟S04,輸入用戶(hù)名,通過(guò)Hash函數(shù)計(jì)算出數(shù)據(jù)存儲(chǔ)表的表名,然后訪問(wèn)相應(yīng)的表。
[0012]通過(guò)Hash函數(shù)返回的字符串為二進(jìn)制或者十六進(jìn)制。
[0013]較優(yōu)地,字符串為4位字符串。
[0014]以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出:對(duì)于本【技術(shù)領(lǐng)域】的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。
【權(quán)利要求】
1.一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,其特征在于:包括以下步驟: 步驟SOI,對(duì)用戶(hù)名分配一個(gè)ID值,通過(guò)Hash函數(shù)返回相應(yīng)字符串,獲得一個(gè)Key值; 步驟S02,用戶(hù)數(shù)據(jù)通過(guò)所述Key值,創(chuàng)建目標(biāo)表名稱(chēng); 步驟S03,數(shù)據(jù)庫(kù)存儲(chǔ)表中生成以所述目標(biāo)表名稱(chēng)命名的用戶(hù)表; 步驟S04,輸入用戶(hù)名,通過(guò)Hash函數(shù)計(jì)算出數(shù)據(jù)存儲(chǔ)表的表名,然后訪問(wèn)相應(yīng)的表。
2.根據(jù)權(quán)利要求1所述的一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,其特征在于:所述通過(guò)Hash函數(shù)返回的字符串為二進(jìn)制。
3.根據(jù)權(quán)利要求1所述的一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,其特征在于:所述通過(guò)Hash函數(shù)返回的字符串為十六進(jìn)制。
4.根據(jù)權(quán)利要求1所述的一種基于Hash算法支持千萬(wàn)用戶(hù)數(shù)據(jù)分表方法,其特征在于:所述字符串為4位字符串。
【文檔編號(hào)】G06F17/30GK103631959SQ201310689118
【公開(kāi)日】2014年3月12日 申請(qǐng)日期:2013年12月17日 優(yōu)先權(quán)日:2013年12月17日
【發(fā)明者】秦謙 申請(qǐng)人:江蘇名通信息科技有限公司