两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法、存儲模塊和系統(tǒng)的制作方法

文檔序號:6535064閱讀:239來源:國知局
對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法、存儲模塊和系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法、存儲模塊和系統(tǒng),描述了對象關(guān)系數(shù)據(jù)庫系統(tǒng)中的分層垃圾收集技術(shù)。當(dāng)對象關(guān)系數(shù)據(jù)庫系統(tǒng)接收到刪除對象的請求時,對象關(guān)系數(shù)據(jù)庫系統(tǒng)將該對象標(biāo)記為刪除。在后臺執(zhí)行的垃圾收集進程可執(zhí)行清掃和標(biāo)記的迭代以刪除該對象和該對象的子對象。在每次迭代中,刪除一層或“一代”對象。垃圾收集進程可繼續(xù)迭代,直到該對象和該對象的所有派生對象都被刪除為止。采用該種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法、存儲模塊和系統(tǒng),比常規(guī)對象刪除操作更簡單,可以在后臺執(zhí)行的進程中實現(xiàn)且不需要應(yīng)用級的或用戶級的干預(yù),為了刪除對象,應(yīng)用僅需將該對象標(biāo)記為刪除,而不必管理該對象的子對象的刪除。
【專利說明】對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法、存儲模塊和系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)庫管理領(lǐng)域,尤其涉及對象關(guān)系數(shù)據(jù)庫管理領(lǐng)域,具體是指一種對象關(guān)系數(shù)據(jù)庫系統(tǒng)中的分層垃圾收集。
【背景技術(shù)】
[0002]對象關(guān)系數(shù)據(jù)庫可以是被編程、被擴展或者被定制為存儲、查詢和檢索數(shù)據(jù)對象的關(guān)系數(shù)據(jù)庫系統(tǒng)。在對象關(guān)系數(shù)據(jù)庫中,對象、類以及對象之間或者類之間的關(guān)系可用定義表格和表格之間的關(guān)系的數(shù)據(jù)庫模式表示。與其中數(shù)據(jù)之間的關(guān)系通常是平展的常規(guī)關(guān)系數(shù)據(jù)庫相比,對象關(guān)系數(shù)據(jù)庫中的對象之間的關(guān)系可以是分層的。因此,當(dāng)處理對象的刪除時,對象關(guān)系數(shù)據(jù)庫可遇到將被刪除的對象具有一個或多個子對象的情形。按照慣例,對象關(guān)系數(shù)據(jù)庫系統(tǒng)可使用顯式遞歸刪除或引用計數(shù)來處理刪除,以確保當(dāng)對象被刪除時,該對象的派生對象也被刪除。

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

