一種操作數(shù)據(jù)的方法和系統(tǒng)的制作方法
【專(zhuān)利摘要】本發(fā)明提供一種操作數(shù)據(jù)的方法和系統(tǒng),能夠提高用戶(hù)操作樹(shù)狀結(jié)構(gòu)的數(shù)據(jù)的效率。該方法包括:在收到用戶(hù)的數(shù)據(jù)操作請(qǐng)求后,在分布式緩存系統(tǒng)中定位第一緩存服務(wù)器;所述第一緩存服務(wù)器根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件或文件夾與其父目錄之間的關(guān)系信息,在自身的內(nèi)存中構(gòu)建緩存樹(shù),該緩存樹(shù)以樹(shù)狀結(jié)構(gòu)保存所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求指定的數(shù)據(jù)所對(duì)應(yīng)的根節(jié)點(diǎn)下的數(shù)據(jù);定位所述緩存樹(shù)中保存所述數(shù)據(jù)操作請(qǐng)求所指定的數(shù)據(jù)所在的節(jié)點(diǎn),然后對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作并將操作結(jié)果返回給用戶(hù)。
【專(zhuān)利說(shuō)明】一種操作數(shù)據(jù)的方法和系統(tǒng)【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及計(jì)算機(jī)網(wǎng)絡(luò)【技術(shù)領(lǐng)域】,特別地涉及一種操作數(shù)據(jù)的方法和系統(tǒng)。
【背景技術(shù)】
[0002]在計(jì)算機(jī)網(wǎng)絡(luò)中常常有基于樹(shù)狀結(jié)構(gòu)的數(shù)據(jù)資源,例如文件服務(wù)中的各類(lèi)文件夾及其中的文件?,F(xiàn)有的一種定位文件的方案是將文件節(jié)點(diǎn)信息保存在關(guān)系數(shù)據(jù)庫(kù)中,關(guān)系數(shù)據(jù)庫(kù)中除了文件本身的數(shù)據(jù),還保存文件或文件夾與該文件或文件夾的父目錄之間的關(guān)系信息,用戶(hù)可以通過(guò)文件或文件夾標(biāo)識(shí)找到文件或文件夾所在的父目錄,還可由此上溯到根目錄。
[0003]在數(shù)據(jù)量非常大的情況下,關(guān)系數(shù)據(jù)庫(kù)的讀寫(xiě)速度緩慢,影響用戶(hù)對(duì)數(shù)據(jù)進(jìn)行操作的效率。
【發(fā)明內(nèi)容】
[0004]有鑒于此,本發(fā)明提供一種操作數(shù)據(jù)的方法和系統(tǒng),能夠提高用戶(hù)操作樹(shù)狀結(jié)構(gòu)的數(shù)據(jù)的效率。
[0005]為實(shí)現(xiàn)上述目的,根據(jù)本發(fā)明的一個(gè)方面,提供了一種操作數(shù)據(jù)的方法。
[0006]本發(fā)明的操作數(shù)據(jù)的方法包括:在收到用戶(hù)的數(shù)據(jù)操作請(qǐng)求后,在分布式緩存系統(tǒng)中定位第一緩存服務(wù)器;所述第一緩存服務(wù)器根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件或文件夾與其父目錄之間的關(guān)系信息,在自身的內(nèi)存中構(gòu)建緩存樹(shù),該緩存樹(shù)以樹(shù)狀結(jié)構(gòu)保存所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求指定的數(shù)據(jù)所對(duì)應(yīng)的根節(jié)點(diǎn)下的數(shù)據(jù);定位所述緩存樹(shù)中保存所述數(shù)據(jù)操作請(qǐng)求所指定的數(shù)據(jù)所在的節(jié)點(diǎn),然后對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作并將操作結(jié)果返回給用戶(hù)。
[0007]可選地,所述在自身的內(nèi)存中構(gòu)建緩存樹(shù)的流程包括:步驟A:確定所述數(shù)據(jù)操作請(qǐng)求指定的數(shù)據(jù)對(duì)應(yīng)的根節(jié)點(diǎn),將該根節(jié)點(diǎn)保存到棧中;步驟B:判斷所述棧是否為空,若是,則停止所述流程,否則進(jìn)入步驟C ;步驟C:將棧頂節(jié)點(diǎn)出棧;步驟D:判斷出棧的節(jié)點(diǎn)是否為葉節(jié)點(diǎn),若是,則返回所述步驟B,否則進(jìn)入步驟E ;步驟E:根據(jù)所述關(guān)系信息在所述關(guān)系數(shù)據(jù)庫(kù)中獲取步驟C中出棧的節(jié)點(diǎn)的所有子節(jié)點(diǎn),將這些子節(jié)點(diǎn)保存到緩存樹(shù)中的所述步驟C中出棧的節(jié)點(diǎn)下,并且將這些子節(jié)點(diǎn)保存到所述棧中,然后返回所述步驟B。
[0008]可選地,所述對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作的步驟包括:對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行讀/寫(xiě),或者刪除該節(jié)點(diǎn)中的數(shù)據(jù),或者對(duì)該節(jié)點(diǎn)新增一個(gè)子節(jié)點(diǎn),或者對(duì)該節(jié)點(diǎn)進(jìn)行重命名,或者移動(dòng)該節(jié)點(diǎn)。
[0009]可選地,還包括保存對(duì)所述緩存樹(shù)中的節(jié)點(diǎn)進(jìn)行操作的時(shí)間戳。
[0010]可選地,在自 身的內(nèi)存中構(gòu)建緩存樹(shù)的步驟之后,還包括:在所述緩存樹(shù)的根節(jié)點(diǎn)中保存所述用戶(hù)的用戶(hù)標(biāo)識(shí)。
[0011]根據(jù)本發(fā)明的另一方面,提供了一種提供數(shù)據(jù)的系統(tǒng)。
[0012]本發(fā)明的提供數(shù)據(jù)的系統(tǒng)包括:定位模塊,用于在收到用戶(hù)的數(shù)據(jù)操作請(qǐng)求后,在分布式緩存系統(tǒng)中定位第一緩存服務(wù)器;緩存樹(shù)構(gòu)建模塊,用于根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件或文件夾與其父目錄之間的關(guān)系信息,在自身的內(nèi)存中構(gòu)建緩存樹(shù),該緩存樹(shù)以樹(shù)狀結(jié)構(gòu)保存所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求指定的數(shù)據(jù)所對(duì)應(yīng)的根節(jié)點(diǎn)下的數(shù)據(jù);提供模塊,用于定位所述緩存樹(shù)中保存所述數(shù)據(jù)操作請(qǐng)求所指定的數(shù)據(jù)所在的節(jié)點(diǎn),然后對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作并將操作結(jié)果返回給用戶(hù)。
[0013]可選地,所述緩存樹(shù)構(gòu)建模塊還用于根據(jù)如下流程構(gòu)建緩存樹(shù):步驟A:確定所述數(shù)據(jù)操作請(qǐng)求指定的數(shù)據(jù)對(duì)應(yīng)的根節(jié)點(diǎn),將該根節(jié)點(diǎn)保存到棧中;步驟B:判斷所述棧是否為空,若是,則停止所述流程,否則進(jìn)入步驟C ;步驟C:將棧頂節(jié)點(diǎn)出棧;步驟D:判斷出棧的節(jié)點(diǎn)是否為葉節(jié)點(diǎn),若是,則返回所述步驟B,否則進(jìn)入步驟E ;步驟E:根據(jù)所述關(guān)系信息在所述關(guān)系數(shù)據(jù)庫(kù)中獲取步驟C中出棧的節(jié)點(diǎn)的所有子節(jié)點(diǎn),將這些子節(jié)點(diǎn)保存到緩存樹(shù)中的所述步驟C中出棧的節(jié)點(diǎn)下,并且將這些子節(jié)點(diǎn)保存到所述棧中,然后返回所述步驟B0
[0014]可選地,所述緩存樹(shù)構(gòu)建模塊還用于:對(duì)所述緩存樹(shù)中的節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行讀/寫(xiě),或者刪除該節(jié)點(diǎn)中的數(shù)據(jù),或者對(duì)該節(jié)點(diǎn)新增一個(gè)子節(jié)點(diǎn),或者對(duì)該節(jié)點(diǎn)進(jìn)行重命名,或者移動(dòng)該節(jié)點(diǎn)。
[0015]可選地,還包括時(shí)間戳模塊,用于保存對(duì)所述緩存樹(shù)中的節(jié)點(diǎn)進(jìn)行操作的時(shí)間戳。
[0016]可選地,所述緩存樹(shù)構(gòu)建模塊還用于在所述緩存樹(shù)的根節(jié)點(diǎn)中保存所述用戶(hù)的用戶(hù)標(biāo)識(shí)。
[0017]根據(jù)本發(fā)明的技術(shù)方案,根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件在緩存服務(wù)器中構(gòu)建緩存樹(shù),對(duì)緩存樹(shù)中的節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行操作,由于緩存的讀寫(xiě)具有速度較快的特點(diǎn),因此提高了操作樹(shù)狀結(jié)構(gòu)的數(shù)據(jù)的效率。另外,因?yàn)橛脩?hù)在登錄后的操作通常會(huì)涉及一個(gè)根節(jié)點(diǎn)下的多個(gè)節(jié)點(diǎn),而構(gòu)建的緩存樹(shù)包含了這些節(jié)點(diǎn),所以在緩存樹(shù)已被構(gòu)建的情況下能大幅提高用戶(hù)操作多個(gè)節(jié)點(diǎn)中的數(shù)據(jù)的效率。
【專(zhuān)利附圖】
【附圖說(shuō)明】
[0018]附圖用于更好地理解本發(fā)明,不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。其中:
[0019]圖1是根據(jù)本發(fā)明實(shí)施例的各類(lèi)服務(wù)器連接的拓?fù)涫疽鈭D;
[0020]圖2是根據(jù)本發(fā)明實(shí)施例的構(gòu)建緩存樹(shù)的流程的示意圖;
[0021]圖3是根據(jù)本發(fā)明實(shí)施例的提供數(shù)據(jù)的系統(tǒng)的主要模塊的示意圖。
【具體實(shí)施方式】
[0022]以下結(jié)合附圖對(duì)本發(fā)明的示范性實(shí)施例做出說(shuō)明,其中包括本發(fā)明實(shí)施例的各種細(xì)節(jié)以助于理解,應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí)至IJ,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同樣,為了清楚和簡(jiǎn)明,以下的描述中省略了對(duì)公知功能和結(jié)構(gòu)的描述。
[0023]在本實(shí)施例中,采用分布式緩存系統(tǒng)來(lái)緩存關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。因?yàn)檫@些數(shù)據(jù)具有樹(shù)狀結(jié)構(gòu),而眾所周知,現(xiàn)有的分布式緩存技術(shù)多以鍵-值方式存儲(chǔ)數(shù)據(jù),所以在本實(shí)施例中,緩存服務(wù)器根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)以及用戶(hù)指定的文件或文件夾的標(biāo)識(shí)構(gòu)建包含該文件或文件夾的緩存樹(shù),然后在緩存樹(shù)中定位節(jié)點(diǎn),再按用戶(hù)的要求對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作,其中包括對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行讀/寫(xiě),或者刪除該節(jié)點(diǎn)中的數(shù)據(jù),或者對(duì)該節(jié)點(diǎn)新增一個(gè)子節(jié)點(diǎn),或者對(duì)該節(jié)點(diǎn)進(jìn)行重命名,或者移動(dòng)該節(jié)點(diǎn)。
[0024]圖1是根據(jù)本發(fā)明實(shí)施例的各類(lèi)服務(wù)器連接的拓?fù)涫疽鈭D。用戶(hù)使用的終端設(shè)備11通過(guò)互聯(lián)網(wǎng)12向應(yīng)用服務(wù)器13發(fā)送數(shù)據(jù)操作請(qǐng)求,應(yīng)用服務(wù)器13采用定位算法從緩存服務(wù)器集群16中定位出一個(gè)緩存服務(wù)器例如緩存服務(wù)器161,然后向該緩存服務(wù)器161發(fā)送數(shù)據(jù)操作指令,緩存服務(wù)器161根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)構(gòu)建緩存樹(shù),再由一致性控制服務(wù)器15使用一致性驗(yàn)證機(jī)制來(lái)驗(yàn)證用戶(hù)要操作的數(shù)據(jù)是否為最新,待驗(yàn)證通過(guò)后按照數(shù)據(jù)操作指令對(duì)用戶(hù)指定的節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作,并在關(guān)系數(shù)據(jù)庫(kù)中作持久化,以及向應(yīng)用服務(wù)器13返回操作結(jié)果信息,由應(yīng)用服務(wù)器13向用戶(hù)提供該操作結(jié)果信息。
[0025]圖2是根據(jù)本發(fā)明實(shí)施例的構(gòu)建緩存樹(shù)的流程的示意圖。如圖2所示,構(gòu)建緩存樹(shù)可以采用如下流程:
[0026]步驟S21:確定數(shù)據(jù)操作請(qǐng)求指定的數(shù)據(jù)對(duì)應(yīng)的根節(jié)點(diǎn),將該根節(jié)點(diǎn)保存到棧中。
[0027]步驟S22:判斷棧是否為空。若不為空,則進(jìn)入步驟S23,若為空,則表明緩存樹(shù)已建立完畢,停止該流程,并可在根節(jié)點(diǎn)中保存用戶(hù)的用戶(hù)標(biāo)識(shí)。
[0028]步驟S23:棧頂節(jié)點(diǎn)出棧。
[0029]步驟S24:判斷出棧的節(jié)點(diǎn)是否為葉節(jié)點(diǎn),若是,則返回所述步驟S22,否則進(jìn)入步驟 S25。
[0030]步驟S25:根據(jù)文件或文件夾與該文件或文件夾的父目錄之間的關(guān)系信息,在關(guān)系數(shù)據(jù)庫(kù)中獲取步驟S23中出棧的節(jié)點(diǎn)的所有子節(jié)點(diǎn),將這些子節(jié)點(diǎn)保存到緩存樹(shù)中的步驟S23中出棧的節(jié)點(diǎn)下,并且將這些子節(jié)點(diǎn)保存到棧中,然后返回步驟S22。
[0031]在第一次執(zhí)行到步驟S22時(shí),因?yàn)楦?jié)點(diǎn)在棧中,因此棧為非空。因?yàn)闂5南热牒蟪龅奶攸c(diǎn),因此后入棧的節(jié)點(diǎn)及其子節(jié)點(diǎn)會(huì)先存在于緩存樹(shù)中。例如根節(jié)點(diǎn)A下有子節(jié)點(diǎn)
B、C、D,其中節(jié)點(diǎn)D有子節(jié)點(diǎn)D1、D2,并且節(jié)點(diǎn)D1、D2無(wú)子節(jié)點(diǎn),即它們?yōu)槿~節(jié)點(diǎn),數(shù)據(jù)操作請(qǐng)求指定的數(shù)據(jù)在節(jié)點(diǎn)Dl中,則在步驟S21中確定出根節(jié)點(diǎn)A,在步驟S25中節(jié)點(diǎn)D最后入棧,返回步驟S23后節(jié)點(diǎn)D出棧;在步驟S25處理節(jié)點(diǎn)D的子節(jié)點(diǎn)D1、D2,然后處理節(jié)點(diǎn)C,此時(shí)節(jié)點(diǎn)D、Dl、D2都已存在于緩存樹(shù)中。
[0032]在形成了緩存樹(shù)的情況下,查找節(jié)點(diǎn)變得相當(dāng)容易。仍以根節(jié)點(diǎn)A下有子節(jié)點(diǎn)B、
C、D,其中節(jié)點(diǎn)D有子節(jié)點(diǎn)Dl、D2的情形為例,找到用戶(hù)標(biāo)識(shí)所在的根節(jié)點(diǎn),即根節(jié)點(diǎn)A,然后獲取根節(jié)點(diǎn)A的所有子節(jié)點(diǎn)B、C、D,再在節(jié)點(diǎn)B、C、D下查找子節(jié)點(diǎn),最終在節(jié)點(diǎn)D下找到子節(jié)點(diǎn)D1。對(duì)子節(jié)點(diǎn)Dl進(jìn)行操作后可以保存該操作的時(shí)間戳,以供一致性驗(yàn)證之用。
[0033]圖3是根據(jù)本發(fā)明實(shí)施例的提供數(shù)據(jù)的系統(tǒng)的主要模塊的示意圖。如圖3所示,提供數(shù)據(jù)的系統(tǒng)30主要包括定位模塊31、緩存樹(shù)構(gòu)建模塊32、以及提供模塊33。其中定位模塊31可設(shè)置在應(yīng)用服務(wù)器13中,緩存樹(shù)構(gòu)建模塊32和提供模塊33可設(shè)置在緩存服務(wù)器集群16中的各個(gè)緩存服務(wù)器中。
[0034]定位模塊31用于在收到用戶(hù)的數(shù)據(jù)操作請(qǐng)求后,在分布式緩存系統(tǒng)中定位第一緩存服務(wù)器;緩存樹(shù)構(gòu)建模塊32用于根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件或文件夾與其父目錄之間的關(guān)系信息,在自身的內(nèi)存中構(gòu)建緩存樹(shù),該緩存樹(shù)以樹(shù)狀結(jié)構(gòu)保存該數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求指定的數(shù)據(jù)所對(duì)應(yīng)的根節(jié)點(diǎn)下的數(shù)據(jù);提供模塊33用于定位該緩存樹(shù)中保存該數(shù)據(jù)操作請(qǐng)求所指定的數(shù)據(jù)所在的節(jié)點(diǎn),然后對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作并將操作結(jié)果返回給用戶(hù)。
[0035]緩存樹(shù)構(gòu)建模塊32還可用于根據(jù)圖2所示流程構(gòu)建緩存樹(shù);還可用于對(duì)緩存樹(shù)中的節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行讀/寫(xiě),或者刪除該節(jié)點(diǎn)中的數(shù)據(jù),或者對(duì)該節(jié)點(diǎn)新增一個(gè)子節(jié)點(diǎn),或者對(duì)該節(jié)點(diǎn)進(jìn)行重命名,或者移動(dòng)該節(jié)點(diǎn);另外還可以用于在緩存樹(shù)的根節(jié)點(diǎn)中保存用戶(hù)的用戶(hù)標(biāo)識(shí)。
[0036]提供數(shù)據(jù)的系統(tǒng)30還可以包括時(shí)間戳模塊(圖中未示出),用于保存對(duì)緩存樹(shù)中的節(jié)點(diǎn)進(jìn)行操作的時(shí)間戳。時(shí)間戳模塊可設(shè)置在一致性控制服務(wù)器15中。
[0037]根據(jù)本發(fā)明實(shí)施例的技術(shù)方案,根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件在緩存服務(wù)器中構(gòu)建緩存樹(shù),對(duì)緩存樹(shù)中的節(jié)點(diǎn)的數(shù)據(jù)進(jìn)行操作,由于緩存的讀寫(xiě)具有速度較快的特點(diǎn),因此提高了操作樹(shù)狀結(jié)構(gòu)的數(shù)據(jù)的效率。另外,因?yàn)橛脩?hù)在登錄后的操作通常會(huì)涉及一個(gè)根節(jié)點(diǎn)下的多個(gè)節(jié)點(diǎn),而構(gòu)建的緩存樹(shù)包含了這些節(jié)點(diǎn),所以在緩存樹(shù)已被構(gòu)建的情況下能大幅提高用戶(hù)操作多個(gè)節(jié)點(diǎn)中的數(shù)據(jù)的效率。
[0038]以上結(jié)合具體實(shí)施例描述了本發(fā)明的基本原理,但是,需要指出的是,對(duì)本領(lǐng)域的普通技術(shù)人員而言,能夠理解本發(fā)明的方法和設(shè)備的全部或者任何步驟或者部件,可以在任何計(jì)算裝置(包括處理器、存儲(chǔ)介質(zhì)等)或者計(jì)算裝置的網(wǎng)絡(luò)中,以硬件、固件、軟件或者它們的組合加以實(shí)現(xiàn),這是本領(lǐng)域普通技術(shù)人員在閱讀了本發(fā)明的說(shuō)明的情況下運(yùn)用他們的基本編程技能就能實(shí)現(xiàn)的。
[0039]因此,本發(fā)明的目的還可以通過(guò)在任何計(jì)算裝置上運(yùn)行一個(gè)程序或者一組程序來(lái)實(shí)現(xiàn)。所述計(jì)算裝置可以是公知的通用裝置。因此,本發(fā)明的目的也可以?xún)H僅通過(guò)提供包含實(shí)現(xiàn)所述方法或者裝置的程序代碼的程序產(chǎn)品來(lái)實(shí)現(xiàn)。也就是說(shuō),這樣的程序產(chǎn)品也構(gòu)成本發(fā)明,并且存儲(chǔ)有這樣的程序產(chǎn)品的存儲(chǔ)介質(zhì)也構(gòu)成本發(fā)明。顯然,所述存儲(chǔ)介質(zhì)可以是任何公知的存儲(chǔ)介質(zhì)或者將來(lái)開(kāi)發(fā)出的任何存儲(chǔ)介質(zhì)。
[0040]還需要指出的是,在本發(fā)明的裝置和方法中,顯然,各部件或各步驟是可以分解和/或重新組合的。這些分解和/或重新組合應(yīng)視為本發(fā)明的等效方案。并且,執(zhí)行上述系列處理的步驟可以自然地按照說(shuō)明的順序按時(shí)間順序執(zhí)行,但是并不需要一定按照時(shí)間順序執(zhí)行。某些步驟可以并行或彼此獨(dú)立地執(zhí)行。
[0041]上述【具體實(shí)施方式】,并不構(gòu)成對(duì)本發(fā)明保護(hù)范圍的限制。本領(lǐng)域技術(shù)人員應(yīng)該明白的是,取決于設(shè)計(jì)要求和其他因素,可以發(fā)生各種各樣的修改、組合、子組合和替代。任何在本發(fā)明的精神和原則之內(nèi)所作的修改、等同替換和改進(jìn)等,均應(yīng)包含在本發(fā)明保護(hù)范圍之內(nèi)。
【權(quán)利要求】
1.一種操作數(shù)據(jù)的方法,其特征在于,包括: 在收到用戶(hù)的數(shù)據(jù)操作請(qǐng)求后,在分布式緩存系統(tǒng)中定位第一緩存服務(wù)器; 所述第一緩存服務(wù)器根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件或文件夾與其父目錄之間的關(guān)系信息,在自身的內(nèi)存中構(gòu)建緩存樹(shù),該緩存樹(shù)以樹(shù)狀結(jié)構(gòu)保存所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求指定的數(shù)據(jù)所對(duì)應(yīng)的根節(jié)點(diǎn)下的數(shù)據(jù); 定位所述緩存樹(shù)中保存所述數(shù)據(jù)操作請(qǐng)求所指定的數(shù)據(jù)所在的節(jié)點(diǎn),然后對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作并將操作結(jié)果返回給用戶(hù)。
2.根據(jù)權(quán)利要求1所述的操作數(shù)據(jù)的方法,其特征在于,所述在自身的內(nèi)存中構(gòu)建緩存樹(shù)的流程包括: 步驟A:確定所述數(shù)據(jù)操作請(qǐng)求指定的數(shù)據(jù)對(duì)應(yīng)的根節(jié)點(diǎn),將該根節(jié)點(diǎn)保存到棧中; 步驟B:判斷所述棧是否為空,若是,則停止所述流程,否則進(jìn)入步驟C ; 步驟C:將棧頂節(jié)點(diǎn)出棧; 步驟D:判斷出棧的節(jié)點(diǎn)是否為葉節(jié)點(diǎn),若是,則返回所述步驟B,否則進(jìn)入步驟E ;步驟E:根據(jù)所述關(guān)系信息在所述關(guān)系數(shù)據(jù)庫(kù)中獲取步驟C中出棧的節(jié)點(diǎn)的所有子節(jié)點(diǎn),將這些子節(jié)點(diǎn)保存到緩存樹(shù)中的所述步驟C中出棧的節(jié)點(diǎn)下,并且將這些子節(jié)點(diǎn)保存到所述棧中,然后返回所述步驟B。
3.根據(jù)權(quán)利要求1所述的操作數(shù)據(jù)的方法,其特征在于,所述對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作的步驟包括:對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行讀/寫(xiě),或者刪除該節(jié)點(diǎn)中的數(shù)據(jù),或者對(duì)該節(jié)點(diǎn)新增一個(gè)子節(jié)點(diǎn),或者對(duì)該節(jié)點(diǎn)進(jìn)行重命名,或者移動(dòng)該節(jié)點(diǎn)。
4.根據(jù)權(quán)利要求3所述的操作數(shù)據(jù)的方法,其特征在于,還包括保存對(duì)所述緩存樹(shù)中的節(jié)點(diǎn)進(jìn)行操作的時(shí)間戳。
5.根據(jù)權(quán)利要求1至4中任一項(xiàng)所述的操作數(shù)據(jù)的方法,其特征在于,在自身的內(nèi)存中構(gòu)建緩存樹(shù)的步驟之后,還包括:在所述緩存樹(shù)的根節(jié)點(diǎn)中保存所述用戶(hù)的用戶(hù)標(biāo)識(shí)。
6.一種提供數(shù)據(jù)的系統(tǒng),其特征在于,包括: 定位模塊,用于在收到用戶(hù)的數(shù)據(jù)操作請(qǐng)求后,在分布式緩存系統(tǒng)中定位第一緩存服務(wù)器; 緩存樹(shù)構(gòu)建模塊,用于根據(jù)關(guān)系數(shù)據(jù)庫(kù)中的文件或文件夾與其父目錄之間的關(guān)系信息,在自身的內(nèi)存中構(gòu)建緩存樹(shù),該緩存樹(shù)以樹(shù)狀結(jié)構(gòu)保存所述數(shù)據(jù)訪(fǎng)問(wèn)請(qǐng)求指定的數(shù)據(jù)所對(duì)應(yīng)的根節(jié)點(diǎn)下的數(shù)據(jù); 提供模塊,用于定位所述緩存樹(shù)中保存所述數(shù)據(jù)操作請(qǐng)求所指定的數(shù)據(jù)所在的節(jié)點(diǎn),然后對(duì)該節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行操作并將操作結(jié)果返回給用戶(hù)。
7.根據(jù)權(quán)利要求6所述的提供數(shù)據(jù)的系統(tǒng),其特征在于,所述緩存樹(shù)構(gòu)建模塊還用于根據(jù)如下流程構(gòu)建緩存樹(shù): 步驟A:確定所述數(shù)據(jù)操作請(qǐng)求指定的數(shù)據(jù)對(duì)應(yīng)的根節(jié)點(diǎn),將該根節(jié)點(diǎn)保存到棧中; 步驟B:判斷所述棧是否為空,若是,則停止所述流程,否則進(jìn)入步驟C ; 步驟C:將棧頂節(jié)點(diǎn)出棧;步驟D:判斷出棧的節(jié)點(diǎn)是否為葉節(jié)點(diǎn),若是,則返回所述步驟B,否則進(jìn)入步驟E ;步驟E:根據(jù)所述關(guān)系信息在所述關(guān)系數(shù)據(jù)庫(kù)中獲取步驟C中出棧的節(jié)點(diǎn)的所有子節(jié)點(diǎn),將這些子節(jié)點(diǎn)保存到緩存樹(shù)中的所述步驟C中出棧的節(jié)點(diǎn)下,并且將這些子節(jié)點(diǎn)保存到所述棧中,然后返回所述步驟B。
8.根據(jù)權(quán)利要求6所述的提供數(shù)據(jù)的系統(tǒng),其特征在于,所述緩存樹(shù)構(gòu)建模塊還用于:對(duì)所述緩存樹(shù)中的節(jié)點(diǎn)中的數(shù)據(jù)進(jìn)行讀/寫(xiě),或者刪除該節(jié)點(diǎn)中的數(shù)據(jù),或者對(duì)該節(jié)點(diǎn)新增一個(gè)子節(jié)點(diǎn),或者對(duì)該節(jié)點(diǎn)進(jìn)行重命名,或者移動(dòng)該節(jié)點(diǎn)。
9.根據(jù)權(quán)利要求8所述的提供數(shù)據(jù)的系統(tǒng),其特征在于,還包括時(shí)間戳模塊,用于保存對(duì)所述緩存樹(shù)中的節(jié)點(diǎn)進(jìn)行操作的時(shí)間戳。
10.根據(jù)權(quán)利要求6至9中任一項(xiàng)所述的提供數(shù)據(jù)的系統(tǒng),其特征在于,所述緩存樹(shù)構(gòu)建模塊還 用于在所述緩存樹(shù)的根節(jié)點(diǎn)中保存所述用戶(hù)的用戶(hù)標(biāo)識(shí)。
【文檔編號(hào)】G06F17/30GK103617199SQ201310567862
【公開(kāi)日】2014年3月5日 申請(qǐng)日期:2013年11月13日 優(yōu)先權(quán)日:2013年11月13日
【發(fā)明者】肖羊, 李新榮, 柳劉, 梁熹 申請(qǐng)人:北京京東尚科信息技術(shù)有限公司, 北京京東世紀(jì)貿(mào)易有限公司