用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的方法和系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及一種維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的方法和系統(tǒng)。
【背景技術(shù)】
[0002] 目前,在許多系統(tǒng)中以樹形結(jié)構(gòu)的目錄關(guān)系來管理系統(tǒng)中的文件。
[0003] 例如在用于團(tuán)隊(duì)協(xié)作系統(tǒng)的電子看板系統(tǒng)中,對(duì)看板的文件管理是其不可或缺的 一部分,且這些文件一般都隸屬于一個(gè)虛擬目錄樹,樹的結(jié)構(gòu)是具有樹形結(jié)構(gòu)的二維模型。 樹形結(jié)構(gòu)的目錄能夠讓看板實(shí)踐者能更清晰的瀏覽目錄結(jié)構(gòu)及管理葉子文件,也便于看板 對(duì)應(yīng)的團(tuán)隊(duì)成員實(shí)時(shí)掌握看板的文件匯總數(shù)據(jù)。
[0004] 傳統(tǒng)的基于樹形結(jié)構(gòu)的目錄關(guān)系維護(hù)方法采用異步定時(shí)刷新或同步實(shí)時(shí)更新關(guān) 聯(lián)的節(jié)點(diǎn)數(shù)據(jù)。
[0005] 異步定時(shí)刷新過程如下:外部或內(nèi)部條件導(dǎo)致節(jié)點(diǎn)數(shù)據(jù)變更(增刪改),記錄變更 歷史;定時(shí)任務(wù)啟動(dòng),根據(jù)時(shí)間讀取并遍歷歷史記錄;根據(jù)歷史記錄遞歸查詢與其關(guān)聯(lián)的 整棵樹,然后從下往上計(jì)算父節(jié)點(diǎn)列數(shù)據(jù)(總大小、節(jié)點(diǎn)數(shù)、按類型匯總數(shù)據(jù)等),并批量更 新;清除變更的歷史記錄;進(jìn)入下一次定時(shí)任務(wù)。
[0006] 然而,異步定時(shí)刷新降低了虛擬目錄樹數(shù)據(jù)的實(shí)時(shí)性,并且遞歸查詢與變更節(jié)點(diǎn) 有關(guān)聯(lián)的整棵樹,從而增加了 10交互次數(shù)與網(wǎng)絡(luò)帶寬占用率。
[0007] 另一方面,同步實(shí)時(shí)更新在并發(fā)量大時(shí)會(huì)出現(xiàn)短時(shí)間內(nèi)重復(fù)更新相同父節(jié)點(diǎn)的情 況,并增加行鎖的概率,影響整個(gè)系統(tǒng)的性能,并且需考慮分布式鎖從而成本高且會(huì)造成數(shù) 據(jù)的不一致性。
[0008] 因此,期望提供一種改進(jìn)的用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的方法和系統(tǒng)。
【發(fā)明內(nèi)容】
[0009] 為了解決現(xiàn)有技術(shù)中的上述缺點(diǎn)和問題中的至少一個(gè)而提出本發(fā)明?;诂F(xiàn)有 技術(shù)存在的缺點(diǎn),本發(fā)明提供了一種改進(jìn)的用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的方法和系 統(tǒng)。
[0010] 根據(jù)本發(fā)明的方法和系統(tǒng)使用集中緩存存儲(chǔ)變更標(biāo)志,便于在輪詢?nèi)蝿?wù)檢測到變 更時(shí),過濾掉重復(fù)的變更信息(提升了CPU的效率),根據(jù)去重后的變更節(jié)點(diǎn)依次執(zhí)行,避 免了多實(shí)例導(dǎo)致數(shù)據(jù)的不一致性問題;輪詢?nèi)蝿?wù)一旦檢測到變更就立即進(jìn)行計(jì)算,保證了 數(shù)據(jù)的實(shí)時(shí)性;此外,在本發(fā)明中,被設(shè)計(jì)為存在多個(gè)實(shí)際的根節(jié)點(diǎn),縮小了查詢樹的范圍, 提升網(wǎng)絡(luò)吞吐量,且每條任務(wù)數(shù)據(jù)都增加了對(duì)應(yīng)根節(jié)點(diǎn)的冗余,大大減少了查詢時(shí)的10次 數(shù),提升了性能。
[0011] 根據(jù)一個(gè)方面,本發(fā)明提出了一種用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的系統(tǒng),包 括:
[0012] 變更檢測單元,用于接收來自外部或內(nèi)部的變更請(qǐng)求,并根據(jù)變更請(qǐng)求來設(shè)置變 更標(biāo)志和記錄與變更請(qǐng)求相關(guān)的變更信息;
[0013] 輪詢?nèi)蝿?wù)單元,用于以預(yù)定時(shí)間間隔來輪詢變更標(biāo)志;
[0014] 查詢及樹組裝單元,用于根據(jù)變更信息來在對(duì)變更信息去重之后組裝樹形結(jié)構(gòu); 以及
[0015] 計(jì)算單元,用于根據(jù)所述查詢及樹組裝單元組裝的樹形結(jié)構(gòu)來生成目錄樹。
[0016] 可選地,所述變更信息包括與所述變更請(qǐng)求相關(guān)的節(jié)點(diǎn)的ID或標(biāo)識(shí)、父節(jié)點(diǎn)的ID 或標(biāo)識(shí)、變更時(shí)間中的一個(gè)或多個(gè)。
[0017] 可選地,所述變更檢測單元在設(shè)置變更標(biāo)記的同時(shí)繼續(xù)執(zhí)行主業(yè)務(wù)邏輯。
[0018] 可選地,當(dāng)所述變更標(biāo)志指示節(jié)點(diǎn)未變更時(shí),所述輪詢?nèi)蝿?wù)單元確定所述查詢及 樹組裝單元是否已超時(shí)未執(zhí)行,如果是則喚醒所述查詢及樹組裝單元。
[0019] 可選地,所述查詢及樹組裝單元按時(shí)間倒序來查詢變更信息,并根據(jù)父節(jié)點(diǎn)ID或 標(biāo)識(shí)去重。
[0020] 可選地,所述查詢及樹組裝單元進(jìn)一步根據(jù)去重后的變更信息來查詢與變更信息 對(duì)應(yīng)的整個(gè)目錄樹。
[0021] 可選地,所述查詢及樹組裝單元進(jìn)一步根據(jù)所查詢出的節(jié)點(diǎn)列表通過預(yù)定算法來 組裝樹形結(jié)構(gòu)。
[0022] 可選地,所述計(jì)算單元采用從下而上的方法遞歸匯總數(shù)據(jù)到每個(gè)父節(jié)點(diǎn),直到遞 歸到根節(jié)點(diǎn)為止。
[0023] 可選地,所述匯總數(shù)據(jù)至少包括大小、葉子節(jié)點(diǎn)數(shù)、按類型匯總數(shù)據(jù)中的至少一 個(gè)。
[0024] 根據(jù)另一個(gè)方面,本發(fā)明提出了一種用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的方法, 包括:
[0025] 接收并攔截對(duì)樹形結(jié)構(gòu)的目錄的變更請(qǐng)求;
[0026] 設(shè)置變更標(biāo)志以指示節(jié)點(diǎn)是否已變更,并記錄與變更請(qǐng)求相關(guān)的變更信息;
[0027] 以預(yù)定時(shí)間間隔來輪詢變更標(biāo)志;
[0028] 當(dāng)確定節(jié)點(diǎn)已變更時(shí),根據(jù)變更信息來在對(duì)變更信息去重之后組裝樹形結(jié)構(gòu);以 及
[0029] 根據(jù)組裝的樹形結(jié)構(gòu)來生成目錄樹。
[0030] 可選地,所述變更信息包括與所述變更請(qǐng)求相關(guān)的節(jié)點(diǎn)的ID或標(biāo)識(shí)、父節(jié)點(diǎn)的ID 或標(biāo)識(shí)、變更時(shí)間中的一個(gè)或多個(gè)。
[0031] 可選地,在設(shè)置所述變更標(biāo)記的同時(shí)繼續(xù)執(zhí)行主業(yè)務(wù)邏輯。
[0032] 可選地,所述方法進(jìn)一步包括:當(dāng)確定節(jié)點(diǎn)未變更時(shí),確定是否已超時(shí)未執(zhí)行組裝 樹形結(jié)構(gòu)任務(wù);并且如果是的話,則自動(dòng)調(diào)用組裝樹形結(jié)構(gòu)任務(wù)。
[0033] 可選地,根據(jù)變更信息來在對(duì)變更信息去重之后組裝樹形結(jié)構(gòu)包括按時(shí)間倒序來 查詢變更信息,并根據(jù)父節(jié)點(diǎn)ID或標(biāo)識(shí)去重。
[0034] 可選地,根據(jù)變更信息來在對(duì)變更信息去重之后組裝樹形結(jié)構(gòu)進(jìn)一步包括根據(jù)去 重后的變更信息來查詢與變更信息對(duì)應(yīng)的整個(gè)目錄樹。
[0035] 可選地,根據(jù)變更信息來在對(duì)變更信息去重之后組裝樹形結(jié)構(gòu)進(jìn)一步包括根據(jù)所 查詢出的節(jié)點(diǎn)列表通過預(yù)定算法來組裝樹形結(jié)構(gòu)。
[0036] 可選地,采用從下而上的方法遞歸匯總數(shù)據(jù)到每個(gè)父節(jié)點(diǎn),直到遞歸到根節(jié)點(diǎn)為 止。
[0037] 可選地,所述匯總數(shù)據(jù)至少包括大小、葉子節(jié)點(diǎn)數(shù)、按類型匯總數(shù)據(jù)中的至少一 個(gè)。
【附圖說明】
[0038] 通過下面結(jié)合附圖進(jìn)行的描述,本發(fā)明一些示范性實(shí)施例的上述和其他方面、特 征和優(yōu)點(diǎn)對(duì)于本領(lǐng)域技術(shù)人員來說將變得顯而易見,其中:
[0039]圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的系統(tǒng)的 不意圖;以及
[0040] 圖2是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的方法的 流程圖。
【具體實(shí)施方式】
[0041] 提供參考附圖的下面描述以幫助全面理解本發(fā)明的示范性實(shí)施例。其包括各種細(xì) 節(jié)以助于理解,而應(yīng)當(dāng)將它們認(rèn)為僅僅是示范性的。因此,本領(lǐng)域普通技術(shù)人員應(yīng)當(dāng)認(rèn)識(shí) 到,可以對(duì)這里描述的實(shí)施例做出各種改變和修改,而不會(huì)背離本發(fā)明的范圍和精神。同 樣,為了清楚和簡明,省略了對(duì)公知功能和結(jié)構(gòu)的描述。
[0042]圖1是根據(jù)本發(fā)明的一個(gè)實(shí)施例的用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的系統(tǒng)的 框圖。
[0043] 如圖1中所示,根據(jù)本發(fā)明的用于維護(hù)基于樹形結(jié)構(gòu)的目錄關(guān)系的系統(tǒng)包括變更 檢測單元110、輪詢?nèi)蝿?wù)單元120、查詢及樹組裝單元130、計(jì)算單元140。
[0044] 變更檢測單元110用于接收來自外部或內(nèi)部的變更請(qǐng)求,并根據(jù)變更請(qǐng)