一種訪問數(shù)據(jù)實體的方法及裝置的制造方法
【技術(shù)領(lǐng)域】
[0001] 本申請涉及計算機應(yīng)用領(lǐng)域,特別涉及一種訪問數(shù)據(jù)實體的方法及裝置。
【背景技術(shù)】
[0002] 數(shù)據(jù)實體,是數(shù)據(jù)元素的集合,可以通過數(shù)據(jù)存儲進行管理或通過計算獲得。例 如,傳統(tǒng)關(guān)系數(shù)據(jù)庫中的一行數(shù)據(jù)可以理解為一個數(shù)據(jù)實體。
[0003] 通常,在復雜度較高的系統(tǒng)中會存在大量對數(shù)據(jù)實體的訪問。而對數(shù)據(jù)實體的不 同訪問之間,可能存在前置依賴關(guān)系,即一個訪問的運行可能依賴于得到另一個訪問所訪 問到的數(shù)據(jù)實體,如果得不到另一個訪問所訪問到的數(shù)據(jù)實體將發(fā)生運行錯誤。因此,為了 避免運行錯誤,目前一般采用完全串行的方式對數(shù)據(jù)實體進行訪問。
[0004] 但是,只采用串行的方式對數(shù)據(jù)實體進行訪問,總體訪問時間等于所有訪問的時 間的總和,系統(tǒng)的運行效率很低。
【發(fā)明內(nèi)容】
[0005] 有鑒于此,本申請的目的在于提供一種訪問數(shù)據(jù)實體的方法及裝置以實現(xiàn)提高系 統(tǒng)運行效率的目的。
[0006] 在本申請實施例的第一個方面,提供了一種訪問數(shù)據(jù)實體的方法,例如,該方法可 以包括:響應(yīng)于接收到對數(shù)據(jù)實體的多個訪問請求,針對所述訪問請求返回模擬數(shù)據(jù)實體、 以及基于所述多個訪問請求,執(zhí)行對所述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體的并行訪問, 其中,所述模擬數(shù)據(jù)實體內(nèi)置有異步線程,所述異步線程,用于當訪問到與所述模擬數(shù)據(jù)實 體對應(yīng)的真正數(shù)據(jù)實體時,獲取所述真正數(shù)據(jù)實體的內(nèi)容,將所述真正數(shù)據(jù)實體的內(nèi)容載 入所述模擬數(shù)據(jù)實體;當存在針對所述模擬數(shù)據(jù)實體的調(diào)用時,判斷所述模擬數(shù)據(jù)實體是 否已載入真正數(shù)據(jù)實體的內(nèi)容;如果否,返回到所述判斷模擬數(shù)據(jù)實體是否已載入真正數(shù) 據(jù)實體的內(nèi)容的步驟;如果是,將所述模擬數(shù)據(jù)實體返回以供調(diào)用。
[0007] 在本申請實施例的第二個方面,提供了一種訪問數(shù)據(jù)實體的裝置,例如,該裝置可 以包括:接收單元,用于響應(yīng)于接收到對數(shù)據(jù)實體的多個訪問請求,針對所述訪問請求返回 模擬數(shù)據(jù)實體、以及基于所述多個訪問請求,執(zhí)行對所述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實 體的并行訪問,其中,所述模擬數(shù)據(jù)實體內(nèi)置有異步線程,所述異步線程,用于當訪問到與 所述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體時,獲取所述真正數(shù)據(jù)實體的內(nèi)容,將所述真正數(shù) 據(jù)實體的內(nèi)容載入所述模擬數(shù)據(jù)實體;判斷單元,用于當存在針對所述模擬數(shù)據(jù)實體的調(diào) 用時,判斷所述模擬數(shù)據(jù)實體是否已載入真正數(shù)據(jù)實體的內(nèi)容;堵塞單元,用于如果所述判 斷單元判定為否,重新觸發(fā)所述判斷單元執(zhí)行;返回單元,用于如果所述判斷單元判定為 是,將所述模擬數(shù)據(jù)實體返回以供調(diào)用。
[0008] 可見本申請具有如下有益效果:
[0009] 由于本申請針對所接收的多個訪問請求返回了模擬數(shù)據(jù)實體,以及基于所述多個 訪問請求,執(zhí)行了對真正數(shù)據(jù)實體的并行訪問,因此,對于有前置依賴的訪問請求來說,發(fā) 出對已返回的模擬數(shù)據(jù)實體的調(diào)用不會發(fā)生運行錯誤,在模擬數(shù)據(jù)實體還未載入真正數(shù)據(jù) 實體內(nèi)容時,可以等待真正數(shù)據(jù)實體的內(nèi)容以待調(diào)用,對于無前置依賴的多個訪問請求來 說,可以執(zhí)行對與模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體的并行訪問,從而可以減少總體訪問 時間,提商系統(tǒng)運彳丁效率。
【附圖說明】
[0010] 為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 申請中記載的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提 下,還可以根據(jù)這些附圖獲得其他的附圖。
[0011] 圖1為本申請實施例提供的一種訪問數(shù)據(jù)實體的方法流程示意圖;
[0012] 圖2為本申請實施例涉及的代理模式示意圖;
[0013] 圖3為本申請實施例提供的一種訪問數(shù)據(jù)實體的裝置結(jié)構(gòu)示意圖之一;
[0014] 圖4為本申請實施例提供的一種訪問數(shù)據(jù)實體的裝置結(jié)構(gòu)示意圖之二。
【具體實施方式】
[0015] 為了使本技術(shù)領(lǐng)域的人員更好地理解本申請中的技術(shù)方案,下面將結(jié)合本申請實 施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施 例僅僅是本申請一部分實施例,而不是全部的實施例。基于本申請中的實施例,本領(lǐng)域普通 技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都應(yīng)當屬于本申請保護 的范圍。
[0016] 為了能夠通過并行訪問數(shù)據(jù)實體的方式提高系統(tǒng)運行效率,本申請人發(fā)現(xiàn),在接 收到對數(shù)據(jù)實體的多個訪問請求時,可以虛擬出與訪問請求對應(yīng)的模擬數(shù)據(jù)實體,返回模 擬數(shù)據(jù)實體,以及基于所述多個訪問請求,執(zhí)行對與模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體的 并行訪問。其中,所述模擬數(shù)據(jù)實體可以內(nèi)置有異步線程,異步線程可以用于當訪問到與所 述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體時,以異步方式獲取所述真正數(shù)據(jù)實體的內(nèi)容,將真 正數(shù)據(jù)實體的內(nèi)容載入所述模擬數(shù)據(jù)實體。當存在針對所述模擬數(shù)據(jù)實體的調(diào)用時,可以 通過判定模擬數(shù)據(jù)實體還未載入真正數(shù)據(jù)實體的內(nèi)容循環(huán)進行判斷,堵塞調(diào)用,如果已載 入,可以將模擬數(shù)據(jù)實體返回以供調(diào)用。因此,對于有前置依賴的訪問請求來說,發(fā)出對已 返回的模擬數(shù)據(jù)實體的調(diào)用不會發(fā)生運行錯誤,在模擬數(shù)據(jù)實體還未載入真正數(shù)據(jù)實體內(nèi) 容時,可以通過循環(huán)判斷等待真正數(shù)據(jù)實體的內(nèi)容以待調(diào)用,對于無前置依賴的多個訪問 請求來說,可以執(zhí)行對與模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體的并行訪問,從而可以減少總 體訪問時間,提1?系統(tǒng)運打效率。
[0017] 基于上述分析,本申請實施例提供了一種訪問數(shù)據(jù)實體的方法。參見圖1,為本申 請實施例提供的訪問數(shù)據(jù)實體的方法流程示意圖。如圖1所示,該實施例可以包括:
[0018] S110、響應(yīng)于接收到對數(shù)據(jù)實體的多個訪問請求,針對所述訪問請求返回模擬數(shù) 據(jù)實體、以及基于所述多個訪問請求,執(zhí)行對所述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體的并 行訪問,其中,所述模擬數(shù)據(jù)實體內(nèi)置有異步線程;
[0019] 例如,在接收到對數(shù)據(jù)實體的訪問請求時,可以針對該訪問請求實時動態(tài)生成對 應(yīng)的模擬數(shù)據(jù)實體。其中,所述模擬數(shù)據(jù)實體可以為實例化產(chǎn)生的可執(zhí)行對象,在該可執(zhí)行 對象中可以內(nèi)置有異步線程、設(shè)置與真正數(shù)據(jù)實體相應(yīng)的屬性域(例如,字段、參數(shù)等等)、 且還可以在該可執(zhí)行對象中自動加入用于實現(xiàn)以下步驟S120~S150的代碼,以便所有需 要調(diào)用該模擬數(shù)據(jù)實體的程序在實現(xiàn)對該模擬數(shù)據(jù)實體的調(diào)用之前,可以等待真正數(shù)據(jù)實 體的內(nèi)容的載入。
[0020] 例如,本申請實施例可以使用代理模式。如,Java中可以使用cgl ib (Code Generation Library,類生成庫)實現(xiàn)代理模式。在代理模式中,如圖2所示,代理對象210 與委托對象220有同樣的接口 230,代理對象主要負責為委托對象預(yù)處理消息、過濾消息、 把消息轉(zhuǎn)發(fā)給委托對象、以及事后處理消息等。代理對象與委托對象之間存在關(guān)聯(lián)關(guān)系,代 理對象本身并不真正實現(xiàn)服務(wù),而是通過調(diào)用委托對象的相關(guān)方法來提供特定的服務(wù)。因 此,在本申請實施例中,可以使用代理模式,從異步運行線程池中,自動產(chǎn)生代理對象,由代 理對象接收對數(shù)據(jù)實體的多個訪問請求。其中,對應(yīng)一個訪問請求,可以產(chǎn)生一個代理對 象。由于代理對象持有對委托對象的引用,因此,當代理對象210接收到對數(shù)據(jù)實體的訪問 請求時,可以實時動態(tài)生成代理對象類型實例化產(chǎn)生的可執(zhí)行對象(即,模擬數(shù)據(jù)實體),返 回與所述訪問請求對應(yīng)的模擬數(shù)據(jù)實體、以及調(diào)用與所述代理對象關(guān)聯(lián)的委托對象220執(zhí) 行對所述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體的并行訪問。例如,下述步驟S120~步驟S150 的代碼可以是代理對象自動生成并加入模擬數(shù)據(jù)實體的。在該實現(xiàn)方式中,內(nèi)置于模擬數(shù) 據(jù)實體的異步線程,可以用于定時向所述委托對象220請求真正數(shù)據(jù)實體,當所述委托對 象220訪問到真正數(shù)據(jù)實體時,從所述委托對象220獲取其訪問到的真正數(shù)據(jù)實體的內(nèi)容。
[0021] S120、當訪問到與所述模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實體時,所述異步線程獲取 所述真正數(shù)據(jù)實體的內(nèi)容,將所述真正數(shù)據(jù)實體的內(nèi)容載入所述模擬數(shù)據(jù)實體;
[0022] 例如,將真正數(shù)據(jù)實體的內(nèi)容載入模擬數(shù)據(jù)實體的具體實現(xiàn)可以為將真正數(shù)據(jù)實 體的屬性域的值復制到模擬數(shù)據(jù)實體的對應(yīng)的屬性域。
[0023] 可以理解的是,返回模擬數(shù)據(jù)實體的操作,與對模擬數(shù)據(jù)實體對應(yīng)的真正數(shù)據(jù)實 體訪問的操作,可以是并行執(zhí)行的操作。步驟S120異步線程獲取真正數(shù)據(jù)實體的操作可以 是與下述步驟S130~步驟S150并行的操作。
[0024] S130、當存在針對所述模擬數(shù)據(jù)實體的調(diào)用時,判斷所述模擬數(shù)據(jù)實體是否已載 入真正數(shù)據(jù)實體的內(nèi)容;
[0025] 為了便于對模擬數(shù)據(jù)實體是否已載入真正數(shù)據(jù)實體的內(nèi)容進行判斷,本申請實施 例還可以設(shè)置有標志