亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和裝置制造方法

文檔序號(hào):6505173閱讀:186來(lái)源:國(guó)知局
一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和裝置制造方法
【專利摘要】本發(fā)明公開(kāi)了一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和裝置。該方法中設(shè)置存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)包含M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表,將用戶ID分為M組,與所述M組時(shí)間軸索引表一一對(duì)應(yīng),在保存用戶發(fā)布的動(dòng)態(tài)消息的索引時(shí),使同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi),這樣至少部分用戶的時(shí)間軸索引表的跳表時(shí)間點(diǎn)是錯(cuò)開(kāi)的,在不同的時(shí)間點(diǎn)跳表,因此緩解了在特定時(shí)間點(diǎn)由于跳表操作量大,導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)量成倍增大,進(jìn)而可能會(huì)令數(shù)據(jù)庫(kù)崩潰的問(wèn)題。對(duì)于分發(fā)索引表進(jìn)行同樣的處理,也能帶來(lái)相同的有益效果。
【專利說(shuō)明】一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和裝置

【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,特別涉及一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和裝置。

【背景技術(shù)】
[0002]社會(huì)性網(wǎng)絡(luò)服務(wù)(SNS, Social Networking Services)專指旨在幫助人們建立社會(huì)性網(wǎng)絡(luò)的互聯(lián)網(wǎng)應(yīng)用服務(wù)。如當(dāng)下流行的多種社交網(wǎng)站,以及其他門戶網(wǎng)站提供的人與人之間的關(guān)系網(wǎng)絡(luò)服務(wù),如微博、即時(shí)通信系統(tǒng)提供的聯(lián)系人關(guān)系服務(wù)等。
[0003]為了提供這種人際關(guān)系服務(wù),需要在后臺(tái)保存SNS用戶所發(fā)布的動(dòng)態(tài)消息(一般稱為feed),以供用戶自己或其聯(lián)系人相互查詢動(dòng)態(tài)消息。
[0004]由于SNS得到了廣大用戶的喜愛(ài),其后臺(tái)數(shù)據(jù)也呈數(shù)量級(jí)暴增,容易出現(xiàn)數(shù)據(jù)堵塞和訪問(wèn)延時(shí)等現(xiàn)象,這對(duì)SNS后臺(tái)數(shù)據(jù)的存儲(chǔ)提出了挑戰(zhàn)。
[0005]圖1是現(xiàn)有的一種SNS后臺(tái)數(shù)據(jù)的存儲(chǔ)示意圖。參見(jiàn)圖1,本站的動(dòng)態(tài)消息的實(shí)體內(nèi)容,存入本站內(nèi)容數(shù)據(jù)庫(kù),并將實(shí)體內(nèi)容緩存到實(shí)體內(nèi)容緩存中。存入實(shí)體內(nèi)容數(shù)據(jù)主要包括:動(dòng)態(tài)消息標(biāo)識(shí),動(dòng)態(tài)消息實(shí)體內(nèi)容以及發(fā)布時(shí)間、發(fā)布人、評(píng)論數(shù)、轉(zhuǎn)發(fā)數(shù)等信息。此夕卜,還需要將本站的動(dòng)態(tài)消息的索引保存到索引數(shù)據(jù)庫(kù)中,同時(shí)將索引存入索引緩存中一份。
[0006]從外站抓過(guò)來(lái)的動(dòng)態(tài)消息,會(huì)按時(shí)間存入外站內(nèi)容數(shù)據(jù)庫(kù)中的不同的表中。定期(如每個(gè)月初),會(huì)將上個(gè)月本站實(shí)體內(nèi)容數(shù)據(jù)庫(kù)中的內(nèi)容轉(zhuǎn)存到歸檔數(shù)據(jù)庫(kù)中。
[0007]參見(jiàn)圖1,某SNS網(wǎng)站的索引數(shù)據(jù)庫(kù)由4組子庫(kù)組成,分別為:索引子庫(kù)一、索引子庫(kù)二、索引子庫(kù)三和索引子庫(kù)四。每個(gè)索引子庫(kù)都由兩臺(tái)設(shè)備組成,一主一從,做主從備份。
[0008]這里,將索引按10進(jìn)制的用戶標(biāo)識(shí)(UserID)的后2位進(jìn)行分子庫(kù)存儲(chǔ),這里用戶標(biāo)識(shí)后2位的取值范圍O?24、25?49、50?74和75?99,分別對(duì)應(yīng)索引子庫(kù)一至四。每個(gè)索引子庫(kù)中均存儲(chǔ)動(dòng)態(tài)消息索引表(Newsfeed)、時(shí)間軸索引表(Timeline)和分發(fā)索引表中(DispatchBuddy)三類索引表。
[0009]其中,Timeline和DispatchBuddy,按日期再分成后綴為_(kāi)0和_1兩套表,如:DispatchBuddy_0006_0, DispatchBuddy_0006_l, TimeIine_0006_0, Timeline_0006_l,用來(lái)存放一個(gè)月內(nèi)的日期在I?8、9?16、17?24和25?31四個(gè)時(shí)間段內(nèi)的信息。即將一個(gè)月中的I?8日和17?24日所產(chǎn)生的消息的索引保存到后綴為_(kāi)0的Timeline和DispatchBuddy表中,將一個(gè)月中的9?16日25?31日所產(chǎn)生的消息的索引保存到后綴為 _1 的 Timeline 和 DispatchBuddy 表中。
[0010]舉例:用戶A的聯(lián)系人用戶B在2012年5月20日16:16發(fā)布了一條動(dòng)態(tài),則保存該動(dòng)態(tài)消息的實(shí)體內(nèi)容和索引的具體流程為:
[0011]a)向本站內(nèi)容數(shù)據(jù)庫(kù)中插入一條feed內(nèi)容記錄,同時(shí)存入實(shí)體內(nèi)容緩存中一份。
[0012]b)根據(jù)用戶B的userid的10進(jìn)制數(shù)的后兩位路由到相關(guān)的索引數(shù)據(jù)庫(kù)。如果用戶B的userid=90098743,則根據(jù)后兩位43,會(huì)路由到索引子庫(kù)二,再根據(jù)43,將索引內(nèi)容插入到NewsFeed_0043表中,并同時(shí)存入索引緩存中。
[0013]c)同時(shí),在索引子庫(kù)二,根據(jù)當(dāng)前日期,路由到相關(guān)timeline表。如今天是20號(hào),則會(huì)在Timeline_0043_0表插入一條索引記錄,同時(shí)存一份到索引緩存中。
[0014]d)同樣方法操作dispatchbuddy表,由于此表是分發(fā)給聯(lián)系人的索引表,要根據(jù)聯(lián)系人A的userid進(jìn)行路由,如果A的userid=100092357,則會(huì)路由到索引子庫(kù)三,根據(jù)user id和當(dāng)前日期20號(hào),在Di spatchBuddy_0057_0表插入一條索弓I記錄,同時(shí)在索弓I緩存中保存一份。對(duì)用戶B的其他聯(lián)系人依此方法執(zhí)行相應(yīng)的操作。這樣當(dāng)用戶B的聯(lián)系人,如用戶A登錄后,可直接在dispatchbuddy表中查找到聯(lián)系人的發(fā)布。
[0015]但是,該方案存在如下缺陷:對(duì)于Timeline表和DispatchBuddy表,在一個(gè)月中的
1、9、17和25這四個(gè)日期,會(huì)有很大的幾率取不夠前臺(tái)要求的數(shù)量,這樣,就要查詢前一個(gè)時(shí)間段的表中的記錄,例如在9日取后綴為_(kāi)1的Timeline和DispatchBuddy表中的數(shù)據(jù),如果數(shù)量不夠需要取8日的后綴為_(kāi)0的Timeline和DispatchBuddy表中的數(shù)據(jù),這相當(dāng)于,前臺(tái)取一次記錄,會(huì)進(jìn)行兩次查表操作,即需要兩次數(shù)據(jù)庫(kù)訪問(wèn)操作。因此在1、9、17和25這四個(gè)日期,由于跳表操作量非常大,會(huì)導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)量成倍增大,數(shù)據(jù)庫(kù)壓力劇增,極端情況下,可能會(huì)令數(shù)據(jù)庫(kù)崩潰。


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

