專利名稱:輕量級(jí)目錄訪問協(xié)議(ldap)沖突檢測(cè)機(jī)制和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及LDAP沖突檢測(cè)機(jī)制和方法,用于允許LDAP客戶端檢測(cè)和避免LDAP目 錄內(nèi)的條目上的更新操作沖突。
背景技術(shù):
由此定義了以下縮寫,這些縮寫中的至少一些在現(xiàn)有技術(shù)和本發(fā)明的以下描述中 提及。AAA認(rèn)證、授權(quán)和計(jì)費(fèi)CAS客戶管理系統(tǒng)⑶C沖突檢測(cè)計(jì)數(shù)器CS 電路交換DIT 目錄信息樹DN 區(qū)別名FE 前端EMA Ericsson 多次激活GSM全球移動(dòng)通信系統(tǒng)HLR歸屬位置寄存器HSS歸屬訂戶服務(wù)器IT 信息技術(shù)LDAP輕量級(jí)目錄訪問協(xié)議MAP移動(dòng)應(yīng)用部分NDC要檢測(cè)的沖突的數(shù)目PS分組交換在通信領(lǐng)域中,目前的訂戶數(shù)據(jù)庫架構(gòu)正面臨著主流IT技術(shù)的即將出現(xiàn)的架構(gòu) 的挑戰(zhàn),在該即將出現(xiàn)的架構(gòu)中,將訂戶數(shù)據(jù)保存在與提供特定服務(wù)的節(jié)點(diǎn)分離的一個(gè)或 多個(gè)數(shù)據(jù)庫中。該方式稱作多層架構(gòu),圖1示出了示意圖,該示意圖以圖解方式示出了在無 線電信通信領(lǐng)域中使用的這種類型的架構(gòu)。參照?qǐng)D1,示出了通信網(wǎng)絡(luò)100,通信網(wǎng)絡(luò)100具有包括HSS FE102和置備FE 104 在內(nèi)的IMS網(wǎng)絡(luò)101以及包括HLR/AuC FE 108和AAA FE 110在內(nèi)的CS/PS核心網(wǎng)106。 HSS FE 102、置備FE 104,HLR/AuC FE 108和AAA FE 110都與集中式數(shù)據(jù)庫112進(jìn)行接口 連接,集中式數(shù)據(jù)庫112可以耦合至EMA 114(例如訂戶置備設(shè)備),EMA 114進(jìn)而耦合至傳 統(tǒng)CAS 116。IMS網(wǎng)絡(luò)101和CS/PS核心網(wǎng)106等等包括比這里示出的組件更多的組件,然而為了清楚起見,這里僅描述了與本討論相關(guān)的組件。該多層架構(gòu)提供了若干優(yōu)點(diǎn),當(dāng)傳統(tǒng)移動(dòng)通信網(wǎng)絡(luò)相比時(shí),這些優(yōu)勢(shì)中最小的并 不是在服務(wù)邏輯層中有價(jià)格更低廉的可縮放性,或者合并訂戶數(shù)據(jù)以使得訂戶管理更容易 且更便宜的能力。在該多層架構(gòu)中,傳統(tǒng)的整體節(jié)點(diǎn)(同時(shí)包括數(shù)據(jù)和處理邏輯)(例如 HSS、HLR 禾口 AAA)已演進(jìn)為處理前端(FE)(例如 HSS FE 102、置備 FE 104、HLR/AuC FE 108 和AAA FE 110),而數(shù)據(jù)現(xiàn)在駐留于集中式數(shù)據(jù)庫112中或駐留于上述前端102、104、108和 110可訪問的分布式數(shù)據(jù)庫中。在該多層架構(gòu)中,HLR/AuC FE 108 (例如)在從CS/PS核心網(wǎng)106接收到某外部 事件(即MAP消息)之后,必須從集中式數(shù)據(jù)庫112讀取訂戶相關(guān)數(shù)據(jù),根據(jù)從CS/PS核心 網(wǎng)106接收到的數(shù)據(jù)來處理該所讀取的數(shù)據(jù),并且根據(jù)該內(nèi)部處理的結(jié)果,HLR/AuC FE 108 可能想要修改當(dāng)前存儲(chǔ)在集中式數(shù)據(jù)庫112內(nèi)的訂戶相關(guān)數(shù)據(jù)。以下參照?qǐng)D2(現(xiàn)有技術(shù)) 提供了關(guān)于該過程的詳細(xì)解釋,在圖2中,集中式數(shù)據(jù)庫112是LDAP目錄112,HLR/AuC FE 108是LDAP客戶端108。參照?qǐng)D2 (現(xiàn)有技術(shù)),其中的信號(hào)流圖示出了傳統(tǒng)LDAP客戶端108如何從傳統(tǒng) LDAP目錄112(或LDAP服務(wù)器112)中的條目讀取數(shù)據(jù)202,以及然后如何修改存儲(chǔ)在傳統(tǒng) LDAP目錄112的條目?jī)?nèi)的數(shù)據(jù)202。與客戶端108讀取然后修改數(shù)據(jù)相關(guān)聯(lián)的步驟如下 la-lb.出于任何目的,從客戶端108感興趣的LDAP目錄112中的條目讀取一些數(shù)據(jù)202。 這需要客戶端108就愛你個(gè)一個(gè)LDAP搜索請(qǐng)求(SearchRequest)操作發(fā)送至LDAP目錄 112 (步驟la)。然后,LDAP服務(wù)器112使用一個(gè)或多個(gè)LDAP搜索響應(yīng)(SearchResponse) 應(yīng)答來發(fā)送來自條目的數(shù)據(jù)202的拷貝。2.客戶端108可以使用應(yīng)用邏輯,出于以下任何目的,處理所讀取的數(shù)據(jù)202: 例如,提取信息、處理與一些其它內(nèi)部數(shù)據(jù)相對(duì)的所讀取的數(shù)據(jù)、將所讀取的數(shù)據(jù)發(fā)送至 另一節(jié)點(diǎn)/過程、打印一些結(jié)果、估計(jì)一些條件……。在這種情況下,客戶端108已更新 數(shù)據(jù)202’。3a-3b.客戶端108想要對(duì)在LDAP目錄112處先前讀取的條目中保存的數(shù) 據(jù)202執(zhí)行一些更新。這需要客戶端108將具有更新后數(shù)據(jù)202’的一個(gè)LDAP修改請(qǐng)求 (ModifyRequest)操作發(fā)送至LDAP目錄112(步驟3a)(注意被請(qǐng)求更新的每個(gè)目錄條目 將需要一個(gè)LDAP修改請(qǐng)求操作)。LDAP目錄112將條目更新為具有數(shù)據(jù)202’,并在LDAP 修改響應(yīng)(ModifyResponse)(結(jié)果成功)操作中向客戶端108發(fā)送成功消息(步驟3b)。 單一 LDAP修改操作僅適用于目標(biāo)條目,但可以包含與在該特定條目中保存的屬性類型的 集合上期望的一樣多的修改操作(添加/刪除/替換)。不幸的是,如果存在多于一個(gè)LDAP客戶端或同時(shí)存在LDAP客戶端102和108 (例 如)可與LDAP目錄112進(jìn)行接口連接,則可能出現(xiàn)圖3(現(xiàn)有技術(shù))所示的有問題的情形, 其中,LDAP客戶端102 (客戶端2)超越LDAP客戶端108 (客戶端1)先前讀取了的、但LDAP 客戶端108(客戶端1)尚未修改的數(shù)據(jù)202。步驟如下1a.客戶端1請(qǐng)求從LDAP目錄112 讀取一些數(shù)據(jù)202。該消息可以是讀取任何量的數(shù)據(jù)的請(qǐng)求,并且任何標(biāo)準(zhǔn)LDAP SEARCH可 以適用且用于請(qǐng)求數(shù)據(jù)202。lb.客戶端1從LDAP目錄112接收所請(qǐng)求的數(shù)據(jù)202。這可以通過一個(gè)或多個(gè)LDAP消息(LDAP搜索結(jié)果條目)來完成,該LDAP消息包括指示所有請(qǐng)求的信息已被發(fā)送的 消息(LDAP搜索結(jié)果完成)。此時(shí),客戶端1可以花一些時(shí)間,出于以下任何目的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所讀取的內(nèi) 容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端1已更新數(shù)據(jù)202’。2a.客戶端2請(qǐng)求從LDAP目錄112讀取一些數(shù)據(jù)202。該讀取消息可以請(qǐng)求與前 述相同的數(shù)據(jù)、或先前讀取的數(shù)據(jù)的一部分、或LDAP目錄112內(nèi)的任何其它數(shù)據(jù)。在本示 例中,假定客戶端2請(qǐng)求了在步驟Ib讀取的相同數(shù)據(jù)202的至少一部分。2b.客戶端2從LDAP目錄112接收所請(qǐng)求的數(shù)據(jù)202。這可以通過一個(gè)或多個(gè) LDAP消息(LDAP搜索結(jié)果條目)來完成,該LDAP消息包括指示所有請(qǐng)求的信息已被發(fā)送的 消息(LDAP搜索結(jié)果完成)。然后,客戶端2執(zhí)行任何所需的處理和邏輯,該執(zhí)行操作使用 或不使用針對(duì)這種目的而讀取的數(shù)據(jù)。在這種情況下,客戶端2已更新數(shù)據(jù)202”。3a.客戶端2請(qǐng)求對(duì)客戶端1先前讀取的數(shù)據(jù)202中的一些(至少一個(gè)屬性)或 全部進(jìn)行修改。3b.客戶端2的修改請(qǐng)求成功。該修改成功執(zhí)行,這是由于LDAP目錄112沒有任 何不允許該修改的理由/信息。4a.客戶端1請(qǐng)求對(duì)先前讀取的數(shù)據(jù)202進(jìn)行修改。具體地,客戶端1請(qǐng)求修改客 戶端2在先前步驟3b期間可能已全部或部分超越的先前讀取數(shù)據(jù)202的一個(gè)或多個(gè)屬性。4b.客戶端1的修改請(qǐng)求成功,現(xiàn)在,數(shù)據(jù)202’存儲(chǔ)在LDAP目錄112中。LDAP目 錄112沒有任何不允許對(duì)數(shù)據(jù)的該具體修改的原因或信息。然而,可能發(fā)生的是,基于步驟 Ib處的數(shù)據(jù)狀態(tài),客戶端1所需的一些修改可能不是仍然有效。因此,可能出現(xiàn)一些數(shù)據(jù)不 一致。在這種特定情況下,可以看出,在客戶端1繼續(xù)更新由客戶端1讀取的數(shù)據(jù)之前, 該數(shù)據(jù)已被客戶端2修改。這是不期望的。例如,如果客戶端1執(zhí)行的數(shù)據(jù)更新依賴于“啟 用,,的服務(wù)狀態(tài),則可能發(fā)生的是,客戶端2已將該服務(wù)狀態(tài)修改為“禁用”,這意味著客戶 端1所作的更新將不一定可能發(fā)生。由于錯(cuò)誤的數(shù)據(jù)更新使得這可能以失敗結(jié)束。因此, 如果LDAP客戶端(例如HLR/AuC FE 108)執(zhí)行LDAP搜索,則處理LDAP響應(yīng),然后將修改 (LDAP修改)發(fā)送至LDAP目錄112。那么,如今完全不能確保一旦接收到LDAP修改,相同 條件仍然有效,這是由于在響應(yīng)于來自第一 LDAP客戶端的請(qǐng)求而應(yīng)答了 LDAP搜索的時(shí)刻 之后,另一 LDAP客戶端(例如HSS FFE 102)可能已對(duì)LDAP目錄112執(zhí)行一些修改。這種 情形可能導(dǎo)致數(shù)據(jù)不一致。相應(yīng)地,一直以來,需要克服該具體缺點(diǎn)以及其它缺點(diǎn),本發(fā)明 克服了這些缺點(diǎn)。
發(fā)明內(nèi)容
在一個(gè)方面,本發(fā)明提供了一種目錄以及一種用于在來自多于一個(gè)客戶端前端 (HSS-FF、HLR-FF)的更新操作時(shí)檢測(cè)并避免所述目錄中的條目上的沖突的方法。所述目錄 和方法執(zhí)行以下步驟(a)在所述目錄處,從客戶端前端接收讀取所述目錄中的條目上的 數(shù)據(jù)的請(qǐng)求;(b)在所述目錄處,分配與所述目錄中的所述條目上的所述數(shù)據(jù)的至少一 個(gè) 子集相對(duì)應(yīng)的至少一個(gè)給定的沖突檢測(cè)值;(c)向所述客戶端前端提交所請(qǐng)求的數(shù)據(jù)以及 所述至少一個(gè)給定的沖突檢測(cè)值;(d)在所述目錄處,從所述客戶端前端接收修改所述目 錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求,其中,該請(qǐng)求包括針對(duì)至少一 個(gè)給定的沖突檢測(cè)值中的每一個(gè)的至少一個(gè)更新后的沖突檢測(cè)值;(e)在所述目錄處,確定所述至少一個(gè)更新后的沖突檢測(cè)值是否與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致;(f)如果所述至 少一個(gè)更新后的沖突檢測(cè)值與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致,則向所述客戶端前端提交對(duì)修 改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求的接受,否則,向所述 客戶端前端提交對(duì)該請(qǐng)求的拒絕;以及(g)在發(fā)現(xiàn)該請(qǐng)求可接受的情況下,將當(dāng)前沖突檢 測(cè)值設(shè)置為下一個(gè)值。該方案是期望的,這是由于其防止了數(shù)據(jù)不一致以及因錯(cuò)誤的數(shù)據(jù) 更新而引起的失敗。在另一方面,本發(fā)明提供了一種客戶端前端以及一種用于在來自所述客戶端前端 (HSS-FF、HLR-FF)的更新操作時(shí)檢測(cè)并避免目錄中的條目上的沖突的方法。所述客戶端前 端和方法執(zhí)行以下步驟(a)從客戶端前端提交讀取所述目錄中的條目上的數(shù)據(jù)的請(qǐng)求; (b)在所述客戶端前端處,從所述目錄中的所述條目檢索所請(qǐng)求的數(shù)據(jù),以及與所述數(shù)據(jù)的 至少一個(gè)子集相對(duì)應(yīng)的至少一個(gè)給定的沖突檢測(cè)值;(c)在所述客戶端前端處,處理檢索 到的數(shù)據(jù);(d)從所述客戶端前端發(fā)送修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至 少一個(gè)子集的請(qǐng)求,其中,該請(qǐng)求包括針對(duì)至少一個(gè)給定的沖突檢測(cè)值中的每一個(gè)的至少 一個(gè)更新后的沖突檢測(cè)值;以及(e)如果在所述目錄處所述至少一個(gè)更新后的沖突檢測(cè)值 與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致,則在所述客戶端前端處接收對(duì)修改所述目錄中的所述條目 上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求的接受,否則,在所述客戶端前端處接收對(duì)該請(qǐng) 求的拒絕。該方案是期望的,這是由于其防止了數(shù)據(jù)不一致以及因錯(cuò)誤的數(shù)據(jù)更新而引起 的失敗。在另一方面,本發(fā)明提供了一種用于通過以下步驟來允許客戶端前端檢測(cè)并避免 目錄內(nèi)的條目上的更新操作沖突的系統(tǒng)和方法(a)向目錄發(fā)送啟動(dòng)事務(wù)的請(qǐng)求;(b)從所 述目錄接收包括事務(wù)標(biāo)識(shí)符在內(nèi)的響應(yīng);(c)發(fā)送讀取所述目錄中的所述條目中的數(shù)據(jù)的 請(qǐng)求,其中,該請(qǐng)求還包括所述事務(wù)標(biāo)識(shí)符;(d)從所述目錄接收包括所讀取的數(shù)據(jù)和所述 事務(wù)標(biāo)識(shí)符在內(nèi)的響應(yīng),其中,所述目錄阻止所述條目?jī)?nèi)的數(shù)據(jù)成為正在進(jìn)行的事務(wù)的一 部分,使得其它客戶端不能修改所阻止的數(shù)據(jù);(e)處理所讀取的數(shù)據(jù);(f)發(fā)送修改所述 目錄中的所述條目中的數(shù)據(jù)的請(qǐng)求,其中,該請(qǐng)求包括修改的數(shù)據(jù)和所述事務(wù)標(biāo)識(shí)符,并且 由于存在所述事務(wù)標(biāo)識(shí)符,因此所述目錄執(zhí)行修改數(shù)據(jù)的請(qǐng)求;以及(g)向所述目錄發(fā)送 停止所述事務(wù)的請(qǐng)求。該方案是期望的,這是由于其防止了數(shù)據(jù)不一致以及因錯(cuò)誤的數(shù)據(jù) 更新而引起的失敗。本發(fā)明的附加方面將部分地在以下具體實(shí)施方式
、附圖和任何權(quán)利要求中闡述, 部分地從具體實(shí)施方式
中推導(dǎo)出或者可以通過實(shí)施本發(fā)明來了解到。應(yīng)當(dāng)理解,以上總體 描述和以下具體實(shí)施方式
僅是示例性的和解釋性的,而不是對(duì)所公開的本發(fā)明的限制。
參照與附圖相結(jié)合而作出的以下具體實(shí)施方式
,可以獲得對(duì)本發(fā)明的更全面理 解,附圖中圖1(現(xiàn)有技術(shù))是具有與LDAP數(shù)據(jù)庫進(jìn)行接口連接的多個(gè)LDAP客戶端的通信 網(wǎng)絡(luò)的圖,其用于幫助解釋本發(fā)明解決的沖突問題;圖2(現(xiàn)有技術(shù))是一幅信號(hào)流圖,示出了傳統(tǒng)LDAP客戶端如何從傳統(tǒng)LDAP目錄 中的條目讀取數(shù)據(jù),以及然后如何修改存儲(chǔ)在傳統(tǒng)LDAP目錄內(nèi)的數(shù)據(jù);
圖3 (現(xiàn)有技術(shù))是一幅信號(hào)流圖,示出了當(dāng)一個(gè)LDAP客戶端超越另一 LDAP客戶端先前讀取但尚未修改的數(shù)據(jù)時(shí)如何出現(xiàn)沖突問題;圖4是具有與增強(qiáng)型LDAP數(shù)據(jù)庫進(jìn)行接口連接的多個(gè)增強(qiáng)型LDAP客戶端的通信 網(wǎng)絡(luò)的圖,其用于幫助解釋本發(fā)明解決的沖突問題;圖5-6是信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第一實(shí)施例的沖突檢測(cè)機(jī)制/方 法如何解決沖突問題;圖7是一幅信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第二實(shí)施例的沖突檢測(cè)機(jī)制/ 方法如何解決沖突問題;圖8是一幅信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第三實(shí)施例的沖突檢測(cè)機(jī)制/ 方法如何解決沖突問題;圖9是一幅信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第四實(shí)施例的沖突檢測(cè)機(jī)制/ 方法如何解決沖突問題。
具體實(shí)施例方式參照?qǐng)D4,圖4是示出了示例通信網(wǎng)絡(luò)400的圖,用于幫助解釋可以根據(jù)本發(fā)明如 何增強(qiáng)LDAP客戶端402、404、408和410以及LDAP訂戶數(shù)據(jù)庫412,使得增強(qiáng)型LDAP客戶 端402、404、408和410中的任一個(gè)可以檢測(cè)增強(qiáng)型LDAP數(shù)據(jù)庫412(LDAP目錄412)內(nèi)的目 錄條目上的更新操作沖突。如圖所示,通信網(wǎng)絡(luò)400具有IMS網(wǎng)絡(luò)401,IMS網(wǎng)絡(luò)401包括 增強(qiáng)型LDAP客戶端402和404,分別表示為增強(qiáng)型HSS FE402和增強(qiáng)型置備FE 404。通信 網(wǎng)絡(luò)400還具有CS/PS核心網(wǎng)406,CS/PS核心網(wǎng)406包括增強(qiáng)型LDAP客戶端408和410, 分別表示為增強(qiáng)型HLR/AuC FE 408和增強(qiáng)型AAA FE 410。增強(qiáng)型HSS FE 402、增強(qiáng)型置 備FE 404、增強(qiáng)型HLR/AuC FE 408和增強(qiáng)型AAA FE 410都與增強(qiáng)型集中式LDAP數(shù)據(jù)庫 412 (或上述前端402、404、408和410可訪問的分布式數(shù)據(jù)庫)進(jìn)行接口連接,增強(qiáng)型集中 式LDAP數(shù)據(jù)庫412耦合至EMA 414 (例如,訂戶置備設(shè)備),EMA 414進(jìn)而耦合至CAS 416。 IMS網(wǎng)絡(luò)401和CS/PS核心網(wǎng)406等等包括比這里示出的組件更多的組件,但為了清楚,這 里僅描述了與本討論相關(guān)的組件。如上所示,本發(fā)明涉及一種沖突檢測(cè)機(jī)制/方法,允許LDAP客戶端404 (例如)檢 測(cè)由不同的LDAP客戶端408(例如)在LDAP目錄412內(nèi)的條目上造成的更新操作沖突。 實(shí)際上,這里描述了這種沖突檢測(cè)機(jī)制/方法的四個(gè)不同實(shí)施例,所有這些實(shí)施例都允許 LDAP客戶端檢測(cè)由不同的LDAP客戶端在LDAP目錄內(nèi)的條目上造成的更新操作沖突。接下 來,在圖5-6所示的兩個(gè)信號(hào)流圖的協(xié)助下描述沖突檢測(cè)機(jī)制的第一實(shí)施例。在第一實(shí)施例中,沖突檢測(cè)機(jī)制基于對(duì)LDAP目錄412的每個(gè)條目中的新的多值 INTEGER屬性類型(這里稱作“collision detection counter (沖突檢測(cè)計(jì)數(shù)器)”(CDC)) 進(jìn)行定義,其中,要檢測(cè)同時(shí)存在的LDAP客戶端402、404、408和410之間的沖突。例如,該 新⑶C屬性可以定義為(<assigned_0ID>NAME ‘cdc,DESC 'Collision Detection Counter'SYNTAX ‘1. 3. 6. 1. 4. 1. 1466. 115. 121. 1. 27,
X-ORIGIN ‘Mutex-CDC-Mechanism,)對(duì)于與可以如何在第一位置定義屬性有關(guān)的細(xì)節(jié),參考標(biāo)題為“Lightweight Directory Access Protocol (LDAP) directory InformationMode1sH SJii BJ2006 ip 6月的RFC 4512 (其內(nèi)容以引證的方式并入于此)。該新CDC屬性可以在所期望的結(jié)構(gòu)對(duì)象類(即,用于目錄條目的對(duì)象類)中稱作 “強(qiáng)制”屬性。在這種情況下,每個(gè)目錄條目將屬于一個(gè)結(jié)構(gòu)對(duì)象類且僅屬于一個(gè)結(jié)構(gòu)對(duì)象 類,并且,當(dāng)創(chuàng)建了相應(yīng)的目錄條目時(shí),將置備在所選結(jié)構(gòu)對(duì)象類中被定義為強(qiáng)制的所有屬 性。備選地,可以在新的“輔助”對(duì)象類中定義新屬性。在這種情況下,一個(gè)條目將屬于一 個(gè)結(jié)構(gòu)對(duì)象類且僅屬于一個(gè)結(jié)構(gòu)對(duì)象類,但其可能還屬于零個(gè)或更多個(gè)輔助對(duì)象類。可以將⑶C作為循環(huán)計(jì)數(shù)器進(jìn)行管理,因此可以經(jīng)由以下數(shù)學(xué)表達(dá)式(‘% ’表示 “取?!边\(yùn)算符)來更新每一個(gè)⑶C CDC [n+1] = (CDC[n]+l) % M其中,“Μ”是該計(jì)數(shù)器可達(dá)到的最大數(shù)目(因此,⑶C將遵循序列0 — 1 — 2…… —(Μ-2) — (M-I) —0—1……)。在目錄條目創(chuàng)建時(shí),不需要對(duì)值CDC進(jìn)行初始化,但在 條目創(chuàng)建時(shí)可能需要置備值⑶C。此外,沖突檢測(cè)機(jī)制還基于對(duì)指示同時(shí)存在的LDAP客戶端402、404、408和410的 新參數(shù)(這里稱作NCD “要檢測(cè)的沖突的數(shù)目”)進(jìn)行定義,同時(shí)存在的LDAP客戶端402、 404,408和410是要在修改LDAP目錄412中的數(shù)據(jù)時(shí)防止它們自身之間的沖突時(shí)所考慮 的。此外,沖突檢測(cè)機(jī)制基于將一些“額外”修改操作(針對(duì)⑶C屬性值)添加至標(biāo)準(zhǔn) LDAP修改請(qǐng)求操作。該特定修改的關(guān)鍵方面涉及利用標(biāo)準(zhǔn)LDAP行為,其中,在嘗試將值“添 力口”至已存在且具有該相同值的屬性的情況下,拒絕LDAP修改消息。以下更詳細(xì)地討論這
——占
;^ ο使用這些定義以及修改后的LDAP修改消息,LDAP客戶端402、404、408和410將 遵循以下規(guī)則1.讀取已針對(duì)沖突檢測(cè)而準(zhǔn)備的、檢索到的數(shù)據(jù)(被存儲(chǔ)在LDAP目錄412中的條 目中)中的當(dāng)前CDC屬性值。實(shí)際上,可以從LDAP目錄412中的相同條目或任何其它條目 讀取任何其它數(shù)目的CDC屬性值。2.當(dāng)修改已針對(duì)沖突檢測(cè)而準(zhǔn)備的、條目中的任何數(shù)據(jù)時(shí),要考慮以下兩件事A. LDAP修改消息可以包括對(duì)于以下值、針對(duì)⑶C屬性的“添加”操作CDC =(所讀取的 CDC 值 +1) % MCDC =(所讀取的 CDC 值 +2) % M......CDC =(所讀取的 CDC 值 +NCD) % M注意在使用循環(huán)計(jì)數(shù)器的情況下,根據(jù)CDC屬性的類型,可能需要考慮模數(shù)Μ。B.在“添加”操作之后,LDAP修改消息包括“替換”操作,如下CDC =所讀取的CDC值+1并且以下,有示例幫助更好地解釋這些規(guī)則的用途假定對(duì)于已針對(duì)沖突檢測(cè)而準(zhǔn)備的條目,LDAP客戶端402(例如)所讀取的⑶C值是0,同時(shí),從LDAP目錄412讀取該數(shù)據(jù)。此外,假定CDC被實(shí)現(xiàn)為循環(huán)計(jì)數(shù)器,M(最大 值)是65536。那么,⑶C屬性可以存儲(chǔ)值0至65535,如下0- > 1- > 2- >......- > 65534- > 65535- > 0_ > 1此外,假定要檢測(cè)的沖突的數(shù)目被設(shè)置為4 (NCD = 4)。這意味著每個(gè)LDAP客戶端 (例如LDAP客戶端402)能夠“檢測(cè)”是1個(gè)、2個(gè)、3個(gè)還是甚至4個(gè)其它LDAP客戶端(例 如LDAP客戶端404、408和410)已在從最初讀?、荂的時(shí)刻起的時(shí)間內(nèi)以及在第一 LDAP 客戶端(例如LDAP客戶端402)決定需要對(duì)條目中的數(shù)據(jù)作出一些更新的時(shí)刻更新了“受 保護(hù)的”條目。然后,第一 LDAP客戶端(例如LDAP客戶端402)發(fā)送包括以下“添加”操作在內(nèi) 的LDAP修改消息CDC = 1 CDC = 2CDC = 3CDC = 4另外,在“添加”操作之后,LDAP修改消息具有“替換”操作,如下CDC = 1參照兩個(gè)示例序列圖,詳細(xì)討論了 LDAP目錄412如何響應(yīng)于該LDAP修改消息,這 使得能夠?qū)ν瑫r(shí)存在的訪問中的沖突進(jìn)行檢測(cè),并且如果存在沖突則避免執(zhí)行所請(qǐng)求的更 新。為了完整,這兩個(gè)示例序列圖還包括與以下步驟有關(guān)的描述=LDAP客戶端讀取數(shù)據(jù)、處 理所讀取的數(shù)據(jù)、然后發(fā)送修改LDAP目錄412內(nèi)的數(shù)據(jù)的請(qǐng)求。參照?qǐng)D5,圖5是示出了實(shí)現(xiàn)沖突檢測(cè)機(jī)制的一個(gè)示例的信號(hào)序列圖,其中,所選 的NCD值等于根據(jù)本發(fā)明適當(dāng)檢測(cè)沖突所需的值。在本示例中,示出了三個(gè)同時(shí)存在的 LDAP客戶端402、404和408(客戶端1、2和3),由此,NDC = 3將足以、但更大的NDC(如NDC =4)也將足以在LDAP客戶端402、404和408中的任意之間存在沖突的情況下,避免執(zhí)行 由LDAP客戶端402、404和408之一請(qǐng)求的更新。步驟如下1a.客戶端1發(fā)送針對(duì)從LDAP 條目412中的條目讀取一些數(shù)據(jù)502的消息。該消息可能是讀取包括CDC在內(nèi)的任何量的 數(shù)據(jù)的請(qǐng)求,并且可以使用任何標(biāo)準(zhǔn)LDAP SEARCH來請(qǐng)求數(shù)據(jù)502和CDC值。lbl.-lb2.客戶端IWLDAP目錄412接收所請(qǐng)求的數(shù)據(jù)502和⑶C值。這可以通 過包括所請(qǐng)求的信息(DN、屬性列表、CDC值)在內(nèi)的LDAP搜索結(jié)果條目(步驟lbl)并通 過指示搜索已成功的LDAP搜索結(jié)果完成(步驟lb2)來完成。在本示例中,客戶端1的、所 讀取的數(shù)據(jù)的本地拷貝具有CDC= (x)0此時(shí),客戶端1可以花一些時(shí)間,出于以下任何目 的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基 于所讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端1已更新數(shù)據(jù)502’。2a.客戶端2發(fā)送針對(duì)從LDAP目錄412中的相同條目讀取相同數(shù)據(jù)的至少一部分 的消息。該消息可能是讀取包括CDC在內(nèi)的任何量的數(shù)據(jù)的請(qǐng)求,并且可以使用任何標(biāo)準(zhǔn) LDAP SEARCH來請(qǐng)求數(shù)據(jù)和CDC值。2bl.-2b2.客戶端2從LDAP目錄412接收所請(qǐng)求的數(shù)據(jù)502和⑶C值。這可以通 過包括所請(qǐng)求的信息(DN、屬性列表、CDC值)在內(nèi)的LDAP搜索結(jié)果條目(步驟2bl)并通 過指示搜索已成功的LDAP搜索結(jié)果完成(步驟2b2)來完成。在本示例中,客戶端2的、所讀取的數(shù)據(jù)的本地拷貝具有CDC= (x)0此時(shí),客戶端2可以花一些時(shí)間,出于以下任何目 的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基 于所讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端2已更新數(shù)據(jù)502”。3a.客戶端2請(qǐng)求對(duì)至少一部分也由客戶端1讀取的所讀取數(shù)據(jù)502進(jìn)行修改。 具體地,客戶端2發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)基本對(duì)象DN條目;(2)三 個(gè)添加操作添加=CDC = (x)+l ;CDC = (χ)+2 ;CDC = (χ)+3 ; (3)修改后的數(shù)據(jù)502”;以及 (4)替換操作替換=CDC = (χ)+1。3b.客戶端2從LDAP目錄412接收指示修改請(qǐng)求已成功的LDAP修改響應(yīng)。修改 已成功執(zhí)行,這是由于LDAP目錄412沒有以下⑶C屬性該⑶C屬性具有三個(gè)“添加”操作 中的任一個(gè)中的相同值。具體地,在這三個(gè)添加操作之前,LDAP目錄412的⑶C值為(X), 在這些添加操作中,CDC = (x)+l、CDC = (x)+2、CDC = (x)+3。解除(RECALL)標(biāo)準(zhǔn) LDAP 行為使得如果嘗試將值“添加”至已存在且具有該相同值的屬性,則將拒絕LDAP修改消息 (在步驟6a詳細(xì)討論)。在這一點(diǎn)上,LDAP目錄412已將所讀取的條目與數(shù)據(jù)502”和⑶C =ω+ι相關(guān)聯(lián)。4a.客戶端3發(fā)送針對(duì)從LDAP目錄412中的相同條目讀取相同數(shù)據(jù)的至少一部分 的消息。該消息可能是讀取包括CDC在內(nèi)的任何量的數(shù)據(jù)的請(qǐng)求,并且可以使用任何標(biāo)準(zhǔn) LDAP SEARCH來請(qǐng)求數(shù)據(jù)和CDC值。4bl. -4b2.客戶端3從LDAP目錄412接收所請(qǐng)求的數(shù)據(jù)502”。這可以通過包括 所請(qǐng)求的信息(DN、屬性列表、⑶C值)在內(nèi)的LDAP搜索結(jié)果條目(步驟4bl)并通過指示 搜索已成功的LDAP搜索結(jié)果完成(步驟4b2)來完成。在本示例中,客戶端3的、所讀取的 數(shù)據(jù)的本地拷貝具有CDC= (x)+l。此時(shí),客戶端3可以花一些時(shí)間,出于以下任何目的,執(zhí) 行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所讀 取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端3已更新數(shù)據(jù)502’”。5a.客戶端3請(qǐng)求對(duì)至少一部分也由客戶端1和2從相同條目讀取的所讀取數(shù)據(jù) 進(jìn)行修改。具體地,客戶端3發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)基本對(duì)象DN條 目;(2)三個(gè)添加操作添加=CDC = (x+D+l ;CDC = (x+l)+2 ;CDC = (x+l)+3 ; (3)修改后 的數(shù)據(jù)502,,,;以及(4)替換操作替換=CDC = (x+l)+l。5b.客戶端3從LDAP目錄412接收指示修改請(qǐng)求已成功的LDAP修改響應(yīng)。修改 已成功執(zhí)行,這是由于LDAP目錄412沒有以下⑶C屬性該⑶C屬性具有三個(gè)“添加”操作 中的相同值。具體地,在這三個(gè)添加操作之前,LDAP目錄412的CDC值為(χ+l),在這些添 加操作中,CDC= (x+D+UCDC = (x+l)+2、CDC= (x+l)+3。解除(RECALL)標(biāo)準(zhǔn) LDAP 行 為使得如果嘗試將值“添加”至已存在且具有該相同值的屬性,則將拒絕LDAP修改消息(在 步驟6a詳細(xì)討論)。在這一點(diǎn)上,LDAP目錄412已將所讀取的條目與數(shù)據(jù)502’ ”和⑶C = (χ)+2相關(guān)聯(lián)。6a.客戶端1請(qǐng)求對(duì)在步驟la_lb讀取回 來的數(shù)據(jù)502進(jìn)行修改。具體地,客戶 端1發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)基本對(duì)象DN條目;(2)三個(gè)添加操作 添加⑶C = (x)+l ;⑶C = (χ)+2 ;⑶C = (χ)+3 ; (3)修改后的數(shù)據(jù)502’ ;以及(4)替換操 作替換=CDC= (χ)+1。6b.客戶端1從LDAP目錄412接收指示修改請(qǐng)求未成功的LDAP修改響應(yīng)。修改未成功執(zhí)行,這是由于LDAP目錄412具有以下⑶C屬性該⑶C屬性稱為⑶C= (x)+2,其 是第二個(gè)“添加”操作中的相同值。解除(RECALL)標(biāo)準(zhǔn)LDAP行為使得如果嘗試將值“添 加”至已存在且具有該相同值的屬性,則將拒絕LDAP修改消息。這在步驟6a發(fā)生,由此,成 功檢測(cè)到?jīng)_突。參照?qǐng)D6,圖6是一幅信號(hào)序列圖,示出了在所選的NCD值低于所需的值從而使得 難以根據(jù)本發(fā)明來適當(dāng)?shù)貦z測(cè)所有可能的沖突的情況下可能出現(xiàn)的問題。在本示例中,示 出了三個(gè)同時(shí)存在的LDAP客戶端402、404和408 (客戶端1、2和3),但NDC = 1,這可能在 檢測(cè)LDAP客戶端402、404和408之間的沖突時(shí)造成問題。步驟如下la.客戶端1發(fā)送針對(duì)從LDAP條目412中的條目讀取一些數(shù)據(jù)502的消息。該消 息可能是讀取包括CDC在內(nèi)的任何量的數(shù)據(jù)的請(qǐng)求,并且可以使用任何標(biāo)準(zhǔn)LDAP SEARCH 來請(qǐng)求數(shù)據(jù)502和⑶C值。lbl.-lb2.客戶端IWLDAP目錄412接收所請(qǐng)求的數(shù)據(jù)502和⑶C值。這可以通 過包括所請(qǐng)求的信息(DN、屬性列表、CDC值)在內(nèi)的LDAP搜索結(jié)果條目(步驟lbl)并通 過指示搜索已成功的LDAP搜索結(jié)果完成(步驟lb2)來完成。在本示例中,客戶端1的、所 讀取的數(shù)據(jù)的本地拷貝具有CDC= (x)0此時(shí),客戶端1可以花一些時(shí)間,出于以下任何目 的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基 于所讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端1已更新數(shù)據(jù)502’。2a.客戶端2發(fā)送針對(duì)從LDAP目錄412中的相同條目讀取相同數(shù)據(jù)的至少一部分 的消息。該消息可能是讀取包括CDC在內(nèi)的任何量的數(shù)據(jù)的請(qǐng)求,并且可以使用任何標(biāo)準(zhǔn) LDAP SEARCH來請(qǐng)求數(shù)據(jù)和CDC值。2bl.-2b2.客戶端2從LDAP目錄412接收所請(qǐng)求的數(shù)據(jù)502和⑶C值。這可以通 過包括所請(qǐng)求的信息(DN、屬性列表、CDC值)在內(nèi)的LDAP搜索結(jié)果條目(步驟2bl)并通 過指示搜索已成功的LDAP搜索結(jié)果完成(步驟2b2)來完成。在本示例中,客戶端2的、所 讀取的數(shù)據(jù)的本地拷貝具有CDC= (x)0此時(shí),客戶端2可以花一些時(shí)間,出于以下任何目 的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基 于所讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端2已更新數(shù)據(jù)502”。3a.客戶端2請(qǐng)求對(duì)至少一部分也由客戶端1讀取的所讀取數(shù)據(jù)502進(jìn)行修改。 具體地,客戶端2發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)基本對(duì)象DN條目;(2) — 個(gè)添加操作添加⑶C = (x)+l ; (3)修改后的數(shù)據(jù)402”;以及(4)替換操作替換⑶C = (χ)+1。3b.客戶端2從LDAP目錄412接收指示修改請(qǐng)求已成功的LDAP修改響應(yīng)。修改 已成功執(zhí)行,這是由于LDAP目錄412沒有以下⑶C屬性該⑶C屬性具有該一個(gè)“添加”操 作中的相同值。具體地,在該添加操作⑶C = (x)+l之前,LDAP目錄412的⑶C值為(χ)。 解除(RECALL)標(biāo)準(zhǔn)LDAP行為使得如果嘗試將值“添加”至已存在且具有該相同值的屬性, 則將拒絕LDAP修改消息。在這一點(diǎn)上,LDAP目錄412已將所讀取的條目與數(shù)據(jù)402”和⑶C =ω+ι相關(guān)聯(lián)。4a.客戶端3發(fā)送針對(duì)從LDAP目錄412中的相同條目讀取相同數(shù)據(jù)的至少一部分 的消息。該消息可能是讀取包括CDC在內(nèi)的任何量的數(shù)據(jù)的請(qǐng)求,并且可以使用任何標(biāo)準(zhǔn) LDAP SEARCH來請(qǐng)求數(shù)據(jù)和CDC值。
4bl. -4b2.客戶端3從LDAP目錄412接收所請(qǐng)求的數(shù)據(jù)502”。這可以通過包括 所請(qǐng)求的信息(DN、屬性列表、⑶C值)在內(nèi)的LDAP搜索結(jié)果條目(步驟4bl)并通過指示 搜索已成功的LDAP搜索結(jié)果完成(步驟4b2)來完成。在本示例中,客戶端3的、所讀取的 數(shù)據(jù)的本地拷貝具有CDC= (x)+l。此時(shí),客戶端3可以花一些時(shí)間,出于以下任何目的,執(zhí) 行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所讀 取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端3已更新數(shù)據(jù)502’”。5a.客戶端3請(qǐng)求對(duì)至少一部分也由客戶端1和2從相同條目讀取的所讀取數(shù)據(jù) 進(jìn)行修改。具體地,客戶端3發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)基本對(duì)象DN條 目;(2) —個(gè)添加操作添加CDC= (x+l)+l ;⑶修改后的數(shù)據(jù)502’”;以及(4)替換操作 替換:CDC = (x+l)+l05b.客戶端3從LDAP目錄412接收指示修改請(qǐng)求已成功的LDAP修改響應(yīng)。修改 已成功執(zhí)行,這是由于LDAP目錄412沒有以下⑶C屬性該CDC屬性具有該一個(gè)“添加” 操作中的相同值。具體地,在該添加操作⑶C = (x+D+l之前,LDAP目錄412的⑶C值為 (x+1)。解除(RECALL)標(biāo)準(zhǔn)LDAP行為使得如果嘗試將值“添加”至已存在且具有該相同 值的屬性,則將拒絕LDAP修改消息。在這一點(diǎn)上,LDAP目錄412已將所讀取的條目與數(shù)據(jù) 502,” 和 CDC = (χ)+2 相關(guān)聯(lián)。
6a.客戶端1請(qǐng)求對(duì)在步驟la-lb讀取回來的數(shù)據(jù)502進(jìn)行修改。具體地,客戶端 1發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)基本對(duì)象DN條目;(2) —個(gè)添加操作添 加=CDC = (x)+l ;(3)修改后的數(shù)據(jù)502,;以及(4)替換操作替換=CDC = (x)+I06b.客戶端1從LDAP目錄412接收指示修改請(qǐng)求已成功的LDAP修改響應(yīng)。修改 已執(zhí)行,這是由于LDAP目錄412沒有以下⑶C屬性該⑶C屬性具有該一個(gè)“添加”操作中 的相同值。具體地,在該添加操作⑶C = (x)+l之前,LDAP目錄412的⑶C值為(x)+2。這 是不期望的,這是由于客戶端2和3先前都修改了數(shù)據(jù),然而,本發(fā)明的沖突檢測(cè)機(jī)制沒有 檢測(cè)到這些沖突,這是由于NCD值太低,這意味著在由客戶端1、2和3發(fā)送的LDAP修改請(qǐng) 求消息中沒有足夠的添加操作。該特定信號(hào)序列圖示出了需要選擇參數(shù)NCD的正確值,使得沖突檢測(cè)機(jī)制可以檢 測(cè)到所有可能的沖突。在本示例中,NCD已被設(shè)置為“1”,因此,可能已檢測(cè)到不多于兩個(gè)同 時(shí)存在的訪問,并且可能沒有避免對(duì)數(shù)據(jù)的不期望的修改。因此,為了幫助確保適當(dāng)?shù)貙?shí)現(xiàn) 沖突檢測(cè)機(jī)制,應(yīng)當(dāng)遵循以下兩個(gè)推薦⑴“NCD”值應(yīng)當(dāng)被選擇為大于或等于“同時(shí)存在 的客戶端”(即,在相同時(shí)間間隔訪問相同條目的LDAP客戶端)的最大數(shù)目,該“同時(shí)存在 的客戶端”可以在LDAP客戶端中的任一個(gè)檢索到數(shù)據(jù)(利用始終包括CDC屬性類型在內(nèi)的 LDAP搜索操作而檢索)之后的時(shí)間間隔內(nèi)以及在特定LDAP客戶端發(fā)送要執(zhí)行的更新(利 用LDAP修改操作而請(qǐng)求)的時(shí)刻修改該條目;以及(2)選擇“M”值其中,“M”應(yīng)當(dāng)被選擇 為比NCD值大得多??傊c本發(fā)明第一實(shí)施例相關(guān)聯(lián)的沖突檢測(cè)機(jī)制部分地依賴于與在前述RFC 4511中描述的LDAP修改操作相關(guān)聯(lián)的標(biāo)準(zhǔn)行為。首先,在標(biāo)準(zhǔn)行為中,必須執(zhí)行LDAP修 改請(qǐng)求內(nèi)的整個(gè)修改列表,以使這些修改被列出為單一原子操作(見RFC 4511中的4.6節(jié) “修改操作”)。由此,本發(fā)明的沖突檢測(cè)機(jī)制具有LDAP修改請(qǐng)求,其中,始終呈現(xiàn)“添加”操 作,使得在“替換”操作之前執(zhí)行這些“添加”操作(見圖5中的步驟3a、5a和6a)。
其次,將所列出的值添加至修改屬性的是標(biāo)準(zhǔn)行為,這導(dǎo)致了在必要時(shí)創(chuàng)建屬性。由此,在沖突檢測(cè)機(jī)制中,當(dāng)對(duì)多值屬性執(zhí)行“添加”時(shí),將新的所請(qǐng)求的 值添加至現(xiàn)有列表。如果該值已存在,則經(jīng)由標(biāo)準(zhǔn)行為來返回每一個(gè)的結(jié)果代碼 20 ( "AttributeOrValueExists") 0因此,沖突檢測(cè)機(jī)制在建立添加操作時(shí)利用標(biāo)準(zhǔn)行為, 使得如果已存在要“添加”的值,則拒絕所請(qǐng)求的修改。僅當(dāng)某其它客戶端已將CDC更新為 新值時(shí),才發(fā)生該拒絕(見圖5中的步驟6a)。再次,在標(biāo)準(zhǔn)行為中,替換操作將導(dǎo)致利用所列出的新值來替換修改屬性的所有 現(xiàn)有值以及在尚未存在該屬性的情況下創(chuàng)建該屬性。如果存在該屬性,則不具有值的替換 將刪除整個(gè)屬性,而如果不存在該屬性,則忽略不具有值的替換。在沖突檢測(cè)機(jī)制中,客戶 端使用LDAP修改消息中的“替換”操作來將CDC屬性更新為下一值。然后,當(dāng)在假定利用 “添加”操作沒有檢測(cè)到?jīng)_突的情況下,想要修改數(shù)據(jù)下一個(gè)客戶端有責(zé)任將CDC更新為下 一值時(shí),另一客戶端可以檢測(cè)到該修改,作為潛在沖突??梢?,由于標(biāo)準(zhǔn)行為對(duì)在應(yīng)用LDAP修改請(qǐng)求中的該修改列表時(shí)的原子性的需求, 使得客戶端402、404和408可以期望如果接收到的修改響應(yīng)指示任何類型的差錯(cuò),則將不 執(zhí)行LDAP目錄412中的DIT的修改,而如果該修改響應(yīng)指示成功完成修改操作,則所有請(qǐng) 求的操作已執(zhí)行。在以上示例和解釋中,考慮了對(duì)于為了檢測(cè)沖突而準(zhǔn)備的每個(gè)條目(在LDAP目錄 412中),有一個(gè)CDC屬性。然而,可能發(fā)生的是,相同條目可能具有多個(gè)CDC屬性,以允許 沖突檢測(cè)機(jī)制中有更多粒度,從而可能針對(duì)條目?jī)?nèi)的屬性組而檢測(cè)沖突。這將改進(jìn)沖突檢 測(cè)機(jī)制,這是由于只要不是訪問屬于相同組的相同條目?jī)?nèi)的數(shù)據(jù)(即,相同CDC),就允許更 有效的同時(shí)訪問。參照?qǐng)D7,圖7是一幅信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第二實(shí)施例的、 可用于檢測(cè)沖突的另一沖突檢測(cè)機(jī)制。該沖突檢測(cè)機(jī)制利用了 LDAP中的所謂事務(wù)性 (transactionality),其中,LDAP事務(wù)被理解為與具有一個(gè)或多個(gè)操作的組相關(guān)聯(lián),在該操 作組中指定了該操作組的開始和結(jié)尾。另外,當(dāng)將LDAP事務(wù)發(fā)送至LDAP目錄412時(shí),在 LDAP目錄412執(zhí)行在這種事務(wù)中包括的所有操作或者不執(zhí)行任何操作的情況下,存在對(duì)原 子性的保證。在這種意義上,從LDAP客戶端402、404、408和410的角度可以看出,被包括 進(jìn)一個(gè)LDAP事務(wù)中的所有操作好像可以被視為單一操作。本發(fā)明的沖突檢測(cè)機(jī)制的第二 實(shí)施例利用LDAP事務(wù)性來幫助檢測(cè)和避免沖突。如何完成這一點(diǎn)將在以下步驟中描述la.客戶端1通過將啟動(dòng)事務(wù)請(qǐng)求(StartTransactionRequest)發(fā)送至LDAP目錄 412來啟動(dòng)LDAP中的事務(wù)。該啟動(dòng)事務(wù)請(qǐng)求可以是新的LDAP消息,其可以為空,其功能是 請(qǐng)求LDAP目錄412產(chǎn)生事務(wù)標(biāo)識(shí)符。lb.客戶端1接收對(duì)其先前的、針對(duì)啟動(dòng)LDAP中的事務(wù)的請(qǐng)求的響應(yīng)(啟動(dòng)事務(wù) 響應(yīng)(StartTransactionResponse))。該響應(yīng)可以是至少包括事務(wù)標(biāo)識(shí)符(TransIdl)在內(nèi) 的新LDAP消息。該標(biāo)識(shí)符將被包括在LDAP客戶端1需要將其作為在本申請(qǐng)中可被視為單 一操作的相同事務(wù)的一部分(即,被視為消息組的一部分)進(jìn)行處理的任何LDAP消息中。2a.客戶端1發(fā)送從LDAP目錄412讀取一些數(shù)據(jù)702的請(qǐng)求(LDAP搜索請(qǐng)求 (LDAPSearchRequest) )0該LDAP SEARCH消息包括剛剛產(chǎn)生的事務(wù)標(biāo)識(shí)符,這意味著該消 息應(yīng)當(dāng)是事務(wù)的一部分(即,消息組的一部分)。該LDAP SEARCH消息可以請(qǐng)求讀取任何量的數(shù)據(jù)702,并且任何標(biāo)準(zhǔn)LDAP SEARCH可以適用。此時(shí),LDAP目錄412在以下意義上實(shí)現(xiàn)在必要時(shí)能夠阻止“所讀取的”數(shù)據(jù)(或該 “所讀取的”數(shù)據(jù)的一部分)的內(nèi)部機(jī)制如果以下操作是針對(duì)相同事務(wù)(即,包括相同事 務(wù)IcKTransactionld))的,則將對(duì)在該時(shí)刻讀取的數(shù)據(jù)執(zhí)行這些操作。然而,不具有該事 務(wù)的(即,不包括相同事務(wù)Id的)任何其它消息將不能夠訪問這個(gè)“被阻止的”數(shù)據(jù)。在 圖7中將這個(gè)“被阻止的”數(shù)據(jù)示為由粗體框所包圍,該粗體框指示在由客戶端1啟動(dòng)的 該特定事務(wù)完成之前,不能修改/訪問該數(shù)據(jù)。2b.客戶端1從LDAP目錄412接收包括所請(qǐng)求的數(shù)據(jù)702在內(nèi)的讀取響應(yīng)(LDAP 搜索結(jié)果條目/搜索完成(LDAPSearchResultEntry/SearchDone))。此時(shí),客戶端1可以花 一些時(shí)間,出于以下任何目的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性 檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客 戶端1已更新數(shù)據(jù)702’。3a.客戶端發(fā)送從LDAP目錄412中的相同條目讀取相同數(shù)據(jù)702的至少一部分的 請(qǐng)求(LDAP搜索請(qǐng)求(LDAPSearchRequest))。該讀取請(qǐng)求可以是與由客戶端1使用的先前 事物不同的事務(wù)(未示出這種類型的請(qǐng)求);或者該讀取請(qǐng)求可以是與獨(dú)立的消息(如圖 所示),不管使用哪個(gè)請(qǐng)求,相同的行為依然適用。3b.客戶端2接收包括所請(qǐng)求的數(shù)據(jù)702在內(nèi)的讀取響應(yīng)(LDAP搜索結(jié)果條目/ 搜索完成(LDAPSearchResultEntry/SearchDone))。這是可能的,這是由于讀取請(qǐng)求消息 不是更新消息。在本示例中,假定讀取了相同的(或部分)“被阻止的”數(shù)據(jù)702。此后, 客戶端2執(zhí)行任何所需的處理和邏輯,該執(zhí)行操作使用或不使用針對(duì)這種目的而讀取的數(shù) 據(jù)。在這種情況下,客戶端2已更新數(shù)據(jù)702”。4a.客戶端2發(fā)送用于請(qǐng)求對(duì)被客戶端1的事務(wù)“阻止”的數(shù)據(jù)進(jìn)行修改的更新請(qǐng) 求。LDAP目錄412識(shí)別出該數(shù)據(jù)已被“阻止”成為先前事務(wù)的一部分,這意味著將不會(huì)允許 該特定修改。4b.客戶端2接收指示修改請(qǐng)求已被拒絕的差錯(cuò)消息(LDAP修改響應(yīng) (LDAPModifyResponse)[不成功])。在本示例中,客戶端2的修改請(qǐng)求是利用差錯(cuò)消息而 拒絕的。然而,在不允許修改時(shí)的特定行為可以改變,另一種選擇可以是對(duì)請(qǐng)求進(jìn)行排隊(duì), 直到先前啟動(dòng)的事務(wù)結(jié)束為止。此外,該方案的主要目的是不允許客戶端2超越由客戶端 1讀取且作為正在進(jìn)行的事務(wù)的一部分的任何數(shù)據(jù)702。5a.客戶端1發(fā)送用于請(qǐng)求將數(shù)據(jù)702修改為正在進(jìn)行的事務(wù)的一部分的更新請(qǐng) 求(LDAP修改請(qǐng)求(LDAP ModifyRequest))。在本示例中,假定客戶端1發(fā)送將“被阻止 的”數(shù)據(jù)702的多個(gè)屬性之一修改為正在進(jìn)行的事務(wù)的一部分的請(qǐng)求,即,用于修改的消息 包括對(duì)應(yīng)的事務(wù)IcKTransIdl)和修改后的數(shù)據(jù)702’。LDAP目錄412識(shí)別出該請(qǐng)求處于正 在進(jìn)行的事務(wù)內(nèi),由此,在先前被“阻止”成為相同事務(wù)的一部分的數(shù)據(jù)702上允許該修改。5b.客戶端1從LDA目錄412接收修改成功消息(LDA修改響應(yīng) (LDAModifyResponse)[結(jié)果成功])。由于該修改被視為相同事務(wù)的一部分,因此,在步驟 5a成功處理了該修改。6a.客戶端1將關(guān)閉正在進(jìn)行的事務(wù)的請(qǐng)求發(fā)送至LDAP目錄412。該請(qǐng)求可以是 包括要關(guān)閉的對(duì)應(yīng)LDAP事務(wù)的事務(wù)Id在內(nèi)的新LDAP消息。
6b.客戶端1接收指示LDAP目錄412成功關(guān)閉了 LDAP事務(wù)的消息(停止事務(wù)請(qǐng) 求(StopTransactionRequest) (TransIdl))。該消息可以是確認(rèn)成功執(zhí)行關(guān)閉事務(wù)請(qǐng)求的 新LDAP消息。實(shí)際上,該步驟可能是可選的,這是由于在客戶端側(cè)可能不需要該確認(rèn)??梢?,在該過程中,實(shí)現(xiàn)了沖突檢測(cè)機(jī)制,其防止客戶端2超越客戶端1不想在該 特定時(shí)間修改的一些數(shù)據(jù)。在該方案中,在步驟la、lb、6a和6b已呈現(xiàn)了新LDAP消息, 也呈現(xiàn)了包括事務(wù)Id在內(nèi)的新控制字段。另外,該沖突檢測(cè)機(jī)制使用具有如以上在步驟 2a和2b討論的事務(wù)Id的新LDAP搜索消息。對(duì)于與該特定機(jī)制所使用的LDAP事務(wù)性 有關(guān)的更多細(xì)節(jié),參考 K. Zeilenga 的標(biāo)題為"RFC 4528 =LightweightDirectory Access Protocol(LDAP)Assertion Control”、日期注明為2006年6月的論文(該文獻(xiàn)的內(nèi)容以引 證的方式并入于此)
參照?qǐng)D8,圖8是一幅信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第三實(shí)施例的、可用 于檢測(cè)沖突的另一沖突檢測(cè)機(jī)制。該沖突檢測(cè)機(jī)制利用LDAP事務(wù)性和上述CDC參數(shù)(在 條目中的每一個(gè)中定義),來驗(yàn)證在事務(wù)中包括的一個(gè)或多個(gè)條目的修改,如下Ia和2a.客戶端1發(fā)送針對(duì)從LDAP目錄412中的條目1和2讀取一些數(shù)據(jù)802 和804以及CDC信息的兩個(gè)請(qǐng)求(LDAP搜索請(qǐng)求(LDAPSearchRequests))。這些標(biāo)準(zhǔn)LDAP SEARCH消息中的每一個(gè)可以請(qǐng)求從條目1和2讀取任何量的數(shù)據(jù)以及⑶C值。Ib和2b.客戶端1從LDAP目錄412接收包括條目1和2中的所請(qǐng)求的 數(shù)據(jù)802和804及其對(duì)應(yīng)CDC值在內(nèi)的消息(兩個(gè)LDAP搜索結(jié)果條目/搜索完成 (LDAPSearchResultEntry/SearchDone))。此時(shí),客戶端1花一些時(shí)間,出于以下任何目的, 執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所 讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端1已更新數(shù)據(jù)802’和804’。3a客戶端2發(fā)送從LDAP目錄412中的條目2讀取一些數(shù)據(jù)804的請(qǐng)求(LDAP搜 索請(qǐng)求)。該請(qǐng)求可以是與由客戶端1使用的先前事物不同的事務(wù)(未示出這種類型的請(qǐng) 求);或者該請(qǐng)求可以是與獨(dú)立的消息(如圖所示),不管使用哪個(gè)請(qǐng)求,相同的行為依然適 用。在本示例中,假定讀取相同的(或部分)“被阻止的”數(shù)據(jù)804。3b.客戶端2從LDAP目錄412接收包括條目2中的所請(qǐng)求的數(shù)據(jù)以及對(duì)應(yīng)⑶C值 在內(nèi)的消息(LDAP搜索結(jié)果條目/搜索完成)。然后,客戶端2執(zhí)行任何所需的處理和邏 輯,該執(zhí)行操作使用或不使用針對(duì)這種目的而讀取的數(shù)據(jù)。在這種情況下,客戶端2已更新 數(shù)據(jù)804”。4a.客戶端2發(fā)送請(qǐng)求對(duì)LDAP目錄412的條目2中的數(shù)據(jù)進(jìn)行修改的消息(LDAP 修改請(qǐng)求)。條目2中的若干屬性被請(qǐng)求修改,包括對(duì)條目2的CDC值的修改。CDC值修改 是使用以上關(guān)于本發(fā)明第一實(shí)施例而描述的相同過程來完成的。在這種情況下沒有開啟事 務(wù),這是由于僅一個(gè)條目受到影響。4b.客戶端2從LDAP目錄412接收指示修改請(qǐng)求已被接受的消息(LDAP修改響應(yīng) [結(jié)果成功])。接受了在步驟4a請(qǐng)求的修改,并且將修改后的數(shù)據(jù)804”存儲(chǔ)在條目2中, 并更新了條目2的⑶C值。5a.客戶端1發(fā)送用于請(qǐng)求啟動(dòng)與LDAP目錄412的事務(wù)的消息(啟動(dòng)事務(wù)請(qǐng)求)。 該消息還請(qǐng)求LDAP目錄412產(chǎn)生事務(wù)標(biāo)識(shí)符。5b.響應(yīng)于啟動(dòng)LDAP目錄412中的事務(wù)的請(qǐng)求客戶端1接收消息(啟動(dòng)事務(wù)響應(yīng)[Transldl])。具體地,LDAP目錄412返回事務(wù)標(biāo)識(shí)符(TransIdl)。6a.客戶端1發(fā)送用于請(qǐng)求對(duì)LDAP目錄412的條目1中的數(shù)據(jù)進(jìn)行修改的消息 (LDAP修改請(qǐng)求(Transldl))。條目1中的若干屬性被請(qǐng)求修改,包括對(duì)條目1的⑶C值的 修改。CDC值修改是使用以上關(guān)于本發(fā)明第一實(shí)施例而描述的相同過程來完成的。6b. LDAP目錄412接受客戶端1的修改請(qǐng)求,這是由于尚未針對(duì)對(duì)應(yīng)條目1而改變 CDC值。但是,該修改操作保持即將在接受了完成事務(wù)時(shí)執(zhí)行。7a.客戶端1發(fā)送用于請(qǐng)求LDAP目錄412的條目2中的數(shù)據(jù)進(jìn)行修改的消息 (LDAP修改請(qǐng)求(Transldl))。條目2中的若干屬性被請(qǐng)求修改,包括對(duì)條目2的⑶C值的 修改。CDC值修改是使用以上關(guān)于本發(fā)明第一實(shí)施例而描述的相同過程來完成的。7b.客戶端1接收指示條目2的修改請(qǐng)求已被LDAP目錄412拒絕的消息(LDAP修 改響應(yīng)[結(jié)果不成功])。LDAP目錄412拒絕了該修改,這是由于在本示例中,條目2的CDC 值被由客戶端2在步驟4a期間執(zhí)行的過程所修改。8a.客戶端1發(fā)送針對(duì)由于不能執(zhí)行正在進(jìn)行的事務(wù)的一部分而“異常中止”正在 進(jìn)行的事務(wù)的消息(停止事務(wù)請(qǐng)求[異常中止,Transldl])。該消息可以是包括要關(guān)閉的對(duì)應(yīng)事務(wù)的事務(wù)Id在內(nèi)的新LDAP消息。8b.客戶端1從LDAP目錄412接收指示事務(wù)已被成功關(guān)閉的消息(停止事務(wù)響應(yīng) [Transldl])。該消息可以是用于確認(rèn)成功執(zhí)行關(guān)閉事務(wù)請(qǐng)求的新LDAP消息。備選地,該 消息可能是可選的消息,這是由于在客戶端側(cè)可能不需要確認(rèn)。參照?qǐng)D9,圖9是一幅信號(hào)序列圖,用于幫助解釋根據(jù)本發(fā)明第四實(shí)施例的、可用 于檢測(cè)沖突的另一沖突檢測(cè)機(jī)制。該沖突檢測(cè)機(jī)制利用了 LDAP斷言,該LDAP斷言允許客戶 端(特別是LDAPv3客戶端)指定針對(duì)要由LDAP目錄412執(zhí)行的操作必須為真的條件,否 則將整體拒絕所請(qǐng)求的操作。LDAP斷言已在上述RFC 4528中定義,并且可以在以下文獻(xiàn)中 找到與 LDAPv3 客戶端有關(guān)的細(xì)節(jié)K. Zeilenga"RFC4510 =Lightweight Directory Access Protocol (LDAP) =TechnicalSpecification Road Map,,,June 2006 (其內(nèi)容以引證的方式 并入與此)。具體地,LDAP斷言用于檢驗(yàn)與執(zhí)行修改時(shí)相同的操作中的條件,并且這導(dǎo)致了操 作原子性,這是由于條件驗(yàn)證和數(shù)據(jù)修改都是在沒有任何其它操作中斷的情況下執(zhí)行的。 為了實(shí)現(xiàn)這一點(diǎn),RFC 4528定義了新的LDAP控制(“斷言控制”),并且文獻(xiàn)K. ZeilengfRFC 4521 -Considerations for Lightweight Directory Access Protoco1(LDAP) Extensions”June 2006討論了基于這種控制的機(jī)制可以如何擴(kuò)展至LDAPv3操作(該文獻(xiàn) 的內(nèi)容以引證的方式并入于此)。例如,該控制可以附著至任何LDAPv3更新操作(即,添 力口、刪除、修改和修改DN),以支持對(duì)目標(biāo)對(duì)象的有條件的添加、刪除、修改和重命名。還將所 斷言的條件作為所涉及的LDAPv3操作的組成部分進(jìn)行估計(jì)。RFC 4528還指定了 DIT中的 目標(biāo)條目(即,必須將斷言檢驗(yàn)應(yīng)用于的(當(dāng)接收到時(shí)))始終是DIT中的單一條目,其為 LDAP請(qǐng)求中的條目或?qū)ο笞侄?作為一般簡(jiǎn)化)。沖突檢測(cè)機(jī)制的該具體實(shí)施例使用LDAP斷言,還針對(duì)需要沖突檢測(cè)的每個(gè)條目 定義和添加了新的單值整數(shù)屬性類型“序列號(hào)”。可以將該新的單值整數(shù)屬性類型“序列號(hào)” 作為循環(huán)計(jì)數(shù)器進(jìn)行管理。該新的單值整數(shù)屬性還可以被聲明為所期望的“結(jié)構(gòu)”對(duì)象類 (即,用于目錄條目的對(duì)象類)中的“強(qiáng)制”屬性,或者該新的單值整數(shù)屬性可以在新的“輔助”對(duì)象類中定義。為了實(shí)現(xiàn)該沖突檢測(cè)機(jī)制并解決修改問題,每個(gè)LDAP客戶端402、404 408和410將執(zhí)行以下步驟1.讀取一個(gè)或多個(gè)條目,包括針對(duì)沖突檢測(cè)而準(zhǔn)備的至少一個(gè)條目(即,其包括 “序列號(hào)(SeqNumber),,屬性類型)。2.使用檢索到的數(shù)據(jù)來應(yīng)用商業(yè)邏輯。3.請(qǐng)求在針對(duì)沖突檢測(cè)而定義的每個(gè)條目中更新數(shù)據(jù)。該請(qǐng)求可能包括以下 LDAP修改請(qǐng)求操作3. 1 “斷言條件”,檢驗(yàn)“序列號(hào)”屬性類型仍具有在步驟1讀取的值。3. 2 “替換”操作,增大以“序列號(hào)”屬性類型存儲(chǔ)的沖突檢測(cè)值。注意在執(zhí)行任何所請(qǐng)求的修改(添加/刪除/替換)之前檢驗(yàn)斷言。如果斷言 檢驗(yàn)失敗,則丟棄整個(gè)LDAP修改請(qǐng)求操作。圖9中的信號(hào)流圖示出了使用本發(fā)明的該具體沖突檢測(cè)機(jī)制的示例情況la.客戶端1發(fā)送用于請(qǐng)求從一個(gè)或多個(gè)條目讀取數(shù)據(jù)902的消息(LDAP搜索請(qǐng) 求),該一個(gè)或多個(gè)條目包括針對(duì)沖突檢測(cè)而準(zhǔn)備的至少一個(gè)條目1。該消息還具有針對(duì)讀 取LDAP目錄412的至少一個(gè)條目1內(nèi)的“序列號(hào)”屬性類型的請(qǐng)求。lb.客戶端1從LDAP目錄412接收所請(qǐng)求的數(shù)據(jù)902和“序列號(hào)”屬性的值。這 可以通過包括所請(qǐng)求的信息以及序列號(hào)在內(nèi)的LDAP搜索結(jié)果條目并通過指示搜索已成功 的LDAP搜索結(jié)果完成消息來完成。此時(shí),客戶端1花一些時(shí)間,出于以下任何目的,執(zhí)行任 何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí)行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所讀取的 內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在這種情況下,客戶端1已更新數(shù)據(jù)902’。2a.客戶端2發(fā)送用于請(qǐng)求從一個(gè)或多個(gè)條目讀取數(shù)據(jù)902的消息(LDAP搜索請(qǐng) 求),該一個(gè)或多個(gè)條目包括針對(duì)沖突檢測(cè)而準(zhǔn)備的至少一個(gè)條目1。該消息還具有針對(duì)讀 取LDAP目錄412的至少一個(gè)條目1內(nèi)的“序列號(hào)”屬性類型的請(qǐng)求。在本示例中,客戶端 1和客戶端2有興趣將數(shù)據(jù)修改為相同條目(其不需要是相同屬性,而僅需要是相同條目, 艮口,屬性中的任一個(gè)針對(duì)該特定條目的對(duì)象類中的任一個(gè))。2b.客戶端2從LDAP目錄412 接收所請(qǐng)求的數(shù)據(jù)902和“序列號(hào)”屬性的值。這可以通過包括所請(qǐng)求的信息以及序列號(hào)在 內(nèi)的LDAP搜索結(jié)果條目消息并通過指示搜索已成功的LDAP搜索結(jié)果完成消息來完成。此 時(shí),客戶端2花一些時(shí)間,出于以下任何目的,執(zhí)行任何內(nèi)部邏輯例如,對(duì)所讀取的數(shù)據(jù)執(zhí) 行一些一致性檢驗(yàn)、連接至另一節(jié)點(diǎn)以基于所讀取的內(nèi)容來請(qǐng)求更多的一些數(shù)據(jù)……。在 這種情況下,客戶端2已更新數(shù)據(jù)902”。3a.客戶端2將用于請(qǐng)求對(duì)沖突檢測(cè)準(zhǔn)備完成條目中的數(shù)據(jù)進(jìn)行更新的消息 (LDAP修改請(qǐng)求)發(fā)送至LDAP目錄412,其中,原始讀取的序列號(hào)是“η”。具體地,客戶端2 讀取包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求⑴斷言操作斷言序列號(hào)=η,臨界性真;(2) 修改后的數(shù)據(jù)902”;以及(3)替換操作替換序列號(hào)η+1 (注意在可以執(zhí)行步驟2和3之 前,步驟1必須為真)?;旧?,客戶端2發(fā)送包括對(duì)序列號(hào)屬性的更新(以1增大其值) 在內(nèi)的LDAP修改請(qǐng)求,同時(shí),LDAP修改請(qǐng)求包括用于檢驗(yàn)序列號(hào)的“斷言”,以確保其是剛 剛在步驟2b讀取的相同序列號(hào)。僅當(dāng)斷言的估計(jì)為真時(shí),才執(zhí)行LDAP修改操作。并且,僅 當(dāng)任何其它客戶端未增大序列號(hào)時(shí)這才發(fā)生,而如果增大了序列號(hào),則將展示出的是,從在 步驟2b讀取了該序列號(hào)起,另一客戶端已修改了數(shù)據(jù)。
3b.客戶端從LDAP目錄412接收指示修改請(qǐng)求已成功的LDAP修改響應(yīng) 。4a.客戶端1將用于請(qǐng)求對(duì)沖突檢測(cè)準(zhǔn)備完成條目中的數(shù)據(jù)進(jìn)行更新的消息 (LDAP修改請(qǐng)求)發(fā)送至LDAP目錄412,其中,原始讀取的序列號(hào)是“η”。具體地,客戶端1 發(fā)送包括以下各項(xiàng)在內(nèi)的LDAP修改請(qǐng)求(1)斷言操作斷言序列號(hào)=η,臨界性真;(2) 修改后的數(shù)據(jù)902’;以及(3)替換操作替換序列號(hào)η+1(注意在可以執(zhí)行步驟2和3之 前,步驟1必須為真)。在這種情況下,LDAP目錄412確定了斷言被估計(jì)為假,這是由于序 列號(hào)屬性不具有該客戶端在步驟Ib期間原始讀取的相同值。這意味著沖突已被避免。4b.客戶端1從LDAP目錄412接收指示修改請(qǐng)求未成功的LDAP修改響應(yīng)。因此, 客戶端1知道另一客戶端在其處理所讀取的數(shù)據(jù)期間修改了數(shù)據(jù)。從上述應(yīng)當(dāng)認(rèn)識(shí)到,已討論了四種不同的沖突檢測(cè)機(jī)制,允許第一 LDAP客戶端執(zhí) 行LDAP搜索、處理LDAP響應(yīng)、然后將修改(LDAP修改)發(fā)送至LDAP目錄412,同時(shí)使該第 一 LDAP客戶端確信在另一 LDAP客戶端先前已對(duì)第一 LDAP客戶端原始讀取的數(shù)據(jù)執(zhí)行修 改的情況下,將不會(huì)執(zhí)行所請(qǐng)求的修改。這是期望的,這是由于以這種方式不會(huì)造成數(shù)據(jù)不 一致。本發(fā)明具有若干優(yōu)點(diǎn),其中的一些列出如下1.對(duì)另一客戶端對(duì)先前讀取的一些數(shù)據(jù)所作的更新的檢測(cè)避免了造成數(shù)據(jù)不一 致。即,如果客戶端需要一些數(shù)據(jù)驗(yàn)證以執(zhí)行更新,如果修改了數(shù)據(jù),則這些更新可能在最 終更新該數(shù)據(jù)的情況下造成問題。換言之,可以使客戶端確信依賴于特定值(置于DIT的 任何部分中)的修改被一致地執(zhí)行(即,沒有修改相關(guān)數(shù)據(jù))。2.可以檢測(cè)任何數(shù)目的同時(shí)存在的LDAP客戶端。3.在無需具有不期望的“死鎖”副作用的任何鎖定/解鎖機(jī)制的情況下,檢測(cè)(并 避免)沖突。4.基于擴(kuò)展/定義新LDAP消息的沖突檢測(cè)機(jī)制(如基于斷言的沖突檢測(cè)機(jī)制的 情況)在LDAP客戶端側(cè)對(duì)在系統(tǒng)中使用的最終LDAP目錄技術(shù)有較高依賴。5.本發(fā)明的沖突檢測(cè)機(jī)制還對(duì)X. 500目錄系統(tǒng)有效,這是由于該沖突檢測(cè)機(jī)制提 供了使得能夠與標(biāo)準(zhǔn)LDAP客戶端進(jìn)行通信的LDAP接入網(wǎng)關(guān)。7.碰轉(zhuǎn)檢測(cè)機(jī)制不限于在通信領(lǐng)域中使用,而是還可以應(yīng)用于涉及使用LDAP客 戶端和LDAP目錄的任何領(lǐng)域內(nèi)的任何應(yīng)用。8.⑶C沖突檢測(cè)機(jī)制具有以下優(yōu)點(diǎn)ο標(biāo)準(zhǔn)LDAP客戶端能夠檢測(cè)是否發(fā)生沖突(S卩,由該客戶端讀取的數(shù)據(jù)可能已被 另一客戶端更新)。O本發(fā)明的CDC機(jī)制部分地依賴于現(xiàn)今被任何商用LDAP服務(wù)器實(shí)施方式所支持 的標(biāo)準(zhǔn)LDAP。該標(biāo)準(zhǔn)LDAP在LDAP目錄或LDAP客戶端處不需要任何所擴(kuò)展的LDAP支持。ο本發(fā)明的CDC機(jī)制實(shí)現(xiàn)了互斥的(mutex)機(jī)制,其中,公共資源是數(shù)據(jù)(要讀取 和修改的),臨界部分是從數(shù)據(jù)被LDAP客戶端讀取的時(shí)刻和相同LDAP客戶端需要數(shù)據(jù)修改 起的時(shí)間。9. LDAP斷言沖突檢測(cè)機(jī)制具有以下優(yōu)點(diǎn)ο標(biāo)準(zhǔn)LDAP客戶端能夠檢測(cè)是否發(fā)生沖突(S卩,由該客戶端讀取的數(shù)據(jù)可能已被 另一客戶端更新)。O本發(fā)明的LDAP斷言機(jī)制部分地依賴于標(biāo)準(zhǔn)LDAP。該標(biāo)準(zhǔn)LDAP在LDAP服務(wù)器或LDAP客戶端處不需要任何所擴(kuò)展的LDAP支持。對(duì)于與LDAP技術(shù)的基礎(chǔ)有關(guān)的更詳細(xì)討論,參考以下文獻(xiàn)1. K. Zeilenga "RFC 4510 lightweight Directory Access Protocol(LDAP) Technical Specification Road Map,,,June 2006。2. J. Sermersheim "RFC 4511 Lightweight Directory AccessProtocol (LDAP) The Protocol,,,June 2006。3. K. Zeilenga "RFC 4521 !Considerations for Lightweight DirectoryAccess Protocol (LDAP)Extensions,,,June 2006。4. K. Zeilenga "RFC 4528 lightweight Directory Access Protocol (LDAP) Assertion Control,,,June 2006。5. OpenLDAP Software Mailing List :Message00529 (定義 / 使用“鎖定,,屬性類 型)(從 http//www. openldap. org/1ists/openldap-software/200301/msg00529. html下 載)。6. K. Zeilenga "LDAP Transactions", November 18, 2007 ( /A http://www. ietf. org/internet-drafts/draft-zeilenga-ldap-txn-11. txt 下載)。這些文獻(xiàn)的內(nèi)容以引證的方式并入于此??傊糜谧x取和更新目錄中數(shù)據(jù)的多個(gè)客戶端402、404、406、408和410可訪問 的目錄412還被布置為通過實(shí)現(xiàn)圖5和8-9所示的方案以及使用以下組件(見圖4)來檢 測(cè)和避免所述目錄中的條目上的更新操作沖突輸入讀取裝置418,用于從客戶端接收讀 取所述目錄中的條目上的數(shù)據(jù)的請(qǐng)求;處理裝置420,用于分配與所述目錄中的所述條目 上的所述數(shù)據(jù)的至少一個(gè)子集相對(duì)應(yīng)的至少一個(gè)給定的沖突檢測(cè)值;輸出讀取裝置422, 用于向所述客戶端提交所請(qǐng)求的數(shù)據(jù)以及所述至少一個(gè)給定的沖突檢測(cè)值;輸入更新裝置 424,用于從所述客戶端接收修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子 集的請(qǐng)求,其中,該請(qǐng)求包括針對(duì)至少一個(gè)給定的沖突檢測(cè)值中的每一個(gè)的至少一個(gè)更新 后的沖突檢測(cè)值;沖突檢測(cè)器426,用于確定所述至少一個(gè)更新后的沖突檢測(cè)值是否與對(duì) 應(yīng)的當(dāng)前沖突檢測(cè)值一致;輸出更新裝置428,用于在所述至少一個(gè)更新后的沖突檢測(cè)值 與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致的情況下,接受和執(zhí)行修改所述目錄中的所述條目上的所述 數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求,否則,拒絕或駁回該請(qǐng)求;以及處理裝置420,用于在發(fā) 現(xiàn)該請(qǐng)求可接受的情況下,將當(dāng)前沖突檢測(cè)值設(shè)置為下一個(gè)值。另外,客戶端前端408 (例如)可以訪問目錄412,以根據(jù)圖5和8_9所示的方案, 使用以下組件(見圖4),讀取和更新目錄中的數(shù)據(jù)輸出讀取裝置430,用于提交讀取所述 目錄中的條目上的數(shù)據(jù)的請(qǐng)求;輸入讀取裝置432,用于檢索所請(qǐng)求的數(shù)據(jù),以及與所述目 錄中的所述條目上的所述數(shù)據(jù)的至少一個(gè)子集相對(duì)應(yīng)的至少一個(gè)給定的沖突檢測(cè)值;處理 器434,用于處理檢索到的數(shù)據(jù);輸出更新裝置436,用于發(fā)送修改所述目錄中的所述條目 上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求,其中,該請(qǐng)求包括針對(duì)至少一個(gè)給定的沖突檢 測(cè)值中的每一個(gè)的至少一個(gè)更新后的沖突檢測(cè)值;以及輸入更新裝置438,用于在在所述 目錄處所述至少一個(gè)更新后的沖 突檢測(cè)值與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致的情況下,接收對(duì) 修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求的接受,否則,接收 對(duì)該請(qǐng)求的拒絕。
盡管本發(fā)明的若干實(shí)施例已在附圖中示出并在以上具體實(shí)施方式
中描述,但應(yīng)當(dāng)理解,本發(fā)明不限于所公開的實(shí)施例,而是在不脫離如權(quán)利要求闡述和限定的本發(fā)明精神 的情況下還能夠進(jìn)行多種重新布置、修改和替換。
權(quán)利要求
一種用于在來自多于一個(gè)客戶端前端(HSS-FF、HLR-FF)的更新操作時(shí)檢測(cè)并避免目錄中的條目上的沖突的方法,所述方法包括以下步驟在所述目錄處,從客戶端前端接收讀取所述目錄中的條目上的數(shù)據(jù)的請(qǐng)求;在所述目錄處,分配與所述目錄中的所述條目上的所述數(shù)據(jù)的至少一個(gè)子集相對(duì)應(yīng)的至少一個(gè)給定的沖突檢測(cè)值;向所述客戶端前端提交所請(qǐng)求的數(shù)據(jù)以及所述至少一個(gè)給定的沖突檢測(cè)值;在所述目錄處,從所述客戶端前端接收修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求,其中,針對(duì)至少一個(gè)給定的沖突檢測(cè)值中的每一個(gè),所述請(qǐng)求包括至少一個(gè)更新后的沖突檢測(cè)值;在所述目錄處,確定所述至少一個(gè)更新后的沖突檢測(cè)值是否與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致;如果所述至少一個(gè)更新后的沖突檢測(cè)值與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致,則向所述客戶端前端提交對(duì)修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求的接受,否則,向所述客戶端前端提交對(duì)所述請(qǐng)求的拒絕;以及在發(fā)現(xiàn)所述請(qǐng)求可接受的情況下,將當(dāng)前沖突檢測(cè)值設(shè)置為下一個(gè)值。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述客戶端前端在發(fā)送修改數(shù)據(jù)的請(qǐng)求之前,發(fā) 起與所述目錄的事務(wù)。
3.根據(jù)權(quán)利要求1所述的方法,其中,在所述目錄處從所述客戶端前端接收到的修改 所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng)求包括斷言條件,并且,所述目錄確保在修改所述目錄 中的所述數(shù)據(jù)之前所述斷言條件為真。
4.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給定的沖突 檢測(cè)計(jì)數(shù)器屬性CDC,所述CDC具有所述目錄中的所述條目上的值(x);并且,具有至少一個(gè) 更新后的沖突檢測(cè)值的請(qǐng)求包括⑴一個(gè)或多個(gè)添加操作,如下,添加:CDC = (x)+l ;添加:CDC = (x) +2……添加:CDC =(x) +要檢測(cè)的沖突的數(shù)目NCD,其中,NCD的值等于或大于可能從所述目錄中的所述條目 讀取并修改數(shù)據(jù)的同時(shí)存在的客戶端的數(shù)目;(ii)修改后的數(shù)據(jù);以及(iii)替換操作,如下替換CDC= (x)+l ;以及如果修改數(shù)據(jù)的請(qǐng)求具有嘗試對(duì)當(dāng)前CDC屬性進(jìn)行操作的添加操作,則所述目錄拒絕 所述請(qǐng)求,其中,所述當(dāng)前CDC屬性在所述條目?jī)?nèi)具有與給定CDC屬性值(x)不同的值。
5.根據(jù)權(quán)利要求4所述的方法,其中,CDC屬性是所期望的結(jié)構(gòu)對(duì)象類或新的輔助對(duì)象 類中的強(qiáng)制屬性。
6.根據(jù)權(quán)利要求4所述的方法,其中,CDC屬性是循環(huán)計(jì)數(shù)器。
7.根據(jù)權(quán)利要求1所述的方法,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給定的序列 號(hào)屬性,所述序列號(hào)屬性具有所述目錄中的所述條目上的值(x);并且,具有至少一個(gè)更新 后的沖突檢測(cè)值的請(qǐng)求包括(i)斷言條件;(ii)修改后的數(shù)據(jù);以及(iii)替換操作,如下替換序列號(hào)=(x)+l;以及所述目錄確定所述條目中的當(dāng)前序列號(hào)是否具有與給定序列號(hào)的值相同的值,如果具 有,則修改數(shù)據(jù)并執(zhí)行 替換操作,如果不具有,則丟棄修改數(shù)據(jù)的請(qǐng)求。
8.一種目錄,能夠被多個(gè)客戶端所訪問以讀取和更新所述目錄中的數(shù)據(jù),并被布置為 檢測(cè)并避免所述目錄中的條目上的更新操作沖突,所述目錄包括輸入讀取裝置,從客戶端接收讀取所述目錄中的條目上的數(shù)據(jù)的請(qǐng)求; 處理裝置,分配與所述目錄中的所述條目上的所述數(shù)據(jù)的至少一個(gè)子集相對(duì)應(yīng)的至少 一個(gè)給定的沖突檢測(cè)值;輸出讀取裝置,向所述客戶端提交所請(qǐng)求的數(shù)據(jù)以及所述至少一個(gè)給定的沖突檢測(cè)值;輸入更新裝置,從所述客戶端接收修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至 少一個(gè)子集的請(qǐng)求,其中,針對(duì)至少一個(gè)給定的沖突檢測(cè)值中的每一個(gè),所述請(qǐng)求包括至少 一個(gè)更新后的沖突檢測(cè)值;沖突檢測(cè)器,確定所述至少一個(gè)更新后的沖突檢測(cè)值是否與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致;輸出更新裝置,在所述至少一個(gè)更新后的沖突檢測(cè)值與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致 的情況下,接受和執(zhí)行修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子集的請(qǐng) 求,否則,拒絕或駁回所述請(qǐng)求;以及所述處理裝置在發(fā)現(xiàn)所述請(qǐng)求可接受的情況下,將當(dāng)前沖突檢測(cè)值設(shè)置為下一個(gè)值。
9.根據(jù)權(quán)利要求8所述的目錄,其中,所述輸入讀取裝置適于從客戶端前端接收在發(fā) 送修改數(shù)據(jù)的請(qǐng)求之前啟動(dòng)事務(wù)的請(qǐng)求。
10.根據(jù)權(quán)利要求8所述的目錄,其中,用于從所述客戶端接收修改所述數(shù)據(jù)的所述至 少一個(gè)子集的請(qǐng)求的輸入更新裝置適于接收斷言條件,并且,所述目錄的所述處理裝置適 于確保在修改所述條目中的數(shù)據(jù)之前所述斷言條件為真。
11.根據(jù)權(quán)利要求8所述的目錄,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給定的沖突 檢測(cè)計(jì)數(shù)器屬性CDC,所述CDC具有所述目錄中的所述條目上的值(x);并且,具有至少一個(gè) 更新后的沖突檢測(cè)值的請(qǐng)求包括⑴一個(gè)或多個(gè)添加操作,如下,添加:CDC = (x)+l ;添加:CDC = (x) +2……添加:CDC =(x) +要檢測(cè)的沖突的數(shù)目NCD,其中,NCD的值等于或大于可能從所述目錄中的所述條目 讀取并修改數(shù)據(jù)的同時(shí)存在的客戶端的數(shù)目;(ii)修改后的數(shù)據(jù);以及(iii)替換操作,如下替換CDC= (x)+l ;以及所述目錄的所述輸出更新裝置適于在修改數(shù)據(jù)的請(qǐng)求具有嘗試對(duì)當(dāng)前CDC屬性進(jìn)行 操作的添加操作的情況下拒絕所述請(qǐng)求,其中,所述當(dāng)前CDC屬性在所述條目?jī)?nèi)具有與給 定CDC屬性值(x)不同的值。
12.根據(jù)權(quán)利要求11所述的目錄,其中,CDC屬性是所期望的結(jié)構(gòu)對(duì)象類或新的輔助對(duì) 象類中的強(qiáng)制屬性。
13.根據(jù)權(quán)利要求11所述的目錄,其中,CDC屬性是循環(huán)計(jì)數(shù)器。
14.根據(jù)權(quán)利要求8所述的目錄,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給定的序列 號(hào)屬性,所述序列號(hào)屬性具有所述目錄中的所述條目上的值(x);并且,具有至少一個(gè)更新后的沖突檢測(cè)值的請(qǐng)求包括(i)斷言條件; (ii)修改后的數(shù)據(jù);以及 (iii)替換操作,如下替換序列號(hào)=(x)+l;以及所述目錄的所述沖突檢測(cè)器確定所述條目中的當(dāng)前序列號(hào)是否具有與給定序列號(hào)的 值相同的值,如果具有,則所述處理裝置適于修改數(shù)據(jù)并適于執(zhí)行替換操作,如果不具有, 則所述目錄的所述輸出更新裝置適于拒絕修改數(shù)據(jù)的請(qǐng)求。
15.一種客戶端前端(HSS-FF、HLR-FF),訪問目錄以讀取和更新所述目錄中的數(shù)據(jù),并 包括輸出讀取裝置,用于提交讀取所述目錄中的條目上的數(shù)據(jù)的請(qǐng)求; 輸入讀取裝置,用于接收所請(qǐng)求的數(shù)據(jù),以及與所述目錄中的所述條目上的所述數(shù)據(jù) 的至少一個(gè)子集相對(duì)應(yīng)的至少一個(gè)給定的沖突檢測(cè)值; 處理器,用于處理接收到的數(shù)據(jù);輸出更新裝置,用于發(fā)送修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子 集的請(qǐng)求,其中,針對(duì)至少一個(gè)給定的沖突檢測(cè)值中的每一個(gè),所述請(qǐng)求包括至少一個(gè)更新 后的沖突檢測(cè)值;以及輸入更新裝置,用于在所述目錄處所述至少一個(gè)更新后的沖突檢測(cè)值與對(duì)應(yīng)的當(dāng)前沖 突檢測(cè)值一致的情況下,接收對(duì)修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè) 子集的請(qǐng)求的接受,否則,接收對(duì)所述請(qǐng)求的拒絕。
16.根據(jù)權(quán)利要求15所述的客戶端前端,其中,所述輸出讀取裝置還適于向所述目錄 提交在發(fā)送修改數(shù)據(jù)的請(qǐng)求之前啟動(dòng)事務(wù)的請(qǐng)求。
17.根據(jù)權(quán)利要求15所述的客戶端前端,其中,所述輸出更新裝置還適于將斷言條件 與所述請(qǐng)求一起向所述目錄提交。
18.根據(jù)權(quán)利要求15所述的客戶端前端,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給 定的沖突檢測(cè)計(jì)數(shù)器屬性CDC,所述CDC具有所述目錄中的所述條目上的值(χ);并且,具有 至少一個(gè)更新后的沖突檢測(cè)值的請(qǐng)求包括⑴一個(gè)或多個(gè)添加操作,如下,添加=CDC = (χ)+1 ;添加=CDC = (χ)+2……添加=CDC =(χ) +要檢測(cè)的沖突的數(shù)目NCD,其中,NCD的值等于或大于可能從所述目錄中的所述條目 讀取并修改數(shù)據(jù)的同時(shí)存在的客戶端的數(shù)目; ( )修改后的數(shù)據(jù);以及 (iii)替換操作,如下替換CDC = (x)+l。
19.根據(jù)權(quán)利要求18所述的客戶端前端,其中,CDC屬性是所期望的結(jié)構(gòu)對(duì)象類或新的 輔助對(duì)象類中的強(qiáng)制屬性。
20.根據(jù)權(quán)利要求18所述的客戶端前端,其中,CDC屬性是循環(huán)計(jì)數(shù)器。
21.根據(jù)權(quán)利要求18所述的客戶端前端,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給 定的序列號(hào)屬性,所述序列號(hào)屬性具有所述目錄中的所述條目上的值U);并且,具有至少 一個(gè)更新后的沖突檢測(cè)值的請(qǐng)求包括(i)斷言條件;( )修改后的數(shù)據(jù);以及(iii)替換操作,如下替換序列號(hào)=(χ)+ι。
22.一種用于在來自客戶端前端(HSS-FF、HLR-FF)的更新操作時(shí)檢測(cè)并避免目錄中的 條目上的沖突的方法,所述方法包括以下步驟從客戶端前端提交讀取所述目錄中的條目上的數(shù)據(jù)的請(qǐng)求;在所述客戶端前端處,接收所請(qǐng)求的數(shù)據(jù),以及與所述數(shù)據(jù)的至少一個(gè)子集相對(duì)應(yīng)的 至少一個(gè)給定的沖突檢測(cè)值;在所述客戶端前端處,處理檢索到的數(shù)據(jù);從所述客戶端前端發(fā)送修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè)子 集的請(qǐng)求,其中,針對(duì)至少一個(gè)給定的沖突檢測(cè)值中的每一個(gè),所述請(qǐng)求包括至少一個(gè)更新 后的沖突檢測(cè)值;以及如果在所述目錄處所述至少一個(gè)更新后的沖突檢測(cè)值與對(duì)應(yīng)的當(dāng)前沖突檢測(cè)值一致, 則在所述客戶端前端處,接收對(duì)修改所述目錄中的所述條目上的所述數(shù)據(jù)的所述至少一個(gè) 子集的請(qǐng)求的接受,否則,接收對(duì)所述請(qǐng)求的拒絕。
23.根據(jù)權(quán)利要求22所述的方法,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給定的沖 突檢測(cè)計(jì)數(shù)器屬性CDC,所述CDC具有所述目錄中的所述條目上的值(χ);并且,具有至少一 個(gè)更新后的沖突檢測(cè)值的請(qǐng)求包括⑴一個(gè)或多個(gè)添加操作,如下,添加=CDC = (χ)+1 ;添加=CDC = (χ)+2……添加=CDC =(x) +要檢測(cè)的沖突的數(shù)目NCD,其中,NCD的值等于或大于可能從所述目錄中的所述條目 讀取并修改數(shù)據(jù)的同時(shí)存在的客戶端的數(shù)目; ( )修改后的數(shù)據(jù);以及 (iii)替換操作,如下替換CDC = (x)+l。
24.根據(jù)權(quán)利要求22所述的方法,其中,所述至少一個(gè)給定的沖突檢測(cè)值是給定的序 列號(hào)屬性,所述序列號(hào)屬性具有來自所述目錄中的所述條目的值(χ);并且,具有至少一個(gè) 更新后的沖突檢測(cè)值的請(qǐng)求包括(i)斷言條件;( )修改后的數(shù)據(jù);以及(iii)替換操作,如下替換序列號(hào)=00+1。
25.一種允許客戶端前端檢測(cè)并避免目錄中的條目上的更新操作沖突的方法,所述方 法包括以下步驟向目錄發(fā)送啟動(dòng)事務(wù)的請(qǐng)求; 從所述目錄接收包括事務(wù)標(biāo)識(shí)符在內(nèi)的響應(yīng);發(fā)送讀取所述目錄中的所述條目中的數(shù)據(jù)的請(qǐng)求,其中,所述請(qǐng)求還包括所述事務(wù)標(biāo) 識(shí)符;從所述目錄接收包括所讀取的數(shù)據(jù)和所述事務(wù)標(biāo)識(shí)符在內(nèi)的響應(yīng),其中,所述目錄阻止 所述條目?jī)?nèi)的數(shù)據(jù)成為正在進(jìn)行的事務(wù)的一部分,使得其它客戶端不能修改所阻止的數(shù)據(jù); 處理所讀取的數(shù)據(jù);發(fā)送修改所述目錄中的所述條目中的數(shù)據(jù)的請(qǐng)求,其中,所述請(qǐng)求包括修改的數(shù)據(jù)和 所述事務(wù)標(biāo)識(shí)符,并且所述目錄因?yàn)樗鍪聞?wù)標(biāo)識(shí)符的存在而執(zhí)行修改數(shù)據(jù)的請(qǐng)求;以及 向所述目錄發(fā)送停止所述事務(wù)的請(qǐng)求。
全文摘要
本發(fā)明描述了一種LDAP沖突檢測(cè)機(jī)制和方法,允許LDAP客戶端檢測(cè)并避免LDAP目錄內(nèi)的條目上的更新操作沖突。所述方法包括以下步驟(a)從目錄中的條目讀取數(shù)據(jù);(b)處理檢索到的數(shù)據(jù);(c)發(fā)送針對(duì)修改目錄中的條目中的數(shù)據(jù)的請(qǐng)求,其中,使客戶端確信在另一客戶端先前已對(duì)該客戶端原始讀取的條目?jī)?nèi)的數(shù)據(jù)執(zhí)行修改的情況下,將不會(huì)執(zhí)行所請(qǐng)求的修改。本發(fā)明描述了LDAP沖突檢測(cè)機(jī)制和方法的若干不同實(shí)施例。
文檔編號(hào)G06F17/30GK101849233SQ200880114851
公開日2010年9月29日 申請(qǐng)日期2008年4月10日 優(yōu)先權(quán)日2007年11月6日
發(fā)明者安東尼奧·阿拉爾孔阿隆索, 瑪麗亞·克魯斯·巴托洛梅羅德里戈, 胡里奧·維加阿奈斯 申請(qǐng)人:艾利森電話股份有限公司