[0003]本發(fā)明的目的是克服了上述現(xiàn)有技術(shù)的缺點,提供了一種能夠?qū)崿F(xiàn)比常規(guī)對象刪除操作更簡單、可以在后臺執(zhí)行的進程中實現(xiàn)且不需要應(yīng)用級的或用戶級的干預(yù)、為了刪除對象,應(yīng)用僅需將該對象標(biāo)記為刪除,而不必管理該對象的子對象的刪除的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法、存儲模塊和系統(tǒng)。
[0004]為了實現(xiàn)上述目的,本發(fā)明的對象關(guān)系數(shù)據(jù)庫系統(tǒng)中的分層垃圾收集具有如下構(gòu)成:
[0005]該對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其主要特點是,所述的方法包括以下步驟:
[0006]由一個或多個計算機接收刪除數(shù)據(jù)對象的請求,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示;
[0007]從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除;和
[0008]在一次或多次迭代中清掃所述數(shù)據(jù)表格,包括在每次清掃迭代中:
[0009]從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄;
[0010]刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后
[0011]從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除;
[0012]其中,所述一個或多個計算機執(zhí)行所述一次或多次迭代,直到滿足退出條件為止。
[0013]較佳地,所述的數(shù)據(jù)對象的父對象是引用所述數(shù)據(jù)對象的對象。
[0014]較佳地,從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除包括:將刪除標(biāo)記存儲在所述記錄的狀態(tài)數(shù)據(jù)字段中并且將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。[0015]更佳地,將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象包括:清除所述記錄的父標(biāo)識符數(shù)據(jù)字段。
[0016]更佳地,當(dāng)所述數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量達到或超過定義的限制時,滿足所述退出條件。
[0017]較佳地,所述的方法還包括以下步驟:
[0018]在從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除之后并且在所述數(shù)據(jù)對象被刪除之前,阻止查詢訪問所述數(shù)據(jù)對象。
[0019]較佳地,所述一個或多個計算機與接收所述請求無關(guān)地將所述一次或多次清掃迭代作為后臺進程執(zhí)行。
[0020]本發(fā)明還涉及一種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其主要特點是,所述非暫時性存儲模塊用以使一個或多個計算機執(zhí)行包括以下的操作的計算機指令:
[0021]接收刪除數(shù)據(jù)對象的請求,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示;
[0022]從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除;和
[0023]在一次或多次迭代中清掃所述數(shù)據(jù)表格,包括在每次清掃迭代中:
[0024]從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄;
[0025]刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后
[0026]從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除;
[0027]其中,所述一個或多個計算機執(zhí)行所述一次或多次迭代,直到滿足退出條件為止。
[0028]較佳地,所述數(shù)據(jù)對象的父對象是引用所述數(shù)據(jù)對象的對象。
[0029]較佳地,從所述數(shù)據(jù)表格將記錄標(biāo)記為刪除包括:將刪除標(biāo)記存儲在所述記錄的狀態(tài)數(shù)據(jù)字段中并且將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。
[0030]更佳地,將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象包括:清除所述記錄的父標(biāo)識符數(shù)據(jù)字段。
[0031]更佳地,當(dāng)所述數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量超過定義的限制時,滿足所述退出條件。
[0032]較佳地,所述操作還包括:
[0033]在從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除之后并且在所述數(shù)據(jù)對象被刪除之前,阻止查詢訪問所述數(shù)據(jù)對象。
[0034]較佳地,所述指令使所述一個或多個計算機與接收所述請求無關(guān)地將所述一次或多次清掃迭代作為后臺進程執(zhí)行。
[0035]本發(fā)明還涉及一種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其主要特點是,所述的系統(tǒng)包括:
[0036]一個或多個計算機,所述一個或多個計算機被編程為接收刪除數(shù)據(jù)對象的請求,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示;[0037]非暫時性存儲模塊,所述非暫時性存儲模塊用以使所述一個或多個計算機執(zhí)行包括以下的操作的計算機指令:
[0038]從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除;和
[0039]在一次或多次迭代中清掃所述數(shù)據(jù)表格,包括在每次清掃迭代中:
[0040]從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄;
[0041]刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后
[0042]從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除;
[0043]其中,所述一個或多個計算機被編程為執(zhí)行所述一次或多次迭代,直到滿足退出條件為止。
[0044]較佳地,所述數(shù)據(jù)對象的父對象是引用所述數(shù)據(jù)對象的對象。
[0045]較佳地,從所述數(shù)據(jù)表格將記錄標(biāo)記為刪除包括:將刪除標(biāo)記存儲在所述記錄的狀態(tài)數(shù)據(jù)字段中并且將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。
[0046]更佳地,將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象包括:清除所述記錄的父標(biāo)識符數(shù)據(jù)字段。
[0047]更佳地,當(dāng)所述數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量超過定義的限制時,滿足所述退出條件。
[0048]較佳地,所述操作包括:
[0049]在從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除之后并且在所述數(shù)據(jù)對象被刪除之前,阻止查詢訪問所述數(shù)據(jù)對象。
[0050]較佳地,所述一個或多個計算機響應(yīng)于接收到所述請求來執(zhí)行所述一次或多次清掃迭代或者與接收所述請求無關(guān)地將所述一次或多次清掃迭代作為后臺進程執(zhí)行。
[0051]本發(fā)明還涉及一種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其主要特點是,所述的系統(tǒng)包括:
[0052]非暫時性存儲裝置,所述非暫時性存儲裝置存儲數(shù)據(jù)對象和數(shù)據(jù)表格,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示;
[0053]應(yīng)用接口,所述應(yīng)用接口被編程為接收刪除數(shù)據(jù)對象的請求;
[0054]對象標(biāo)記器,所述對象標(biāo)記器被編程為從所述數(shù)據(jù)表格將所述數(shù)據(jù)記錄標(biāo)記為刪除;和
[0055]對象清掃器,所述對象清掃器被編程為在直到滿足退出條件為止的一次或多次迭代中執(zhí)行對象清掃操作,其中,所述對象清掃操作的每次迭代包括:
[0056]從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄;
[0057]從所述存儲裝置刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后
[0058]從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除。
[0059]采用了該發(fā)明中的對象關(guān)系數(shù)據(jù)庫系統(tǒng)中的分層垃圾收集,具有如下有益效果:
[0060]可實現(xiàn)本說明書中描述的特征來實現(xiàn)一個或多個優(yōu)點。例如,在一些實現(xiàn)中,分層垃圾收集可以是執(zhí)行映射到關(guān)系數(shù)據(jù)庫系統(tǒng)的任意復(fù)雜對象的深層次遞歸刪除的、系統(tǒng)的、遞增的機制。與常規(guī)對象刪除操作相比,分層垃圾收集可以更有效率。
[0061]與常規(guī)實現(xiàn)相比,分層垃圾收集可以更有擴展性??墒褂枚ㄖ频倪M度表、閾值和檢查點來實現(xiàn)分層垃圾收集,以使得能夠處理具有任意深層次配置的大量(例如,數(shù)百萬個)對象和子對象的企業(yè)規(guī)模的數(shù)據(jù)庫。
[0062]與常規(guī)實現(xiàn)相比,分層垃圾收集可得到響應(yīng)性更高的應(yīng)用體驗。分層垃圾收集可被實現(xiàn)為使得請求刪除對象的行動者(通常,終端用戶應(yīng)用)僅需將該對象標(biāo)記為刪除并且立即將控制返回給該應(yīng)用,而不等待子對象的全面的完整的清理。相反,常規(guī)方法在刪除操作被同步地執(zhí)行的同時可能阻止該應(yīng)用繼續(xù)執(zhí)行。
[0063]在一些實現(xiàn)中,與常規(guī)對象刪除操作相比,分層垃圾收集可以更簡單。分層垃圾收集可使用在后臺執(zhí)行的進程來實現(xiàn),并且不需要應(yīng)用級的或用戶級的干預(yù)。為了刪除對象,應(yīng)用僅需將該對象標(biāo)記為刪除,而不必管理該對象的子對象的刪除。
【專利附圖】