[0016]有鑒于此,本發(fā)明提供了一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和裝置,以解決現(xiàn)有技術(shù)中的索引數(shù)據(jù)庫(kù)由于同一日期內(nèi)跳表操作量大,導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)量成倍增大的問(wèn)題。
[0017]為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的:
[0018]本發(fā)明公開(kāi)了一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法,該方法適用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù),其特征在于,該方法包括:
[0019]設(shè)置所述索引數(shù)據(jù)庫(kù)包含M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表,將用戶
ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng),每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中;
[0020]和/ 或,
[0021]設(shè)置所述索引數(shù)據(jù)庫(kù)包含M組分發(fā)索引表,每組包含N個(gè)分發(fā)索引表,將用戶ID分為M組,與所述M組分發(fā)索引表對(duì)應(yīng),每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中;
[0022]其中,
[0023]所述第一預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi);
[0024]其中,所述第二預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)分發(fā)索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi);
[0025]所述M和N均為大于I的自然數(shù)。
[0026]可選地,所述將用戶ID分為M組包括:
[0027]根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù);
[0028]其中,M為所述X位所能取的不同值的個(gè)數(shù)。
[0029]可選地,該方法進(jìn)一步包括:
[0030]每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID從所述索引數(shù)據(jù)庫(kù)查找到對(duì)應(yīng)的一個(gè)動(dòng)態(tài)消息索引表,將該動(dòng)態(tài)消息的索引保存到查找到的該動(dòng)態(tài)消息索引表中。
[0031]可選地,所述根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表具體包括:每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù);計(jì)算該用戶的ID的指定X位值與所述時(shí)間差的和值;用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;
[0032]所述根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表具體包括:每組中的N個(gè)分發(fā)索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù);計(jì)算該聯(lián)系人的ID的指定X位值與所述時(shí)間差的和值;用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表。
[0033]可選地,所述根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表具體包括:每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與該用戶的ID的指定X位值的和值,該和值為自然數(shù);用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;
[0034]所述根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表具體包括:每組中的N個(gè)分發(fā)索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與該聯(lián)系人的ID的指定X位值的和值,該和值為自然數(shù);用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表。
[0035]本發(fā)明還公開(kāi)了一種存儲(chǔ)動(dòng)態(tài)消息的索引的裝置,該裝置包括:索引保存單元和用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù);
[0036]所述索引數(shù)據(jù)庫(kù),用于保存M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表;以及,
所述索引保存單元,用于將用戶ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng);所述索引保存單元還用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中;
[0037]和/ 或,
[0038]所述索引數(shù)據(jù)庫(kù),用于保存M組分發(fā)索引表,每組包含N個(gè)分發(fā)索引表;以及,所述索引保存單元,用于將用戶ID分為M組,與所述M組分發(fā)索引表一一對(duì)應(yīng);所述索引保存單元還用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中;
[0039]其中,
[0040]所述第一預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi);
[0041]所述第二預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)分發(fā)索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi);
[0042]所述M和N均為大于I的自然數(shù)。
[0043]可選地,所述索引保存單元,用于根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù);其中,M為所述X位所能取的不同值的個(gè)數(shù)。
[0044]可選地,所述索引數(shù)據(jù)庫(kù),進(jìn)一步用于保存動(dòng)態(tài)消息索引表;
[0045]所述索引保存單元,進(jìn)一步用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一個(gè)動(dòng)態(tài)消息索引表,將該動(dòng)態(tài)消息的索引保存到查找到的該動(dòng)態(tài)消息索引表中。
[0046]可選地,所述索引保存單元,用于計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù),然后計(jì)算該用戶的ID的指定X位值與所述時(shí)間差的和值,用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;
[0047]和/ 或,
[0048]所述索引保存單元,用于計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù),計(jì)算該聯(lián)系人的ID的指定X位值與所述時(shí)間差的和值,用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
[0049]可選地,所述索引保存單元,用于計(jì)算當(dāng)前日期與該用戶的ID的指定X位值的和值,該和值為自然數(shù),用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;
[0050]和/ 或,
[0051]所述索引保存單元,用于計(jì)算當(dāng)前日期與該聯(lián)系人的ID的指定X位值的和值,該和值為自然數(shù),用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
[0052]本發(fā)明實(shí)施例的有益效果是:由于設(shè)置了 M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表,將用戶ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng),在保存用戶發(fā)布的動(dòng)態(tài)消息的索引時(shí),使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi),這樣就不會(huì)像現(xiàn)有技術(shù)那樣所有用戶的時(shí)間軸索引表都會(huì)在同一時(shí)間點(diǎn)跳表,而是至少部分用戶的時(shí)間軸索引表的跳表時(shí)間點(diǎn)是錯(cuò)開(kāi)的,在不同的時(shí)間點(diǎn)跳表,因此緩解了在特定時(shí)間點(diǎn)由于跳表操作量大,導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)量成倍增大,進(jìn)而可能會(huì)令數(shù)據(jù)庫(kù)崩潰的問(wèn)題。對(duì)于分發(fā)索引表進(jìn)行同樣的處理,也能帶來(lái)相同的有益效果。

【專利附圖】

【附圖說(shuō)明】
[0053]圖1是現(xiàn)有的一種SNS后臺(tái)數(shù)據(jù)的存儲(chǔ)示意圖;
[0054]圖2是本發(fā)明實(shí)施例中的一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和流程圖;
[0055]圖3是本發(fā)明又一實(shí)施例中的一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和流程圖;
[0056]圖4是本發(fā)明實(shí)施例中的各用戶在不同日期輪循到的索引表后綴編號(hào)的示意圖;
[0057]圖5是本發(fā)明實(shí)施例中一種存儲(chǔ)動(dòng)態(tài)消息的索引的裝置的結(jié)構(gòu)圖。

【具體實(shí)施方式】
[0058]現(xiàn)有的技術(shù)方案中,時(shí)間軸索引表(Timeline)和分發(fā)索引表(DispatchBuddy)中未考慮分時(shí)段的臨界點(diǎn)(如【背景技術(shù)】中舉例的I日、9日、17日和25日)大用戶量訪問(wèn)時(shí),出現(xiàn)集中跳表操作(取所有用戶的動(dòng)態(tài)消息索引記錄時(shí)在該臨界點(diǎn)都會(huì)有跳表操作),導(dǎo)致索引數(shù)據(jù)庫(kù)的訪問(wèn)壓力劇增的問(wèn)題。為解決該問(wèn)題,本發(fā)明的核心思想是:
[0059]設(shè)置M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表,將用戶ID分為M組,與所述M組時(shí)間軸索引表一一對(duì)應(yīng),在保存用戶發(fā)布的動(dòng)態(tài)消息的索引時(shí),使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi)的。這樣就不會(huì)像現(xiàn)有技術(shù)那樣所有用戶的時(shí)間軸索引表都會(huì)在同一時(shí)間點(diǎn)跳表,而是至少部分用戶的時(shí)間軸索引表的跳表時(shí)間點(diǎn)是錯(cuò)開(kāi)的,在不同的時(shí)間點(diǎn)跳表,因此緩解了在特定時(shí)間點(diǎn)由于跳表操作量大,導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)量成倍增大,進(jìn)而可能會(huì)令數(shù)據(jù)庫(kù)崩潰的問(wèn)題。對(duì)于分發(fā)索引表進(jìn)行同樣的處理作同樣的處理,也能帶來(lái)相同的有益效果。
[0060]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合附圖對(duì)本發(fā)明實(shí)施方式作進(jìn)一步地詳細(xì)描述。
[0061]圖2是本發(fā)明實(shí)施例中的一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和流程圖。該方法適用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)(例如,用于存儲(chǔ)SNS用戶發(fā)布的動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)),在本實(shí)施例中用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)包括時(shí)間軸索引表,這里針對(duì)時(shí)間軸索引表進(jìn)行改進(jìn),具體地該方法包括:
[0062]步驟S210,設(shè)置用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)包括M組時(shí)間軸索引表,
每組包含N個(gè)時(shí)間軸索引表;將用戶ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng)…和
N均為大于I的自然數(shù)。
[0063]在本發(fā)明的一個(gè)實(shí)施例中,可以根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù)。其中,M為所述X位所能取的不同值的個(gè)數(shù)。例如,可以取用戶十進(jìn)制ID的最后兩位,則可以取O?99的100個(gè)不同數(shù)值,即M= 100,即根據(jù)用戶ID的后兩位的取值,可以將用戶ID分為100組。并且設(shè)置100組時(shí)間軸索引表,與100組用戶一一對(duì)應(yīng),另外設(shè)N取3,則每組包含3個(gè)時(shí)間軸索引表,總共300個(gè)時(shí)間軸索引表。
[0064]步驟S220,每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中;所述第一預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi)。
[0065]時(shí)間以“天”計(jì)算為例,假設(shè)固定時(shí)間間隔為4天,則對(duì)于同一個(gè)用戶來(lái)說(shuō),其所發(fā)布的動(dòng)態(tài)消息的索引根據(jù)發(fā)布的日期,按照每隔4天輪循一次的規(guī)則,輪循保存到該用戶ID對(duì)應(yīng)組內(nèi)的3個(gè)時(shí)間軸索引表中。將每組中的三個(gè)時(shí)間軸索引表都分別編號(hào)為0、1和2。
[0066]例如,一部分用戶(用a表不)的輪循規(guī)則是:
[0067]I?4日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為O的時(shí)間軸索引表;
[0068]5?8日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為I的時(shí)間軸索引表;
[0069]9?12日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為2的時(shí)間軸索引表;
[0070]13?16日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為O的時(shí)間軸索引表;
[0071]17?20日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為2的時(shí)間軸索引表;以此類推。
[0072]一部分用戶(用b表示)的輪循規(guī)則是:
[0073]2?5日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為O的時(shí)間軸索引表;
[0074]6?9日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為I的時(shí)間軸索引表;
[0075]10?13日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為2的時(shí)間軸索引表;
[0076]14?17日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為O的時(shí)間軸索引表;
[0077]18?21日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為2的時(shí)間軸索引表;以此類推。
[0078]又一部分用戶(用c表示)的輪循規(guī)則是:
[0079]3?6日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為O的時(shí)間軸索引表;
[0080]7?10日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為I的時(shí)間軸索引表;
[0081]11?14日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為2的時(shí)間軸索引表;
[0082]15?18日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為O的時(shí)間軸索引表;
[0083]19?22日產(chǎn)生的動(dòng)態(tài)消息索引保存到編號(hào)為2的時(shí)間軸索引表;以此類推。
[0084]這樣就不會(huì)像現(xiàn)有技術(shù)那樣所有用戶的時(shí)間軸索引表都會(huì)在同一時(shí)間點(diǎn)跳表,而是至少部分用戶的時(shí)間軸索引表的跳表時(shí)間點(diǎn)是錯(cuò)開(kāi)的,在不同的時(shí)間點(diǎn)跳表。例如,在5日這一天,如果前臺(tái)取一次記錄需要5日和4日的記錄,則a部分用戶的記錄會(huì)跳表,而b部分和c部分用戶的記錄不會(huì)跳表。
[0085]可見(jiàn),本發(fā)明的技術(shù)方案使得所有用戶的動(dòng)態(tài)消息索引記錄的跳表時(shí)間點(diǎn)在時(shí)間軸上錯(cuò)開(kāi),避免集中在一個(gè)時(shí)間點(diǎn)全部用戶的記錄都跳表。
[0086]圖3是本發(fā)明又一實(shí)施例中的一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法和流程圖。該方法適用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)(例如,用于存儲(chǔ)SNS用戶發(fā)布的動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)),在本實(shí)施例中用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)包括分發(fā)索引表,這里針對(duì)分發(fā)索引表進(jìn)行改進(jìn),具體地該方法包括:
[0087]步驟S310,設(shè)置用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)包括M組分發(fā)索引表,每組包含N個(gè)分發(fā)索引表;將用戶ID分為M組,與所述M組分發(fā)索引表一一對(duì)應(yīng);M和N均為大于I的自然數(shù)。
[0088]在本發(fā)明的一個(gè)實(shí)施例中,可以根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù)。其中,M為所述X位所能取的不同值的個(gè)數(shù)。例如,可以取用戶ID的最后兩位,則可以取O?99的100個(gè)不同數(shù)值,即M = 100,即根據(jù)用戶ID的后兩位的取值,可以將用戶ID分為100組。并且設(shè)置100組時(shí)間軸索引表,與100組用戶——對(duì)應(yīng),另外設(shè)N取3,則每組包含3個(gè)時(shí)間軸索引表,總共300個(gè)時(shí)間軸索引表。
[0089]步驟320,每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中;所述第二預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)分發(fā)索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi)。
[0090]本步驟中的第二策略可以和步驟220中的第一策略相同。
[0091]在圖2和圖3所示的實(shí)施例中,分別針對(duì)時(shí)間軸索引表(Timeline)和分發(fā)索引表(DispatchBuddy )進(jìn)行了改進(jìn)處理。在本發(fā)明的一個(gè)較佳實(shí)施例中可以同時(shí)對(duì)Time I ine和DispatchBuddy進(jìn)行改進(jìn)。以下以用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù)包括動(dòng)態(tài)消息索引表(NewsFeed)、軸索引表(Timeline)和分發(fā)索引表(DispatchBuddy)為例進(jìn)行說(shuō)明:
[0092]仍以圖1所示的存儲(chǔ)系統(tǒng)為例,索引數(shù)據(jù)庫(kù)由4組子庫(kù)組成,分別為:索引子庫(kù)一、索引子庫(kù)二、索引子庫(kù)三和索引子庫(kù)四。每個(gè)索引子庫(kù)都由兩臺(tái)設(shè)備組成,一主一從,做主從備份。將索引按10進(jìn)制的用戶ID的后2位進(jìn)行分子庫(kù)存儲(chǔ),例如用戶標(biāo)識(shí)后2位的取值范圍O?24、25?49、50?74和75?99,分別對(duì)應(yīng)索引子庫(kù)一至四。這實(shí)際上是將用戶ID 分成了 100 組。對(duì)應(yīng)第有 100 個(gè) NewsFeed表、100 組 Timeline 表和 100 組 DispatchBudd表。每組中包含3個(gè)表,分別用后綴_0、_1和_2編號(hào)。每個(gè)索引子庫(kù)中均存儲(chǔ)newsfeed、Timeline 和 DispatchBuddy 三類索引表。
[0093]其中,索引子庫(kù)一中存儲(chǔ)如下索引表:
[0094]NewsFeed_0000>NewsFeed_0002、NewsFeed_0003......、NewsFeed_0024 ;
[0095]Timel ine_0000_0> Timel ine_0000_l、Timeline_0000_2、Time I ine_0001_0 >Time I ine_0001_1、Timeline_0001_2> Timeline_0003_0> Time Iine_0003_l、Timeline_0003_2......、Timeline_0024_0> Timeline_0024_l、Timeline_0024_2 ;
[0096]DispatchBuddy_0000_0> DispatchBuddy_0000_l、DispatchBuddy_0000_2>DispatchBuddy_0001_0> DispatchBuddy_0001_l> DispatchBuddy_0001_2>
Di spatchBuddy_0003_0 > Di spatchBuddy_0003_l、DispatchBuddy_0003_2......、
Di spatchBuddy_0024_0 >DispatchBuddy_0024_l>DispatchBuddy_0024_2。
[0097]索引子庫(kù)二中存儲(chǔ)如下索引表:
[0098]NewsFeed—0025、NewsFeed—0026、NewsFeed—0027......、NewsFeed—0049 ;
[0099]Timeline—0025—0、 Timeline—0025—1、 Timeline—0025—2、 Timeline—0026—0、Time Iine—0026 —1、Time Iine—0026—2、Timeline—0027—0、Time Iine—0027 —1、Timeline—0027—2......、Timeline—0049—0、Timeline—0049—1、Timeline—0049—2 ;
[0100]DispatchBuddy—0025—0、 DispatchBuddy—0025—1、 DispatchBuddy—0025—2、DispatchBuddy_0026_0、 DispatchBuddy_00 26_l、 DispatchBuddy_00 26_2、
DispatchBuddy—0027—0、DispatchBuddy—0027—1、DispatchBuddy—0027—2......、
DispatchBuddy—0049—0、DispatchBuddy—0049—1、DispatchBuddy—0049—2 ;
[0101]索引子庫(kù)三中存儲(chǔ)如下索引表:
[0102]NewsFeed—0050、NewsFeed—0051、NewsFeed—0052......、NewsFeed—0074 ;
[0103]Timeline—0050—0、Timeline—0050—1、Timeline—0050—2、Timeline—0051—0、Time Iine—0051 — 1、TimeIine—0051 — 2、Time Iine—0052—0、Time Iine—0052—1、Timeline—0052—2......、Timeline—0074—0、Timeline—0074—1、Timeline—0074—2 ;
[0104]DispatchBuddy—0050—0、 DispatchBuddy—0050—1、 DispatchBuddy—0050—2、DispatchBuddy_0051_0、 DispatchBuddy_0051_l、 DispatchBuddy_0051_2、
DispatchBuddy—0052—0、DispatchBuddy—0052—1、DispatchBuddy—0052—2......、
DispatchBuddy—0074—0、DispatchBuddy—0074—1、DispatchBuddy—0074—2 ;
[0105]索引子庫(kù)四中存儲(chǔ)如下索引表:
[0106]NewsFeed—0075、NewsFeed—0076、NewsFeed—0077......、NewsFeed—0099 ;
[0107]Timeline—0075—0、 Timeline—0075—1、 Timeline—0075—2、 Timeline—0076—0、Timeline—0076 —1、Time Iine—0076—2、Timeline—0077—0、Timeline—0077 —1、Timeline—0077—2......、Timeline—0099—0、Timeline—0099—1、Timeline—0099—2 ;
[0108]DispatchBuddy—0075—0、 DispatchBuddy—0075—1、 DispatchBuddy—0075—2、DispatchBuddy_0076_0、 DispatchBuddy_0076_l、 DispatchBuddy_0076_2、
DispatchBuddy—0077—0、DispatchBuddy—0077—1、DispatchBuddy—0077—2......、
DispatchBuddy—0099—0、DispatchBuddy—0099—1、DispatchBuddy—0099—2。
[0109]基于上述的索引數(shù)據(jù)庫(kù),每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),關(guān)于存儲(chǔ)該動(dòng)態(tài)消息的索引,執(zhí)行以下操作:
[0110](I)根據(jù)該用戶的ID查找到對(duì)應(yīng)的一個(gè)動(dòng)態(tài)消息索引表,將該動(dòng)態(tài)消息的索引保存到查找到的該動(dòng)態(tài)消息索引表中。
[0111](2)根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中。
[0112]在本實(shí)施例中,第一預(yù)設(shè)策略具體為:計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù);計(jì)算該用戶的ID的指定X位值與所述時(shí)間差的和值;用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;
[0113]在其他實(shí)施例中,第一預(yù)設(shè)策略還可以為:計(jì)算當(dāng)前日期與該用戶的ID的指定X位值的和值,該和值為自然數(shù);用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表。
[0114](3)對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中;
[0115]在本實(shí)施例中,第二預(yù)設(shè)策略具體為:計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù);計(jì)算該聯(lián)系人的ID的指定X位值與所述時(shí)間差的和值;用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;
[0116]在其他實(shí)施例中,第二預(yù)設(shè)策略還可以為:計(jì)算當(dāng)前日期與該聯(lián)系人的ID的指定X位值的和值,該和值為自然數(shù);用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表。
[0117]舉例:用戶A (其用戶ID為200098677)的聯(lián)系人用戶B (其用戶ID為200098670)在2012年5月20日16:16發(fā)布了一條動(dòng)態(tài),則保存動(dòng)態(tài)消息的索引的具體流程為:
[0118](I)由于用戶B的用戶ID為200098670,根據(jù)其后兩位70會(huì)路由到索引子庫(kù)三中,再根據(jù)70,將該動(dòng)態(tài)消息的索引插入到NeWSFeed_0070中,并同時(shí)存入索引緩存;
[0119](2)同時(shí),在索引子庫(kù)三中,根據(jù)70和當(dāng)前日期20,計(jì)算出的后綴為0,因此會(huì)在Timeline_0070_0中插入將該動(dòng)態(tài)消息的索引,同時(shí)保存到索引緩存中一份;
[0120]根據(jù)用戶ID的后兩位70和當(dāng)前日期20,計(jì)算出的后綴為O的過(guò)程為:固定時(shí)間戳為2012年4月29日,則與當(dāng)前日期的時(shí)間差為21天,70+21 = 91,91整除3為30,30模3余數(shù)為O。
[0121](3)同樣的方法操作DispatchBuddy表,由于此表是分發(fā)給聯(lián)系人的索引表,因此需要根據(jù)用戶B的聯(lián)系人的用戶ID進(jìn)行路由,為用戶A為例,由于用戶A的用戶ID為200098677,根據(jù)其后兩位77會(huì)路由到索引子庫(kù)四中,在根據(jù)77和當(dāng)前日期20,計(jì)算出的后綴為2,因此會(huì)在DispatchBuddy_0077_2中插入將該動(dòng)態(tài)消息的索引,同時(shí)保存到索引緩存中一份。
[0122]根據(jù)77和當(dāng)前日期20,計(jì)算出的后綴為2的過(guò)程為:固定時(shí)間戳為2012年4月29日,則與當(dāng)前日期的時(shí)間差為21天,77+21 = 98,98整除3為32,32模3余數(shù)為2。
[0123]這樣,根據(jù)該策略計(jì)算出來(lái)的各用戶在不同日期輪循到的索引表的后綴編號(hào)如圖4所示。從圖4可以看出,在該實(shí)施例中,將用戶的索引記錄分為三個(gè)時(shí)間段存儲(chǔ)(在本發(fā)明的其他實(shí)施例中可以靈活調(diào)整所分時(shí)間段個(gè)數(shù),如4、5、6甚至7個(gè)時(shí)間段),即將每組的Timeline和DispatchBuddy表分為0、1和2三個(gè)表,并且各用戶所存儲(chǔ)記錄的時(shí)間段交錯(cuò)開(kāi)來(lái),盡量避免在同一天集中跳表操作,緩解了索引數(shù)據(jù)庫(kù)在臨界時(shí)間的訪問(wèn)壓力。按照?qǐng)D4所示的結(jié)果,在一個(gè)臨界點(diǎn)日期,總共有總用戶數(shù)三分之一的用戶可能出現(xiàn)跳表操作,大大減少了同時(shí)時(shí)間點(diǎn)出現(xiàn)跳表操作的數(shù)量。但需要說(shuō)明的是,在本實(shí)施例中單表存儲(chǔ)的時(shí)間為3天,但在其他實(shí)施例中可以根據(jù)需要調(diào)整正4天或5天等等,控制比較靈活。
[0124]此外,該方案還存在如下優(yōu)點(diǎn):細(xì)分了索引數(shù)據(jù)的存儲(chǔ)粒度,利于刪除操作。根據(jù)圖4,在本實(shí)施例中,每張表每隔9天會(huì)更新,即每隔9天表中的記錄會(huì)被刪除,重新寫入新的記錄。每次刪除時(shí),會(huì)刪除三分之一用戶的索引記錄,而不是刪除所有用戶的索引記錄。
[0125]基于上述實(shí)施例給出本發(fā)明中的存儲(chǔ)動(dòng)態(tài)消息的索引的裝置的結(jié)構(gòu)。
[0126]圖5是本發(fā)明實(shí)施例中一種存儲(chǔ)動(dòng)態(tài)消息的索引的裝置的結(jié)構(gòu)圖。參見(jiàn)圖5該裝置包括:索引數(shù)據(jù)庫(kù)501和用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引保存單元502。
[0127]索引數(shù)據(jù)庫(kù)501,用于保存M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表;以及,
索引保存單元502,用于將用戶ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng),M和N均為自然數(shù);索引保存單元502,還用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中;
[0128]和/ 或,
[0129]索引數(shù)據(jù)庫(kù)501,用于保存M組分發(fā)索引表,每組包含N個(gè)分發(fā)索引表;以及,索引保存單元502,用于將用戶ID分為M組,與所述M組分發(fā)索引表一一對(duì)應(yīng);索引保存單元502,還用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中;
[0130]其中,
[0131]所述第一預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi);
[0132]所述第二預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)分發(fā)索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi);
[0133]所述M和N均為大于I的自然數(shù)。
[0134]在本發(fā)明的一個(gè)實(shí)施例中,索引保存單元502用于根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù);其中,M為所述X位所能取的不同值的個(gè)數(shù)。例如,可以取用戶ID的最后兩位,則可以取O?99的100個(gè)不同數(shù)值,即M= 100,即根據(jù)用戶ID的后兩位的取值,可以將用戶ID分為100組。并且設(shè)置100組時(shí)間軸索引表,與100組用戶——對(duì)應(yīng),另外設(shè)N取3,則每組包含3個(gè)時(shí)間軸索引表,總共300個(gè)時(shí)間軸索引表。
[0135]在本發(fā)明的一個(gè)實(shí)施例中,索引數(shù)據(jù)庫(kù)501,還進(jìn)一步用于保存動(dòng)態(tài)消息索引表。索引保存單元502還進(jìn)一步用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一個(gè)動(dòng)態(tài)消息索引表,將該動(dòng)態(tài)消息的索引保存到查找到的該動(dòng)態(tài)消息索引表中。
[0136]在本發(fā)明的一個(gè)實(shí)施例中,索引保存單元502,用于計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù),然后計(jì)算該用戶的ID的指定X位值與所述時(shí)間差的和值,用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
[0137]在本發(fā)明的一個(gè)實(shí)施例中,索引保存單元502,用于計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù),計(jì)算該聯(lián)系人的ID的指定X位值與所述時(shí)間差的和值,用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
[0138]在本發(fā)明的一個(gè)實(shí)施例中,索引保存單元502,用于計(jì)算當(dāng)前日期與該用戶的ID的指定X位值的和值,該和值為自然數(shù),用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;
[0139]在本發(fā)明的一個(gè)實(shí)施例中,索引保存單元502,用于計(jì)算當(dāng)前日期與該聯(lián)系人的ID的指定X位值的和值,該和值為自然數(shù),用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
[0140]綜上所述,在本發(fā)明中由于設(shè)置了 M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表,將用戶ID分為M組,與所述M組時(shí)間軸索引表對(duì)應(yīng),在保存用戶發(fā)布的動(dòng)態(tài)消息的索引時(shí),使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi),這樣就不會(huì)像現(xiàn)有技術(shù)那樣所有用戶的時(shí)間軸索引表都會(huì)在同一時(shí)間點(diǎn)跳表,而是至少部分用戶的時(shí)間軸索引表的跳表時(shí)間點(diǎn)是錯(cuò)開(kāi)的,在不同的時(shí)間點(diǎn)跳表,因此緩解了在特定時(shí)間點(diǎn)由于跳表操作量大,導(dǎo)致數(shù)據(jù)庫(kù)訪問(wèn)量成倍增大,進(jìn)而可能會(huì)令數(shù)據(jù)庫(kù)崩潰的問(wèn)題。對(duì)于分發(fā)索引表進(jìn)行同樣的處理,能帶來(lái)相同的有益效果。
[0141]在本申請(qǐng)中將Newsfeed表稱為動(dòng)態(tài)消息索引表,將Timeline表稱為時(shí)間軸索引表,以及將DispatchBuddy表稱為分發(fā)索引表。這里需要說(shuō)明的是Newsfeed表、Timeline表和DispatchBuddy表的對(duì)應(yīng)中文名稱不限于本申請(qǐng)中給出的上述中文名稱,也可以是其他的合適的中文名稱。
[0142]以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
【權(quán)利要求】
1.一種存儲(chǔ)動(dòng)態(tài)消息的索引的方法,該方法適用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù),其特征在于,該方法包括: 設(shè)置所述索引數(shù)據(jù)庫(kù)包含M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表,將用戶ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng),每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中; 和/或, 設(shè)置所述索引數(shù)據(jù)庫(kù)包含M組分發(fā)索引表,每組包含N個(gè)分發(fā)索引表,將用戶ID分為M組,與所述M組分發(fā)索引表 對(duì)應(yīng),每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中; 其中, 所述第一預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi); 其中,所述第二預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)分發(fā)索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi); 所述M和N均為大于I的自然數(shù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述將用戶ID分為M組包括: 根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù); 其中,M為所述X位所能取的不同值的個(gè)數(shù)。
3.如權(quán)利要求1所述的方法,其特征在于,該方法進(jìn)一步包括: 每當(dāng)一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID從所述索引數(shù)據(jù)庫(kù)查找到對(duì)應(yīng)的一個(gè)動(dòng)態(tài)消息索引表,將該動(dòng)態(tài)消息的索引保存到查找到的該動(dòng)態(tài)消息索引表中。
4.如權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于, 所述根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表具體包括:每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù);計(jì)算該用戶的ID的指定X位值與所述時(shí)間差的和值;用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表; 所述根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表具體包括:每組中的N個(gè)分發(fā)索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù);計(jì)算該聯(lián)系人的ID的指定X位值與所述時(shí)間差的和值;用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表。
5.如權(quán)利要求1至3中任一項(xiàng)所述的方法,其特征在于, 所述根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表具體包括:每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與該用戶的ID的指定X位值的和值,該和值為自然數(shù);用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表; 所述根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表具體包括:每組中的N個(gè)分發(fā)索引表都被依次編號(hào)為O?N-1 ;計(jì)算當(dāng)前日期與該聯(lián)系人的ID的指定X位值的和值,該和值為自然數(shù);用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù);確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表。
6.一種存儲(chǔ)動(dòng)態(tài)消息的索引的裝置,其特征在于,該裝置包括:索引保存單元和用于存儲(chǔ)動(dòng)態(tài)消息的索引的索引數(shù)據(jù)庫(kù); 所述索引數(shù)據(jù)庫(kù),用于保存M組時(shí)間軸索引表,每組包含N個(gè)時(shí)間軸索引表;以及,所述索引保存單元,用于將用戶ID分為M組,與所述M組時(shí)間軸索引表--對(duì)應(yīng);所述索引保存單元還用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一組時(shí)間軸索引表,根據(jù)第一預(yù)設(shè)策略確定該組中的一個(gè)時(shí)間軸索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該時(shí)間軸索引表中; 和/或, 所述索引數(shù)據(jù)庫(kù),用于保存M組分發(fā)索引表,每組包含N個(gè)分發(fā)索引表;以及,所述索引保存單元,用于將用戶ID分為M組,與所述M組分發(fā)索引表一一對(duì)應(yīng);所述索引保存單元還用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),對(duì)于該用戶的每個(gè)聯(lián)系人,根據(jù)該聯(lián)系人的ID查找到對(duì)應(yīng)的一組分發(fā)索引表,根據(jù)第二預(yù)設(shè)策略確定該組中的一個(gè)分發(fā)索引表,將該動(dòng)態(tài)消息的索引保存到所確定的該分發(fā)索引表中; 其中, 所述第一預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)時(shí)間軸索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi); 所述第二預(yù)設(shè)策略使得同一用戶的動(dòng)態(tài)消息的索引按照所發(fā)布時(shí)間,依據(jù)每隔固定時(shí)間間隔輪循一次的原則,輪循保存在對(duì)應(yīng)組內(nèi)的N個(gè)分發(fā)索引表中,且至少部分用戶的輪循時(shí)間點(diǎn)相互錯(cuò)開(kāi); 所述M和N均為大于I的自然數(shù)。
7.如權(quán)利要求6所述的裝置,其特征在于, 所述索引保存單元,用于根據(jù)用戶ID的指定的X位的取值劃分成M組,X為自然數(shù);其中,M為所述X位所能取的不同值的個(gè)數(shù)。
8.如權(quán)利要求6所述的裝置,其特征在于, 所述索引數(shù)據(jù)庫(kù),進(jìn)一步用于保存動(dòng)態(tài)消息索引表; 所述索引保存單元,進(jìn)一步用于在一個(gè)用戶發(fā)布一條動(dòng)態(tài)消息時(shí),根據(jù)該用戶的ID查找到對(duì)應(yīng)的一個(gè)動(dòng)態(tài)消息索引表,將該動(dòng)態(tài)消息的索引保存到查找到的該動(dòng)態(tài)消息索引表中。
9.如權(quán)利要求6至8中任一項(xiàng)所述的裝置,其特征在于, 所述索引保存單元,用于計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù),然后計(jì)算該用戶的ID的指定X位值與所述時(shí)間差的和值,用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ; 和/或, 所述索引保存單元,用于計(jì)算當(dāng)前日期與固定時(shí)間戳之間的時(shí)間差,該時(shí)間差的數(shù)值為自然數(shù),計(jì)算該聯(lián)系人的ID的指定X位值與所述時(shí)間差的和值,用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
10.如權(quán)利要求6至8中任一項(xiàng)所述的裝置,其特征在于, 所述索引保存單元,用于計(jì)算當(dāng)前日期與該用戶的ID的指定X位值的和值,該和值為自然數(shù),用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)時(shí)間軸索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1 ; 和/或, 所述索引保存單元,用于計(jì)算當(dāng)前日期與該聯(lián)系人的ID的指定X位值的和值,該和值為自然數(shù),用N整除所述和值得到一個(gè)整數(shù),再將該整數(shù)模N取余數(shù),確定該組中的編號(hào)與該余數(shù)相同的一個(gè)分發(fā)索引表;其中,每組中的N個(gè)時(shí)間軸索引表都被依次編號(hào)為O?N-1。
【文檔編號(hào)】G06F17/30GK104252503SQ201310270726
【公開(kāi)日】2014年12月31日 申請(qǐng)日期:2013年6月29日 優(yōu)先權(quán)日:2013年6月29日
【發(fā)明者】趙炳坤 申請(qǐng)人:北京新媒傳信科技有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1