【附圖說明】
[0064]圖1為本發(fā)明的提供對象關(guān)系數(shù)據(jù)庫的分層垃圾收集的系統(tǒng)應(yīng)用于具體實施例的概覽的框圖。
[0065]圖2為示出圖1的對象關(guān)系數(shù)據(jù)庫中的對象結(jié)構(gòu)的例子的示圖。
[0066]圖3為示出與圖2的對象結(jié)構(gòu)對應(yīng)的示例性表格結(jié)構(gòu)的示圖。
[0067]圖4為示出本發(fā)明的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng)中的標(biāo)記操作的例子的不圖。
[0068]圖5為示出本發(fā)明的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng)中的清掃操作的例子的不圖。
[0069]圖6為示出本發(fā)明的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集器的例子的組件的示圖。
[0070]圖7為示出本發(fā)明的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法中將對象標(biāo)記為刪除的進程的例子的流程圖。
[0071]圖8為示出本發(fā)明的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法中清掃刪除對象的進程的例子的流程圖。
[0072]圖9為示出本發(fā)明的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法應(yīng)用于具體實施例的流程圖。
[0073]圖10為本發(fā)明的用于實現(xiàn)圖1-9的特征和操作的系統(tǒng)架構(gòu)應(yīng)用于具體實施例的框圖。
[0074]各個圖中的相似標(biāo)號指示相似的元件。
【具體實施方式】
[0075]為了能夠更清楚地描述本發(fā)明的技術(shù)內(nèi)容,下面結(jié)合具體實施例來進行進一步的描述。
[0076]本發(fā)明描述了對象關(guān)系數(shù)據(jù)庫系統(tǒng)中的分層垃圾收集技術(shù)。當(dāng)對象關(guān)系數(shù)據(jù)庫系統(tǒng)接收到刪除對象的請求時,對象關(guān)系數(shù)據(jù)庫系統(tǒng)將該對象標(biāo)記為刪除。在后臺執(zhí)行的垃圾收集進程可執(zhí)行清掃和標(biāo)記的迭代以刪除對象和該對象的子對象。在每次迭代中,刪除一層或“一代”對象。垃圾收集進程可繼續(xù)迭代,直到對象和該對象的所有派生對象都被刪除為止。
[0077]分層垃圾收集系統(tǒng)的例子。
[0078]圖1是提供對象關(guān)系數(shù)據(jù)庫102的分層垃圾收集的概覽的框圖。對象關(guān)系數(shù)據(jù)庫102被編程為存儲、查詢和檢索對象104。對象(Objects) 104可包括具有用對象圖表示的相互依賴性的多個數(shù)據(jù)對象。對象104可包括父對象和被該父對象引用的子對象。以下參照圖2描述對象104的更多細節(jié)。
[0079]對象關(guān)系數(shù)據(jù)庫102包括對象映射(Object map) 106。對象映射106是對象關(guān)系數(shù)據(jù)庫102的將對象104映射到關(guān)系模型中的組件。對象映射106可將對象104之間的內(nèi)在分層關(guān)系轉(zhuǎn)換為在關(guān)系數(shù)據(jù)庫上下文下使用的等同的平展的關(guān)系模型。以下參照圖3描述對象映射106的更多細節(jié)。
[0080]對象關(guān)系數(shù)據(jù)庫102包括應(yīng)用接口(Application interface)108。應(yīng)用接口 108是對象關(guān)系數(shù)據(jù)庫102的組件,該組件被構(gòu)造為從應(yīng)用進程110接收從對象104查詢、修改、尤其是刪除數(shù)據(jù)對象的請求。應(yīng)用進程(Application procedure) 110可以是存儲在對象關(guān)系數(shù)據(jù)庫102內(nèi)的進程、對象關(guān)系數(shù)據(jù)庫102外部的應(yīng)用、或者用戶鍵入的查詢或進程。刪除請求(Request for deletion)可包括將被刪除的對象的對象標(biāo)識符(例如,對象名稱)。
[0081]當(dāng)接收到刪除對象的請求時,應(yīng)用接口 108將對象標(biāo)識符提供給對象標(biāo)記器(Object marker) 112。對象標(biāo)記器112是對象關(guān)系數(shù)據(jù)庫102的組件,該組件被構(gòu)造為接收對象標(biāo)識符、然后在對象映射106中將接收的對象標(biāo)識符所標(biāo)識的對象標(biāo)記為刪除。
[0082]對象關(guān)系數(shù)據(jù)庫102包括垃圾收集器(Garbage collector) 114。在一些實現(xiàn)中,垃圾收集器114是對象關(guān)系數(shù)據(jù)庫102的在后臺與應(yīng)用接口 108接收的請求無關(guān)地執(zhí)行進程(例如,自動地并且周期性地)的組件。垃圾收集器114讀取對象映射106以識別對象標(biāo)記器112標(biāo)記的對象。當(dāng)垃圾收集器114檢測到對象標(biāo)記器112標(biāo)記的對象時,垃圾收集器114從對象104刪除對應(yīng)的對象。
[0083]另外,垃圾收集器114可執(zhí)行分層對象刪除操作。在分層對象刪除操作中,垃圾收集器114遍歷對象映射106進行迭代。每次迭代可以是后臺進程的單獨激活。在每次迭代中,垃圾收集器114可從對象104刪除對象標(biāo)記器112標(biāo)記的對象。另外,垃圾收集器可從對象映射106識別對象標(biāo)記器112標(biāo)記的對象的直接(例如,第一代)子對象。在迭代中,垃圾收集器114可將第一代子對象的對象標(biāo)識符提供給對象標(biāo)記器112。繼而,對象標(biāo)記器112可在對象映射106中標(biāo)記每個第一代子對象。
[0084]在下一次迭代中,垃圾收集器114可刪除將被刪除的原始對象的第一代子對象,這些第一代子對象現(xiàn)在被對象標(biāo)記器112標(biāo)記。垃圾收集器114然后可識別并標(biāo)記原始對象的第二代子對象。垃圾收集器114可繼續(xù)執(zhí)行迭代,其中,在每次迭代中,刪除原始對象的一代子對象,并且標(biāo)記原始對象的下一代子對象。垃圾收集器114可重復(fù)后臺處理,直到被請求刪除的對象的所有派生對象都被從對象104刪除為止。
[0085]圖2是示出對象關(guān)系數(shù)據(jù)庫102中的對象結(jié)構(gòu)的示圖。存儲在對象關(guān)系數(shù)據(jù)庫102中的對象104可包括例如對象A、B、C和D。
[0086]對象A、B、C和D均可以例如是存儲在存儲裝置上(例如,存儲在計算機存儲器中或者硬盤上)的數(shù)據(jù)集合。對象A、B、C和D均可被作為具有單個存儲地址(例如,計算機存儲器中的地址)的單獨的不同的數(shù)據(jù)單元進行處理。對象A、B、C和D均可引用另一個對象。例如,對象A、B、C和D均可包括指向其他對象的一個或多個指針(可被重新分配并且可以為空的地址)或者其他對象的引用(不能被重新分配并且不能為空的地址)。指針和引用可創(chuàng)建兩個對象之間的依賴關(guān)系。
[0087]例如,在圖2中,對象A通過包括指向?qū)ο驜的指針或者對象B的引用來引用對象B。因此,對象B依賴于對象A。對象A是對象B的父對象(或第一代祖先對象)。對象B是對象A的子對象(或第一代派生對象)。另外,引用對象C的對象A是C的父對象,C又是對象D的父對象。在對象A與對象D之間存在兩個依賴層次。因此,對象A是對象D的第二代祖先對象,對象D是對象A的第二代派生對象。
[0088]對象之間的依賴關(guān)系可被表示為具有多個節(jié)點和連接這些節(jié)點的多個邊的對象圖。每個節(jié)點可表示對象。兩個節(jié)點之間的每個邊可表示這兩個節(jié)點所表示的對象之間的父子關(guān)系。對象樹202是表示對象A、B、C和D之間的分層父子關(guān)系的對象圖。對象樹202是正則樹,在該正則樹中,每個對象最多可具有一個父對象。對象樹202可具有一個或多個根對象,其中,每個根對象是沒有父對象的對象。在對象樹202中,不依賴于其他對象的對象A是根對象。
[0089]對象之間的交叉引用可發(fā)生在對象關(guān)系數(shù)據(jù)庫102中。例如,對象關(guān)系數(shù)據(jù)庫102的對象104可包括如對象樹204中所表示的那樣彼此相關(guān)的對象X、Y和Z。作為對象樹204中的對象X的子對象的對象Y可包括指向?qū)ο驝的指針或者對象C的引用。為了保持對象樹202和204的規(guī)律性,可以在應(yīng)用級,例如通過在對象Y中使用指向?qū)ο驝的指針或者對象C的引用的應(yīng)用或進程來管理對象C與對象Y之間的關(guān)系206。該關(guān)系可以是軟鏈接,在該軟鏈接中,對象C與對象Y之間的交叉引用既不用對象樹202,也不用對象樹204表示。應(yīng)用或進程負責(zé)基于應(yīng)用定義的啟發(fā)法來清理關(guān)系206。
[0090]圖3是示出與圖2的對象結(jié)構(gòu)2對應(yīng)的對象表格300的示圖。對象表格300可以是圖1的對象映射106的一部分。
[0091]對象關(guān)系數(shù)據(jù)庫102可具有關(guān)系|旲型,在該關(guān)系|旲型中,信息被存儲在表格中。這些表格具有類型化的(例如,整數(shù)、日期或字符串)并且命名的(例如,“id”或“名稱”)的列和行,每行包含數(shù)據(jù)的實例。表格的每行可具有多個數(shù)據(jù)字段,每個數(shù)據(jù)字段對應(yīng)于該表格的一列。對象關(guān)系數(shù)據(jù)庫102中的關(guān)系可以是創(chuàng)建表格中的數(shù)據(jù)行與同一表格或另一表格中的另一數(shù)據(jù)行之間的I對0、1對I或I對多的關(guān)系的函數(shù)。
[0092]對象樹202的對象用對象表格300表示,對象表格300將對象數(shù)據(jù)映射到對象關(guān)系數(shù)據(jù)庫102的關(guān)系模型中。對象表格300可將如對象樹202中所指示的對象A、B、C和D之間的內(nèi)在分層關(guān)系映射到關(guān)系數(shù)據(jù)庫系統(tǒng)中的與這些分層關(guān)系等同的平展關(guān)系模型中。映射可以基于父(Parent)子關(guān)系或路徑表達。為了說明的目的,基于父子關(guān)系的轉(zhuǎn)換被提供為圖3中所示的例子。在一些實現(xiàn)中,可使用基于路徑表達的轉(zhuǎn)換。
[0093]對象表格300包含對象標(biāo)識符列302和用于描述圖2的對象A、B、C和D之間的父子關(guān)系的父對象列304。對象標(biāo)識符列302是用于存儲對象的標(biāo)識符的列。父對象列304是用于存儲對象的父對象的標(biāo)識符的列。例如,對象表格300的行306存儲與對象樹202的對象A對應(yīng)的數(shù)據(jù)記錄。行306的與對象標(biāo)識符列302對應(yīng)的數(shù)據(jù)字段(對象標(biāo)識符數(shù)據(jù)字段)存儲對象A的標(biāo)識符(例如,“ I ”)。對象A是對象樹202中的根對象,指示沒有其他對象包含指向?qū)ο驛的指針或者對象A的引用。因此,行306的與父列304對應(yīng)的數(shù)據(jù)字段(父對象數(shù)據(jù)字段)可存儲“空”(null)值。
[0094]同樣地,對象表格300的行308可存儲行308的對象標(biāo)識符數(shù)據(jù)字段中的對象B的標(biāo)識符(例如,“2”)、以及行308的父對象數(shù)據(jù)字段中的對象A的標(biāo)識符,該對象A的標(biāo)識符指示對象A是對象B的父對象。行310和312可分別表示對象C和對象D、以及它們與對象A的關(guān)系和它們彼此的關(guān)系。
[0095]可查詢具有行306、308、310和312的對象表格300來發(fā)現(xiàn)給定對象的祖先對象和派生對象。例如,為了檢索對象C的父對象,查詢可檢索在行310的父對象數(shù)據(jù)字段中標(biāo)識的與對象C對應(yīng)的對象。為了檢索對象C的子對象,查詢可檢索在其父對象數(shù)據(jù)字段存儲對象C的標(biāo)識符(在這個例子中,“3”)的行(在這個例子中,行312)的對象標(biāo)識符數(shù)據(jù)字段中標(biāo)識的對象。
[0096]對象表格300可具有用于存儲每個對象的名稱例如,“A”、“B”、“C”和“D”)的對象名稱(Name)(列314和用于存儲對象的狀態(tài)的對象狀態(tài)(Status)列316。與狀態(tài)列316對應(yīng)的數(shù)據(jù)字段(狀態(tài)數(shù)據(jù)字段)可存儲指示對應(yīng)的對象是否準(zhǔn)備好被刪除的狀態(tài)。以下參照圖4和5描述關(guān)于在分層垃圾收集中利用對象狀態(tài)列316的更多細節(jié)。
[0097]圖4是示出分層垃圾收集中的標(biāo)記操作402的示圖。標(biāo)記(Mark)操作402可由(圖1的)對象標(biāo)記器112對對象表格300執(zhí)行。標(biāo)記操作402可系統(tǒng)地、遞增地將指定的對象標(biāo)記為刪除。對象標(biāo)記器112可基于來自(圖1的)應(yīng)用接口 108的請求跟隨被選擇刪除的對象。在所示的例子中,應(yīng)用接口 108請求刪除對象C,對象C用對象表格300的行310表示。
[0098]標(biāo)記操作402包括將對象C指定為根對象并且通過對象清掃器(以下參照圖5進行描述)將對象C指定為刪除。將對象C指定為根對象包括切斷對象C與其父對象(在這個例子中,對象A)之間的關(guān)系404。切斷關(guān)系404可包括將行310中的父對象數(shù)據(jù)字段設(shè)置為空(或者指示對象C沒有父對象的任何值,例如,無窮大)。將對象C指定為刪除包括將刪除標(biāo)記插入在行310的狀態(tài)數(shù)據(jù)字段中。對象表格300中的對象狀態(tài)列316中的每個記錄可具有指示該對象沒有被標(biāo)記為刪除的初始值(例如,“0K”)。行310的狀態(tài)數(shù)據(jù)字段中插入的刪除標(biāo)記(例如,“DEL”)可指示對象C已準(zhǔn)備好被刪除?;谛?10中插入的刪除標(biāo)記,清掃器可刪除行310和行310所表示的對象C。
[0099]圖5是示出分層垃圾收集中的清掃操作的示圖。對象關(guān)系數(shù)據(jù)庫102的對象清掃器可周期性地對(圖1的)對象表格300和(圖1的)對象104執(zhí)行清掃操作。清掃操作可包括刪除操作502和標(biāo)記操作504。在刪除操作502中,對象清掃器可識別對象表格300中的被標(biāo)記為刪除的行,刪除這些行,并且刪除這些行所表示的數(shù)據(jù)對象。例如,對象清掃器可基于存儲在行310的狀態(tài)數(shù)據(jù)字段中的刪除標(biāo)記來識別行310。對象清掃器然后可刪除行310,并且刪除行310的對象標(biāo)識符數(shù)據(jù)字段中標(biāo)識的對象C。
[0100]在標(biāo)記操作504中,對象清掃器識別每個被刪對象的子對象(第一代派生對象),并請求(圖1的)對象標(biāo)記器112將每個子對象標(biāo)記為刪除。例如,對象清掃器可在對象表格300中搜索其中父對象數(shù)據(jù)字段存儲被刪對象的標(biāo)識符的行。對象清掃器基于存儲在行312的父對象數(shù)據(jù)字段中的標(biāo)識符(“3”)來將行312識別為表示對象C的子對象。對象清掃器然后請求對象標(biāo)記器112標(biāo)記每個被識別行。作為響應(yīng),對象標(biāo)記器112可通過將行312的父對象數(shù)據(jù)字段設(shè)置為空并且將刪除標(biāo)記存儲在行312的狀態(tài)數(shù)據(jù)字段中來將行312標(biāo)記為刪除(包括切斷行312與被刪行310之間的關(guān)系506)。在下一次清掃迭代中,對象清掃器可刪除行312和行312所表示的對象D。在多次迭代中,可以以類似的方式刪除對象任意深度的父子分層結(jié)構(gòu)。
[0101]圖6是示出分層垃圾收集器的組件的示圖。分層垃圾收集器可以是圖1的垃圾收集器114。分層垃圾收集器包括對象清掃器602,對象清掃器602是對象關(guān)系數(shù)據(jù)庫102的被構(gòu)造為執(zhí)行如以上參照圖5描述的清掃操作的組件。分層垃圾收集器包括對象標(biāo)記器接口 604。對象標(biāo)記器接口(Object marker interface)604是對象關(guān)系數(shù)據(jù)庫102的組件,該組件被構(gòu)造為從對象清掃器(Object sweeper>602接收對象表格300中的表示被對象清掃器602刪除的對象的子對象的行的標(biāo)識符,并且請求對象標(biāo)記器112將識別的行標(biāo)記為刪除。
[0102]垃圾收集器114可包括清掃器控制器(Sweeper controller)606。清掃器控制器606是對象關(guān)系數(shù)據(jù)庫102的被構(gòu)造為指定用于對象清掃器602的操作的執(zhí)行參數(shù)的組件。執(zhí)行參數(shù)可包括這些操作的執(zhí)行頻率(例如,每秒鐘或每分鐘X次)ο執(zhí)行參數(shù)可包括清掃操作的退出條件。清掃操作是迭代的,并且當(dāng)滿足退出條件時可終止。在一些實現(xiàn)中,當(dāng)不再存在要跟隨的根對象或者不再存在被標(biāo)記為刪除的對象時,清掃操作可終止。在一些實現(xiàn)中,當(dāng)滿足系統(tǒng)定義的限制時,清掃操作可終止。所述限制可包括對于被檢驗的行的數(shù)量或者預(yù)定義的垃圾收集持續(xù)時間的限制。當(dāng)對象清掃器602已至少檢驗了指定數(shù)量的行時,或者當(dāng)自從清掃操作開始以后過去的時間到達或超過預(yù)定義的垃圾收集持續(xù)時間時,迭代操作可終止。
[0103]在一些實現(xiàn)中,清掃器控制器606指定的執(zhí)行參數(shù)可包括用于啟動對象清掃器602的觸發(fā)條件。觸發(fā)條件可包括時間觸發(fā)(例如,對象清掃器602在每分鐘或每小時開始時開始清掃)或事件觸發(fā)(例如,對象清掃器602在從(圖1的)應(yīng)用接口 108接收到請求時開始清掃)。
[0104]示例性進程。
[0105]圖7是示出將對象標(biāo)記為刪除的進程700的流程圖。進程700可由圖1的對象標(biāo)記器112執(zhí)行。
[0106](702)從應(yīng)用接口或清掃器接收刪除對象的請求;
[0107](704)解除對象的鏈接;
[0108](706 )更新對象的狀態(tài)
[0109]對象標(biāo)記器112從應(yīng)用接口 108或者從對象清掃器602接收刪除對象的請求。該請求可包括對象的名稱或其他標(biāo)識符。對象標(biāo)記器112然后使用該名稱或其他標(biāo)識符在對象表格300中搜索該對象。如果對象標(biāo)記器112找到表示該對象的行,則對象標(biāo)記器112解除該對象的鏈接(704)。解除對象的鏈接可包括將該行的父對象數(shù)據(jù)字段設(shè)置為空。對象標(biāo)記器112更新(706)該對象的狀態(tài)。更新該對象的狀態(tài)可包括將刪除標(biāo)記存儲在該行中的狀態(tài)數(shù)據(jù)字段中,指示對象清掃器602可在下一次清掃中刪除該行和該行中表示的對象。
[0110]圖8是清掃刪除對象的進程800的流程圖。[0111](802)接收執(zhí)行調(diào)度的清掃的命令;
[0112](804)要刪除的對象?
[0113](806)退出;
[0114](808)將子對象標(biāo)示為刪除;
[0115](810)刪除對象。
[0116]進程800可由圖6的對象清掃器602執(zhí)行。對象清掃器602接收(802)執(zhí)行對象清掃操作的一個或多個指令。這些指令可由系統(tǒng)基于觸發(fā)時間(例如,清掃器控制器606設(shè)置的開始清掃的時間)或觸發(fā)事件(例如,當(dāng)應(yīng)用接口 108接收到刪除對象的請求時)來提供。
[0117]對象清掃器602確定(804)是否存在要刪除的對象。對象清掃器602可通過在對象表格300中搜索表示根對象并且被標(biāo)記為刪除的行來進行該確定。如果對象清掃器602識別沒有對象要刪除,或者當(dāng)滿足退出條件時,對象清掃器602可退出(806)。
[0118]如果對象清掃器602識別有一個或多個對象要刪除,則對象清掃器602將每個被識別對象的每個子對象標(biāo)示為刪除(808)。將子對象標(biāo)示為刪除可包括使對象標(biāo)記器112將刪除標(biāo)記存儲在對象表格300中的表示子對象的行的狀態(tài)數(shù)據(jù)字段中。對象清掃器602可從存儲裝置(例如,存儲器)刪除(810)識別的對象,并從對象表格300刪除對應(yīng)的行。對象清掃器602然后可返回到階段804,以執(zhí)行下一次迭代。
[0119]圖9是示出分層垃圾收集的進程900的流程圖。進程900可由實現(xiàn)對象關(guān)系數(shù)據(jù)庫102的系統(tǒng)執(zhí)行。該系統(tǒng)可包括一個或多個獨立的或聯(lián)網(wǎng)的計算機。該系統(tǒng)可以是企業(yè)規(guī)模的數(shù)據(jù)庫系統(tǒng)。
[0120](902)計算裝置接收刪除數(shù)據(jù)對象的請求,該數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示;
[0121](904)從數(shù)據(jù)表格將記錄標(biāo)記為刪除;
[0122](906)在一次或多次迭代中清掃數(shù)據(jù)表格。
[0123]該系統(tǒng)可接收(902)刪除數(shù)據(jù)對象(例如,圖2的對象C)的請求。數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示。該記錄可以是對象表格300中的行(例如,行310)。該記錄的對象標(biāo)識符數(shù)據(jù)字段存儲該數(shù)據(jù)對象的表示。該記錄的父標(biāo)識符數(shù)據(jù)字段存儲該數(shù)據(jù)對象的父對象的表示。該數(shù)據(jù)對象的父對象是通過包含指向該數(shù)據(jù)對象的指針或者該數(shù)據(jù)對象的引用來引用該數(shù)據(jù)對象的對象。該系統(tǒng)可從該系統(tǒng)的組件或者從該系統(tǒng)外部的計算機接收該請求。
[0124]該系統(tǒng)從數(shù)據(jù)表將記錄標(biāo)記(904)為刪除。將記錄標(biāo)記為刪除可包括將刪除標(biāo)記存儲在該記錄的狀態(tài)數(shù)據(jù)字段中并且將該記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。將該記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象可包括消除該記錄的父標(biāo)識符數(shù)據(jù)字段。
[0125]該系統(tǒng)在一次或多次迭代中清掃(906)數(shù)據(jù)表格。在每次迭代中,該系統(tǒng)可從數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄。該系統(tǒng)刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象。該系統(tǒng)然后在下一次迭代中從數(shù)據(jù)表將其父標(biāo)識符數(shù)據(jù)字段存儲被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除。該系統(tǒng)執(zhí)行一次或多次迭代,直到滿足退出條件為止。當(dāng)數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量超過定義的限制時,滿足退出條件。在一些實現(xiàn)中,該系統(tǒng)可與接收請求無關(guān)地將一次或多次清掃迭代作為后臺進程執(zhí)行。在一些實現(xiàn)中,刪除對象的請求可觸發(fā)該系統(tǒng)執(zhí)行一次或多次清掃迭代。
[0126]在一些實現(xiàn)中,在從數(shù)據(jù)表格將記錄標(biāo)記為刪除之后并且在數(shù)據(jù)對象被刪除之前,該系統(tǒng)可阻止查詢訪問該數(shù)據(jù)對象。因此,在等待下一次清掃的刪除時,數(shù)據(jù)對象對于應(yīng)用或進程可以表現(xiàn)為被刪除。
[0127]示例性系統(tǒng)架構(gòu)
[0128]圖10是用于實現(xiàn)圖1-9的特征和操作的系統(tǒng)架構(gòu)(System architecture)1000的框圖。其他架構(gòu)(包括具有更多或更少組件的架構(gòu))是可能的。在一些實現(xiàn)中,架構(gòu)1000包括一個或多個處理器(Processor)1002 (例如,雙核Inter? Xconi?處理器)、一個或多個輸出裝置1004 (Output device)(例如,與IXD監(jiān)視器的接口)、一個或多個網(wǎng)絡(luò)接口(Networkinterface)1006、一個或多個輸入裝置(Input device)1008 (Input device)(例如,鼠標(biāo)、鍵盤、觸摸敏感顯示器或遠程控制器)、以及一個或多個計算機可讀模塊1012 (例如,RAM、R0MSDRAM、硬盤、光學(xué)盤、閃存等)。這些組件可通過一個或多個通信信道1010 (例如,總線)交換通信和數(shù)據(jù),這些通信信道1010可利用用于便利于組件之間的數(shù)據(jù)和控制信號的傳送的各種硬件和軟件。
[0129]術(shù)語“計算機可讀模塊”是指參與將指令提供給處理器1002以用于執(zhí)行的任何模塊,包括,但不限于,非易失性模塊(例如,光學(xué)盤或磁盤)、易失性模塊(例如,存儲器)和傳輸模塊。傳輸模塊的例子包括,但不限于,同軸電纜、銅線和光纖。
[0130]計算機可讀模塊1012還可包括操作系統(tǒng)(Operating system) 1014 (例如,Mac OS?.服務(wù)器、Windows Server?、UNIX?、Linux?或 i〇SK.)、網(wǎng)絡(luò)通信模塊(Networkcommunication module) 1016、對象標(biāo)記器指令(0bject marking instructions) 1020、對象清掃指令(0b ject sweeping instructions) 1030和對象清掃配置指令(0b jectsweeping configuration instructions) 1040。操作系統(tǒng) 1014 可以是多用戶的、多處理的、多任務(wù)的、多線程的、實時的、等等。操作系統(tǒng)1014執(zhí)行基本任務(wù),包括,但不限于:辨識來自裝置1006、1008的輸入并且將輸出提供給裝置1006、1008 ;保持跟蹤計算機可讀模塊1012 (例如,存儲器或存儲裝置)上的文件和目錄,并且管理這些文件和目錄;控制外設(shè)裝置;并且管理一個或多個通信信道1010上的流量。網(wǎng)絡(luò)通信模塊1016包括用于建立和維護網(wǎng)絡(luò)連接的各種組件(例如,用于實現(xiàn)通信協(xié)議(比如,TCP/IP、HTTP等)的軟件)。對象標(biāo)記指令1020可包括當(dāng)被執(zhí)行時使處理器1002執(zhí)行對象標(biāo)記器112的操作的計算機指令。對象清掃指令1030可包括當(dāng)被執(zhí)行時使處理器1002執(zhí)行對象清掃器602和對象標(biāo)記器接口 604的操作的計算機指令。對象清掃配置指令1040可包括當(dāng)被執(zhí)行時使處理器1002執(zhí)行清掃器控制器606的操作的計算機指令。
[0131]架構(gòu)1000可以例如在并行處理或?qū)Φ然A(chǔ)設(shè)施中或者在具有一個或多個處理器的單個裝置上實現(xiàn)。軟件可包括多個軟件組件,或者可以是單個代碼主體。
[0132]所描述的特征可以·有利地用可在可編程系統(tǒng)上執(zhí)行的一個或多個計算機程序?qū)崿F(xiàn),該可編程系統(tǒng)包括被耦合以從數(shù)據(jù)存儲系統(tǒng)接收數(shù)據(jù)和指令并且將數(shù)據(jù)和指令發(fā)送到數(shù)據(jù)存儲系統(tǒng)的至少一個可編程處理器、至少一個輸入裝置和至少一個輸出裝置。計算機程序是可在計算機中直接地或間接地用于執(zhí)行某一活動或者引起某一結(jié)果的指令集。計算機程序可以用任何形式的編程語言(例如,C、SQL或Java)(包括編譯語言或解釋語言)編寫,并且它可被以任何形式(包括作為獨立程序或者作為模塊、組件、子例行程序、基于瀏覽器的web應(yīng)用、或者適用于計算機環(huán)境下的其他單元)部署。
[0133]適用于執(zhí)行指令程序的處理器舉例來說包括通用微處理器和專用微處理器兩者、以及任何類型的計算機的單個處理器或者多個處理器或內(nèi)核之一。通常,處理器將從只讀存儲器或隨機存取存儲器或者這兩者接收指令和數(shù)據(jù)。計算機的基本元件是用于執(zhí)行指令的處理器和用于存儲指令和數(shù)據(jù)的一個或多個存儲器。通常,計算機還將包括用于存儲數(shù)據(jù)文件的一個或多個大容量存儲裝置,或者與這些大容量存儲裝置可操作地耦合以與它們進行通信;這樣的裝置包括磁盤(比如,內(nèi)部硬盤和可移動盤);磁光盤;以及光學(xué)盤。適合于有形地實施計算機程序指令和數(shù)據(jù)的存儲裝置包括所有形式的非易失性存儲器,舉例來說包括半導(dǎo)體存儲器器件(比如,EPROM、EEPROM和閃存裝置);磁盤(比如,內(nèi)部硬盤和可移動盤);磁光盤;以及⑶-ROM和DVD-ROM盤。處理器和存儲器可被輔以ASIC (專用集成電路)或者被并入ASIC中。
[0134]為了提供與用戶的交互,這些特征可在計算機上實現(xiàn),該計算機具有用于向用戶顯示信息的顯示裝置(比如,CRT (陰極射線管)或IXD (液晶顯示器)監(jiān)視器)、用戶可通過其將輸入提供給計算機的鍵盤和定點裝置(比如,鼠標(biāo)或軌跡球)。
[0135]這些特征可在計算機系統(tǒng)中實現(xiàn),該計算機系統(tǒng)包括后端組件(比如,數(shù)據(jù)服務(wù)器),或者包括中間件組件(比如,應(yīng)用服務(wù)器或互聯(lián)網(wǎng)服務(wù)器),或者包括前端組件(比如,具有圖形用戶界面或互聯(lián)網(wǎng)瀏覽器的客戶端計算機)、或者它們的任何組合。該系統(tǒng)的組件可通過任何形式或模塊的數(shù)字?jǐn)?shù)據(jù)通信(比如,通信網(wǎng)絡(luò))連接。通信網(wǎng)絡(luò)的例子包括例如LAN、WAN、PAN以及形成互聯(lián)網(wǎng)的計算機和網(wǎng)絡(luò)。
[0136]計算機系統(tǒng)可包括客戶端和服務(wù)器??蛻舳撕头?wù)器通常彼此遠離,并且通常通過網(wǎng)絡(luò)進行交互。客戶端和服務(wù)器的關(guān)系由于在各個計算機上運行并且彼此具有客戶端-服務(wù)器關(guān)系的計算機程序而引起。
[0137]采用了該發(fā)明中的對象關(guān)系數(shù)據(jù)庫系統(tǒng)中的分層垃圾收集,具有如下有益效果:
[0138]可實現(xiàn)本說明書中描述的特征來實現(xiàn)一個或多個優(yōu)點。例如,在一些實現(xiàn)中,分層垃圾收集可以是執(zhí)行映射到關(guān)系數(shù)據(jù)庫系統(tǒng)的任意復(fù)雜對象的深層次遞歸刪除的、系統(tǒng)的、遞增的機制。與常規(guī)對象刪除操作相比,分層垃圾收集可以更有效率。
[0139]與常規(guī)實現(xiàn)相比,分層垃圾收集可以更有擴展性??墒褂枚ㄖ频倪M度表、閾值和檢查點來實現(xiàn)分層垃圾收集,以使得能夠處理具有任意深層次配置的大量(例如,數(shù)百萬個)對象和子對象的企業(yè)規(guī)模的數(shù)據(jù)庫。
[0140]與常規(guī)實現(xiàn)相比,分層垃圾收集可得到響應(yīng)性更高的應(yīng)用體驗。分層垃圾收集可被實現(xiàn)為使得請求刪除對象的行動者(通常,終端用戶應(yīng)用)僅需將該對象標(biāo)記為刪除并且立即將控制返回給該應(yīng)用,而不等待子對象的全面的完整的清理。相反,常規(guī)方法在刪除操作被同步地執(zhí)行的同時可能阻止該應(yīng)用繼續(xù)執(zhí)行。
[0141]在一些實現(xiàn)中,與常規(guī)對象刪除操作相比,分層垃圾收集可以更簡單。分層垃圾收集可使用在后臺執(zhí)行的進程來實現(xiàn),并且不需要應(yīng)用級的或用戶級的干預(yù)。為了刪除對象,應(yīng)用僅需將該對象標(biāo)記為刪除,而不必管理該對象的子對象的刪除。
[0142]在此說明書中,本發(fā)明已參照其特定的實施例作了描述。但是,很顯然仍可以作出各種修改和變換而不背離本發(fā)明的精神和范圍。因此,說明書和附圖應(yīng)被認為是說明性的而非限制性的。
【權(quán)利要求】
1.一種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,所述的方法包括以下步驟: 由一個或多個計算機接收刪除數(shù)據(jù)對象的請求,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示; 從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除;和 在一次或多次迭代中清掃所述數(shù)據(jù)表格,包括在每次清掃迭代中: 從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄; 刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除; 其中,所述一個或多個計算機執(zhí)行所述一次或多次迭代,直到滿足退出條件為止。
2.根據(jù)權(quán)利要求1所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,所述的數(shù)據(jù)對象的父對象是引用所述數(shù)據(jù)對象的對象。
3.根據(jù)權(quán)利要求1所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除包括:將刪除標(biāo)記存儲在所述記錄的狀態(tài)數(shù)據(jù)字段中并且將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。
4.根據(jù)權(quán)利要求3所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象包括:清除所述記錄的父標(biāo)識符數(shù)據(jù)字段。`
5.根據(jù)權(quán)利要求3所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,當(dāng)所述數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量達到或超過定義的限制時,滿足所述退出條件。
6.根據(jù)權(quán)利要求1所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,所述的方法還包括以下步驟: 在從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除之后并且在所述數(shù)據(jù)對象被刪除之前,阻止查詢訪問所述數(shù)據(jù)對象。
7.根據(jù)權(quán)利要求1所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的方法,其特征在于,所述一個或多個計算機與接收所述請求無關(guān)地將所述一次或多次清掃迭代作為后臺進程執(zhí)行。
8.一種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,所述非暫時性存儲模塊用以使一個或多個計算機執(zhí)行包括以下的操作的計算機指令: 接收刪除數(shù)據(jù)對象的請求,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示; 從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除;和 在一次或多次迭代中清掃所述數(shù)據(jù)表格,包括在每次清掃迭代中: 從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄; 刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后 從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除; 其中,所述一個或多個計算機執(zhí)行所述一次或多次迭代,直到滿足退出條件為止。
9.根據(jù)權(quán)利要求8所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,所述數(shù)據(jù)對象的父對象是引用所述數(shù)據(jù)對象的對象。
10.根據(jù)權(quán)利要求8所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,從所述數(shù)據(jù)表格將記錄標(biāo)記為刪除包括:將刪除標(biāo)記存儲在所述記錄的狀態(tài)數(shù)據(jù)字段中并且將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。
11.根據(jù)權(quán)利要求10所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象包括:清除所述記錄的父標(biāo)識符數(shù)據(jù)字段。
12.根據(jù)權(quán)利要求10所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,當(dāng)所述數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量超過定義的限制時,滿足所述退出條件。
13.根據(jù)權(quán)利要求8所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,所述操作還包括: 在從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除之后并且在所述數(shù)據(jù)對象被刪除之前,阻止查詢訪問所述數(shù)據(jù)對象。
14.根據(jù)權(quán)利要求8所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的非暫時性存儲模塊,其特征在于,所述指令使所述一個或多個計算機與接收所述請求無關(guān)地將所述一次或多次清掃迭代作為后臺進程執(zhí)行。`
15.一種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,所述的系統(tǒng)包括: 一個或多個計算機,所述一個或多個計算機被編程為接收刪除數(shù)據(jù)對象的請求,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示; 非暫時性存儲模塊,所述非暫時性存儲模塊用以使所述一個或多個計算機執(zhí)行包括以下的操作的計算機指令: 從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除;和 在一次或多次迭代中清掃所述數(shù)據(jù)表格,包括在每次清掃迭代中: 從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄; 刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除; 其中,所述一個或多個計算機被編程為執(zhí)行所述一次或多次迭代,直到滿足退出條件為止。
16.根據(jù)權(quán)利要求15所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,所述數(shù)據(jù)對象的父對象是引用所述數(shù)據(jù)對象的對象。
17.根據(jù)權(quán)利要求15所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,從所述數(shù)據(jù)表格將記錄標(biāo)記為刪除包括:將刪除標(biāo)記存儲在所述記錄的狀態(tài)數(shù)據(jù)字段中并且將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象。
18.根據(jù)權(quán)利要求17所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,將所述記錄的對象標(biāo)識符數(shù)據(jù)字段中表示的數(shù)據(jù)對象指定為根對象包括:清除所述記錄的父標(biāo)識符數(shù)據(jù)字段。
19.根據(jù)權(quán)利要求17所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,當(dāng)所述數(shù)據(jù)表格中的記錄中表示的所有根對象都被刪除時,或者當(dāng)被檢驗為刪除的記錄的數(shù)量超過定義的限制時,滿足所述退出條件。
20.根據(jù)權(quán)利要求15所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,所述操作包括: 在從所述數(shù)據(jù)表格將所述記錄標(biāo)記為刪除之后并且在所述數(shù)據(jù)對象被刪除之前,阻止查詢訪問所述數(shù)據(jù)對象。
21.根據(jù)權(quán)利要求15所述的對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,所述一個或多個計算機響應(yīng)于接收到所述請求來執(zhí)行所述一次或多次清掃迭代或者與接收所述請求無關(guān)地將所述一次或多次清掃迭代作為后臺進程執(zhí)行。
22.—種對象關(guān)系數(shù)據(jù)庫中分層垃圾收集的系統(tǒng),其特征在于,所述的系統(tǒng)包括: 非暫時性存儲裝置,所述非暫時性存儲裝置存儲數(shù)據(jù)對象和數(shù)據(jù)表格,所述數(shù)據(jù)對象用數(shù)據(jù)表格中的記錄表示,其中,所述記錄的對象標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的表示,并且所述記錄的父標(biāo)識符數(shù)據(jù)字段存儲所述數(shù)據(jù)對象的父對象的表示; 應(yīng)用接口,所述應(yīng)用接口被編程為接收刪除數(shù)據(jù)對象的請求; 對象標(biāo)記器,所述對象標(biāo)記器被編程為從所述數(shù)據(jù)表格將所述數(shù)據(jù)記錄標(biāo)記為刪除;和` 對象清掃器,所述對象清掃器被編程為在直到滿足退出條件為止的一次或多次迭代中執(zhí)行對象清掃操作,其中,所述對象清掃操作的每次迭代包括: 從所述數(shù)據(jù)表格刪除被標(biāo)記為刪除的每個記錄; 從所述存儲裝置刪除被刪記錄的對象標(biāo)識符字段中表示的每個數(shù)據(jù)對象;以及然后從所述數(shù)據(jù)表格將其父標(biāo)識符數(shù)據(jù)字段存儲所述被刪數(shù)據(jù)對象的表示的每個記錄標(biāo)記為刪除。
【文檔編號】G06F17/30GK103678725SQ201410005207
【公開日】2014年3月26日 申請日期:2014年1月6日 優(yōu)先權(quán)日:2013年9月11日
【發(fā)明者】道格拉斯·艾倫·沃爾特 申請人:云巔(上海)網(wǎng)絡(luò)科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
漳州市| 朔州市| 荔波县| 达日县| 平潭县| 雅安市| 新化县| 定襄县| 乌鲁木齐市| 邯郸县| 买车| 中江县| 呼伦贝尔市| 堆龙德庆县| 贵州省| 福安市| 特克斯县| 新田县| 汤阴县| 冕宁县| 綦江县| 响水县| 元江| 南昌市| 孟州市| 叶城县| 富阳市| 巴楚县| 大新县| 手机| 吉林市| 华容县| 印江| 沈阳市| 西华县| 都江堰市| 钟山县| 陕西省| 镇雄县| 泰宁县| 南京市|