本公開涉及數(shù)據(jù)庫
技術(shù)領(lǐng)域:
:,尤其涉及一種數(shù)據(jù)庫數(shù)據(jù)處理方法、數(shù)據(jù)庫數(shù)據(jù)處理裝置以及實現(xiàn)該數(shù)據(jù)庫數(shù)據(jù)處理方法的計算機可讀存儲介質(zhì)和電子設(shè)備。
背景技術(shù):
::目前,隨著信息數(shù)據(jù)處理需求的日益增長,在一些高性能的業(yè)務(wù)處理系統(tǒng)中,往往采用內(nèi)存數(shù)據(jù)庫的解決方案。由于內(nèi)存數(shù)據(jù)庫不使用磁盤,故節(jié)省了針對磁盤的i/o時間開銷,從而能夠顯著地提高數(shù)據(jù)存儲和查詢效率。因此內(nèi)存數(shù)據(jù)庫的解決方案變得越來越重要。相關(guān)技術(shù)中,目前在傳統(tǒng)的采用內(nèi)存數(shù)據(jù)庫的業(yè)務(wù)處理系統(tǒng)中,通常一個業(yè)務(wù)操作的完成需要訪問多張業(yè)務(wù)表進行。例如有三張業(yè)務(wù)表tablea、tableb和tablec,一般是先從tablea中找到對應(yīng)的記錄進行檢查或者更新等操作,再從tableb中找到對應(yīng)的記錄進行檢查或者更新等操作,最后從tablec中找到對應(yīng)的記錄進行檢查或者更新等操作。這樣導致在業(yè)務(wù)處理過程的每一個小的步驟都要去訪問所有不同業(yè)務(wù)表中的數(shù)據(jù),且都要從各個業(yè)務(wù)表的全部記錄中去查找對應(yīng)的記錄,查詢范圍過大從而使得業(yè)務(wù)處理過程耗時較多且效率低下。這進一步導致在對延時要求較高的業(yè)務(wù)處理場景中存在較大的業(yè)務(wù)處理性能問題,并且隨著業(yè)務(wù)處理系統(tǒng)中各個業(yè)務(wù)表中記錄數(shù)據(jù)的大幅增加,業(yè)務(wù)處理性能會進一步受到很大的影響。因此,有必要提供一種新的技術(shù)方案改善上述方案中存在的一個或者多個問題。需要說明的是,在上述
背景技術(shù):
:部分公開的信息僅用于加強對本公開的背景的理解,因此可以包括不構(gòu)成對本領(lǐng)域普通技術(shù)人員已知的現(xiàn)有技術(shù)的信息。技術(shù)實現(xiàn)要素:本公開的目的在于提供一種數(shù)據(jù)庫數(shù)據(jù)處理方法、數(shù)據(jù)庫數(shù)據(jù)處理裝置以及實現(xiàn)該數(shù)據(jù)庫數(shù)據(jù)處理方法的計算機可讀存儲介質(zhì)和電子設(shè)備。進而至少在一定程度上克服由于相關(guān)技術(shù)的限制和缺陷而導致的一個或者多個問題。本公開的其他特性和優(yōu)點將通過下面的詳細描述變得顯然,或部分地通過本公開的實踐而習得。根據(jù)本公開實施例的第一方面,提供一種數(shù)據(jù)庫數(shù)據(jù)處理方法,所述方法包括:接收一預設(shè)操作請求,響應(yīng)所述預設(shè)操作請求以從一第一數(shù)據(jù)表中獲取對應(yīng)的一第一記錄對象;其中,所述第一數(shù)據(jù)表包括歸屬于每條所述第一記錄對象的一第一存儲裝置,所述第一存儲裝置用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的一第二數(shù)據(jù)表中的一第二記錄對象的地址;根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。本公開的一種示例性實施例中,所述數(shù)據(jù)庫為一內(nèi)存數(shù)據(jù)庫,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表均為所述內(nèi)存數(shù)據(jù)庫中的內(nèi)存表。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中有關(guān)聯(lián)關(guān)系的記錄對象之間是一對一的關(guān)系時,所述第一存儲裝置采用指針;所述根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象包括:根據(jù)所述第一記錄對象所屬的所述指針所指示的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述數(shù)據(jù)第二表中的記錄對象之間是一對多的關(guān)系時,所述第一存儲裝置采用關(guān)聯(lián)容器;所述關(guān)聯(lián)容器用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二數(shù)據(jù)表中的多個第二記錄對象的地址;所述根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象包括:遍歷所述第一記錄對象所屬的所述關(guān)聯(lián)容器中的所述多個第二記錄對象的地址以從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的多個所述第二記錄對象。本公開的一種示例性實施例中,所述關(guān)聯(lián)容器包括唯一索引型容器和/或非唯一索引型容器。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表中每條第一記錄對象包括多個所述第一存儲裝置。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中的記錄對象之間是多對多的關(guān)系時,所述第二數(shù)據(jù)表包括歸屬于每條第二記錄對象的一第二存儲裝置,其中所述第二存儲裝置用于保存和所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一數(shù)據(jù)表中的一第一記錄對象的地址;所述方法還包括:根據(jù)所述第二記錄對象所屬的所述第二存儲裝置中的所述地址從所述第一數(shù)據(jù)表中獲取與所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一記錄對象。本公開的一種示例性實施例中,所述第二存儲裝置采用指針或者關(guān)聯(lián)容器。根據(jù)本公開實施例的第二方面,提供一種數(shù)據(jù)庫數(shù)據(jù)處理裝置,所述裝置包括:數(shù)據(jù)獲取模塊,用于接收一預設(shè)操作請求,響應(yīng)所述預設(shè)操作請求以從一第一數(shù)據(jù)表中獲取對應(yīng)的一第一記錄對象;其中,所述第一數(shù)據(jù)表包括歸屬于每條所述第一記錄對象的一第一存儲裝置,所述第一存儲裝置用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的一第二數(shù)據(jù)表中的一第二記錄對象的地址;第一數(shù)據(jù)查找模塊,用于根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。本公開的一種示例性實施例中,所述數(shù)據(jù)庫為一內(nèi)存數(shù)據(jù)庫,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表均為所述內(nèi)存數(shù)據(jù)庫中的內(nèi)存表。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中有關(guān)聯(lián)關(guān)系的記錄對象之間是一對一的關(guān)系時,所述第一存儲裝置采用指針;所述第一數(shù)據(jù)查找模塊,用于根據(jù)所述第一記錄對象所屬的所述指針所指示的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述數(shù)據(jù)第二表中的記錄對象之間是一對多的關(guān)系時,所述第一存儲裝置采用關(guān)聯(lián)容器;所述關(guān)聯(lián)容器用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二數(shù)據(jù)表中的多個第二記錄對象的地址;所述第一數(shù)據(jù)查找模塊,用于遍歷所述第一記錄對象所屬的所述關(guān)聯(lián)容器中的所述多個第二記錄對象的地址以從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的多個所述第二記錄對象。本公開的一種示例性實施例中,所述關(guān)聯(lián)容器包括唯一索引型容器和/或非唯一索引型容器。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表中每條第一記錄對象包括多個所述第一存儲裝置。本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中的記錄對象之間是多對多的關(guān)系時,所述第二數(shù)據(jù)表包括歸屬于每條第二記錄對象的一第二存儲裝置,其中所述第二存儲裝置用于保存和所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一數(shù)據(jù)表中的一第一記錄對象的地址;所述裝置還包括:第二數(shù)據(jù)查找模塊,用于根據(jù)所述第二記錄對象所屬的所述第二存儲裝置中的所述地址從所述第一數(shù)據(jù)表中獲取與所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一記錄對象。本公開的一種示例性實施例中,所述第二存儲裝置采用指針或者關(guān)聯(lián)容器。根據(jù)本公開實施例的第三方面,提供一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)上述任一實施例中所述數(shù)據(jù)庫數(shù)據(jù)處理方法的步驟。根據(jù)本公開實施例的第四方面,提供一種電子設(shè)備,包括:處理器;以及存儲器,用于存儲所述處理器的可執(zhí)行指令;其中,所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行上述任一實施例中所述數(shù)據(jù)庫數(shù)據(jù)處理方法的步驟。本公開的實施例提供的技術(shù)方案可以包括以下有益效果:本公開的一種實施例中,通過上述數(shù)據(jù)庫數(shù)據(jù)處理方法及裝置,在一數(shù)據(jù)表中設(shè)置歸屬于每條記錄對象的第一存儲裝置,該第一存儲裝置中記錄和該數(shù)據(jù)表中的記錄對象有關(guān)聯(lián)關(guān)系的另一數(shù)據(jù)表中的另一記錄對象的地址。這樣,一方面,在查找數(shù)據(jù)時,可以根據(jù)該存儲裝置中記錄的地址直接查找到數(shù)據(jù),不用從各個數(shù)據(jù)表中的全部記錄對象中逐一去查找,大大節(jié)省數(shù)據(jù)查詢所花費的時間,提高了查詢效率;另一方面,數(shù)據(jù)查詢范圍大大減小從而使得相應(yīng)的業(yè)務(wù)處理過程效率提高,在對延時要求較高的業(yè)務(wù)處理場景中也可以提高業(yè)務(wù)處理性能,并且隨著業(yè)務(wù)處理系統(tǒng)中各個業(yè)務(wù)表中記錄數(shù)據(jù)的大幅增加,業(yè)務(wù)處理性能也會在一定程度上得到提升。應(yīng)當理解的是,以上的一般描述和后文的細節(jié)描述僅是示例性和解釋性的,并不能限制本公開。附圖說明此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。顯而易見地,下面描述中的附圖僅僅是本公開的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1示意性示出本公開示例性實施例中數(shù)據(jù)庫數(shù)據(jù)處理方法流程圖;圖2示意性示出本公開示例性實施例中數(shù)據(jù)表的數(shù)據(jù)結(jié)構(gòu)示意圖;圖3示意性示出本公開示例性實施例中不同數(shù)據(jù)表間的關(guān)聯(lián)關(guān)系示意圖;圖4示意性示出本公開示例性實施例中另一數(shù)據(jù)庫數(shù)據(jù)處理方法流程圖;圖5示意性示出本公開示例性實施例中數(shù)據(jù)庫數(shù)據(jù)處理裝置示意圖;圖6示意性示出本公開示例性實施例中另一數(shù)據(jù)庫數(shù)據(jù)處理裝置示意圖;圖7示意性示出本公開示例性實施例中又一數(shù)據(jù)庫數(shù)據(jù)處理裝置示意圖。具體實施方式現(xiàn)在將參考附圖更全面地描述示例實施方式。然而,示例實施方式能夠以多種形式實施,且不應(yīng)被理解為限于在此闡述的范例;相反,提供這些實施方式使得本公開將更加全面和完整,并將示例實施方式的構(gòu)思全面地傳達給本領(lǐng)域的技術(shù)人員。所描述的特征、結(jié)構(gòu)或特性可以以任何合適的方式結(jié)合在一個或更多實施方式中。此外,附圖僅為本公開的示意性圖解,并非一定是按比例繪制。圖中相同的附圖標記表示相同或類似的部分,因而將省略對它們的重復描述。附圖中所示的一些方框圖是功能實體,不一定必須與物理或邏輯上獨立的實體相對應(yīng)。可以采用軟件形式來實現(xiàn)這些功能實體,或在一個或多個硬件模塊或集成電路中實現(xiàn)這些功能實體,或在不同網(wǎng)絡(luò)和/或處理器裝置和/或微控制器裝置中實現(xiàn)這些功能實體。本示例實施方式中首先提供了一種數(shù)據(jù)庫數(shù)據(jù)處理方法。參考圖1中所示,該方法可以包括以下步驟:步驟s101:接收一預設(shè)操作請求,響應(yīng)所述預設(shè)操作請求以從一第一數(shù)據(jù)表中獲取對應(yīng)的一第一記錄對象;其中,所述第一數(shù)據(jù)表包括歸屬于每條所述第一記錄對象的一第一存儲裝置,所述第一存儲裝置用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的一第二數(shù)據(jù)表中的一第二記錄對象的地址。步驟s102:根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。通過上述數(shù)據(jù)庫數(shù)據(jù)處理方法,一方面,在查找數(shù)據(jù)時,可以根據(jù)該第一存儲裝置中記錄的地址直接查找到數(shù)據(jù),不用從各個數(shù)據(jù)表中的全部記錄對象中逐一去查找,大大節(jié)省數(shù)據(jù)查詢所花費的時間,提高了查詢效率;另一方面,數(shù)據(jù)查詢范圍大大減小從而使得相應(yīng)的業(yè)務(wù)處理過程效率提高,在對延時要求較高的業(yè)務(wù)處理場景中也可以提高業(yè)務(wù)處理性能,并且隨著業(yè)務(wù)處理系統(tǒng)中各個業(yè)務(wù)表中記錄數(shù)據(jù)的大幅增加,業(yè)務(wù)處理性能也會在一定程度上得到提升。下面,將參考圖1至圖4對本示例實施方式中的上述方法的各個步驟進行更詳細的說明。在步驟s101中,接收一預設(shè)操作請求,響應(yīng)所述預設(shè)操作請求以從一第一數(shù)據(jù)表中獲取對應(yīng)的一第一記錄對象;其中,所述第一數(shù)據(jù)表包括歸屬于每條所述第一記錄對象的一第一存儲裝置,所述第一存儲裝置用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的一第二數(shù)據(jù)表中的一第二記錄對象的地址。本示例實施方式中,所述預設(shè)操作請求可以是數(shù)據(jù)查詢請求、數(shù)據(jù)刪除請求或者數(shù)據(jù)更新請求等。所述數(shù)據(jù)庫可以為一內(nèi)存數(shù)據(jù)庫,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表均為所述內(nèi)存數(shù)據(jù)庫中的內(nèi)存表。內(nèi)存數(shù)據(jù)庫是將數(shù)據(jù)放在內(nèi)存中直接操作的數(shù)據(jù)庫。相對于磁盤,內(nèi)存的數(shù)據(jù)讀寫速度要高出幾個數(shù)量級,將數(shù)據(jù)保存在內(nèi)存中相比從磁盤上訪問能夠極大地提高應(yīng)用的性能。另外,內(nèi)存數(shù)據(jù)庫是對象型的,維護開銷小。本示例實施方式中示出了第一數(shù)據(jù)表和第二數(shù)據(jù)表,然而這并不用于限定本示例實施方式中的數(shù)據(jù)表的數(shù)量,任何兩個或以上的數(shù)據(jù)表中每個數(shù)據(jù)表中的每條記錄對象均可以設(shè)置存儲裝置以保存與其有關(guān)聯(lián)關(guān)系的另一數(shù)據(jù)表中的記錄對象的地址,從而可以縮小數(shù)據(jù)查詢范圍,直接查找數(shù)據(jù)減少耗時。下面將以三張數(shù)據(jù)表為例對本示例實施方式進行進一步說明。示例性的,在一個如交易系統(tǒng)的應(yīng)用場景中,所述第一數(shù)據(jù)表可以是如表1所示的客戶表,所述第二數(shù)據(jù)表可以是如表2所示的賬戶表。該應(yīng)用場景中還可以包括如表3所示的第三數(shù)據(jù)表,即持倉表??蛻舯泶娣趴蛻艟幪柸鏸d、客戶的狀態(tài)以及客戶姓名等其他客戶信息。賬戶表用來存儲對應(yīng)的賬戶信息,一個客戶可以有多個賬戶,比如做現(xiàn)貨交易有現(xiàn)貨交易的賬號,做期貨交易有期貨交易的賬號,同時每個賬號也有對應(yīng)的交易權(quán)限。持倉表用來存儲客戶在具體賬戶下對應(yīng)的持倉。表1客戶編號客戶狀態(tài)姓名地址手機000001正常交易張三浙江杭州12345678911000002凍結(jié)李四浙江嘉興12345678912……………100000已銷戶王五湖北武漢12345678913表2客戶編號交易賬戶賬戶類型賬戶權(quán)限賬戶狀態(tài)000001a00000101現(xiàn)貨允許買賣正常000001a00000102期貨只能買正常000002a00000201現(xiàn)貨允許買賣異常000002a00000202期貨只能賣正?!?00000a10000001現(xiàn)貨允許買賣正常100000a10000002期貨只能買正常表3本示例實施方式是根據(jù)業(yè)務(wù)應(yīng)用場景中實體的關(guān)系把一些孤立的數(shù)據(jù)表中的記錄對象相互組織起來,形成上下級的多級關(guān)聯(lián)關(guān)系,從而在具體實現(xiàn)業(yè)務(wù)流程過程中,找到上級記錄對象后可以快速地從上級記錄對象的第一存儲裝置中獲取地址查找到與上級記錄對象關(guān)聯(lián)的下級記錄對象。下面說明上述關(guān)聯(lián)關(guān)系也即所述第一存儲裝置建立的具體過程。在一示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中有關(guān)聯(lián)關(guān)系的記錄對象之間是一對一的關(guān)系時,所述第一存儲裝置采用指針。而在另一示例性實施例中,所述第一數(shù)據(jù)表和所述數(shù)據(jù)第二表中的記錄對象之間是一對多的關(guān)系時,所述第一存儲裝置采用關(guān)聯(lián)容器。所述關(guān)聯(lián)容器用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二數(shù)據(jù)表中的多個第二記錄對象的地址。下面對該第一存儲裝置的建立過程作出詳細說明。參考圖2~3所示,首先需要整理出業(yè)務(wù)處理過程中需要用到的所有實體,也就是對應(yīng)的內(nèi)存表,例如前面舉例列出的客戶表、賬戶表和持倉表。然后梳理這些實體之間的關(guān)系,并且設(shè)計關(guān)聯(lián)關(guān)系。比如一個客戶可能有多個賬戶(1個以上),可以設(shè)計客戶表和賬戶表為一對多的關(guān)系。如果一個客戶肯定只會有1個甚至沒有賬戶,則這兩個數(shù)據(jù)表的關(guān)系就是一對一的關(guān)系。本示例性實施例中,只有當表1和表2中所有的記錄對象之間均是一對一的關(guān)系時,兩個表格之間的關(guān)系才是一對一。如果表1和表2之間有的記錄對象之間是一對一,有的記錄對象之間是一對多,則兩個表格之間的關(guān)系是一對多,例如上述例舉的客戶表和賬戶表。另外,由于一個賬戶下面又可以有多個持倉,則賬戶表和持倉表也是一對多的關(guān)系。接下來可以設(shè)計數(shù)據(jù)表的結(jié)構(gòu),本示例性實施例中是基于內(nèi)存數(shù)據(jù)庫的,因此在設(shè)計數(shù)據(jù)表時其實就是設(shè)計對應(yīng)的結(jié)構(gòu)體或者類。因此可以根據(jù)客戶表client和賬戶表account的相關(guān)屬性設(shè)計出對應(yīng)的結(jié)構(gòu)clientclass和accountclass。設(shè)計數(shù)據(jù)表之間的關(guān)系,如客戶表client和賬戶表account的關(guān)聯(lián)關(guān)系。由于已經(jīng)梳理出客戶表和賬戶表之間是一對多的關(guān)系,則可以在客戶表client的結(jié)構(gòu)clientclass里面增加一個容器,這個容器用于存儲和當前客戶表client有關(guān)聯(lián)關(guān)系的所有賬戶表account中的記錄對象的地址,也就是存儲當前某個客戶下的所有賬戶。示例性的,clientclass和accountclass結(jié)構(gòu)設(shè)計可以如下:本示例性實施例中一個數(shù)據(jù)表中的一條記錄對應(yīng)一個關(guān)聯(lián)容器,而不是一個數(shù)據(jù)表用一個關(guān)聯(lián)容器以實時更新關(guān)聯(lián)容器中的內(nèi)容,這樣訪問速度要比實時變化的快的多,因為不需要根據(jù)當前要查找的內(nèi)容去實時更新關(guān)聯(lián)容器中的內(nèi)容。需要說明的是,如果所述客戶表client和賬戶表account在邏輯上只是一對一的關(guān)系,比如一個客戶只會有一個賬戶,這時候在client的結(jié)構(gòu)clientclass上只需要一個指向accountclass中的指針,而不需要是關(guān)聯(lián)容器。兩個數(shù)據(jù)表之間是一對一的關(guān)系時,可采用指針,即內(nèi)存表中的每條記錄采用一個變量用來存儲相關(guān)聯(lián)的數(shù)據(jù)表中的記錄的地址即可,這樣比起用關(guān)聯(lián)容器來存儲,少了一次遍歷或者按排序規(guī)則返回查詢結(jié)果的操作,查找速度更快,進一步減少耗時提高效率。根據(jù)上述原理可以依次建立好各個數(shù)據(jù)表結(jié)構(gòu)之間的關(guān)聯(lián)關(guān)系。至此,所有關(guān)聯(lián)關(guān)系設(shè)計完成。在程序啟動時候再根據(jù)設(shè)計的關(guān)系把實際的對象之間的關(guān)系進行初始化。比如客戶表中的客戶編號為000001的記錄和賬戶表中客戶編號為000001而交易賬戶為a00000101和a00000102的兩條記錄建立關(guān)系,也就是把這兩條記錄的地址插入到客戶表中客戶編號為000001的客戶記錄的關(guān)聯(lián)容器里。當在處理業(yè)務(wù)的過程中,先從客戶表中找到客戶編號為000001的客戶,然后要查找該客戶下的某一個賬戶時,就只需要從客戶表中該客戶記錄對應(yīng)的存儲所述賬戶表中關(guān)聯(lián)的交易賬戶的關(guān)聯(lián)容器中查找到對應(yīng)的那個賬戶,而不需要從賬戶表中的全部數(shù)據(jù)中去逐一查找數(shù)據(jù),節(jié)省時間提高查詢效率。所述關(guān)聯(lián)容器是指一個復雜的存儲裝置,其一般具有按照預設(shè)的排序規(guī)則將存儲的內(nèi)容進行自動排序的功能,例如客戶表中的客戶編號000001的關(guān)聯(lián)容器中存儲指向賬戶表中的交易賬戶a00000101和a00000102的指針,那么預先在賬戶表中就會定義好排序規(guī)則,例如根據(jù)資金大小、或者時間先后等等對其進行排序,類似于關(guān)系型數(shù)據(jù)庫中的索引功能,有利于快速定位到要查找的交易賬戶。但排序規(guī)則不是必須的,也可以沒有排序規(guī)則,這樣在查找時就是遍歷整個關(guān)聯(lián)容器,定位速度稍微慢一些,但也可以在一定程度上相比相關(guān)技術(shù)提高查詢效率。在步驟s102中,根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。示例性的,當所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中有關(guān)聯(lián)關(guān)系的記錄對象之間是一對一的關(guān)系時,所述第一存儲裝置采用指針。相應(yīng)的,所述根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象,即步驟s102可以包括:步驟1021:根據(jù)所述第一記錄對象所屬的所述指針所指示的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。舉例來說,根據(jù)一攜帶客戶編號的數(shù)據(jù)查詢請求,從客戶表中找到客戶編號為000001的客戶,然后要查找該客戶下的某一個賬戶時,就只需要從客戶表中該客戶記錄對應(yīng)的存儲所述賬戶表中關(guān)聯(lián)的交易賬戶的地址的指針所指示的地址從賬戶表中查找到對應(yīng)的賬戶,如賬戶a00000101或者a00000102。示例性的,當所述第一數(shù)據(jù)表和所述數(shù)據(jù)第二表中的記錄對象之間是一對多的關(guān)系時,所述第一存儲裝置采用關(guān)聯(lián)容器。所述關(guān)聯(lián)容器用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二數(shù)據(jù)表中的多個第二記錄對象的地址。相應(yīng)的,所述根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象,即步驟s102可以包括:步驟1022:遍歷所述第一記錄對象所屬的所述關(guān)聯(lián)容器中的所述多個第二記錄對象的地址以從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的多個所述第二記錄對象。舉例來說,根據(jù)一攜帶客戶編號的數(shù)據(jù)查詢請求,從客戶表中找到客戶編號為000001的客戶,然后要查找該客戶下的某一個賬戶時,就只需要根據(jù)客戶表中該客戶記錄對應(yīng)的存儲所述賬戶表中關(guān)聯(lián)的交易賬戶的地址的關(guān)聯(lián)容器中所保存的地址從所述賬戶表中查找到對應(yīng)的賬戶,如賬戶a00000101和a00000102。再例如可以根據(jù)所述賬戶表中交易賬戶為a00000101和a00000102各自對應(yīng)的關(guān)聯(lián)容器中所保存的多個地址從所述持倉表中查找到各自對應(yīng)的5條持倉記錄,具體可參考圖3所示。在本公開的一種示例性實施例中,所述第一數(shù)據(jù)表中每條第一記錄對象還可以包括多個所述第一存儲裝置。該多個所述第一存儲裝置可以是全是指針,也可以是全是關(guān)聯(lián)容器,或者部分是指針而剩余部分是關(guān)聯(lián)容器。在一示例性實施例中,所述關(guān)聯(lián)容器可以包括唯一索引型容器和/或非唯一索引型容器。即多個所述關(guān)聯(lián)容器可以單獨是唯一索引型容器或者非唯一索引型容器,也可以是同時包括唯一索引型容器和非唯一索引型容器。索引的作用是排列好次序,使得查詢時可以快速找到數(shù)據(jù)。唯一索引指的是被索引的字段組合其數(shù)據(jù)在全表中唯一。如下所示,為學號建索引,其是唯一的,即無重復相同的學號。非唯一索引指的是數(shù)據(jù)可以不唯一。如下所示,為score建索引,其不唯一,如98是重復的。所述關(guān)聯(lián)容器類型包括唯一索引和非唯一索引兩種類型,例如客戶表中的客戶編號000001對應(yīng)的賬戶類型現(xiàn)貨和期貨分別對應(yīng)的交易賬戶為a00000101和a00000102,即交易賬戶不唯一。而存在另一種業(yè)務(wù)應(yīng)用場景,例如一個賬戶類型下包括證券和期貨,該客戶一次性在不同市場(證券市場和期貨市場)下單,建立一個任務(wù),則如果根據(jù)任務(wù)號來查找,任務(wù)號相同的情況下,其對應(yīng)的是期貨和證券,即非唯一的。因此,由于業(yè)務(wù)具有不同的維度,可以根據(jù)不同的維度在一個內(nèi)存表的同一條記錄中可以設(shè)置多個關(guān)聯(lián)容器,每一個關(guān)聯(lián)容器對應(yīng)一種排序規(guī)則,例如,客戶表中的每條記錄可以同時包括唯一索引的關(guān)聯(lián)容器和非唯一索引的關(guān)聯(lián)容器,用于實現(xiàn)不同的目的,例如唯一索引的關(guān)聯(lián)容器可以用于獲得細分的查找結(jié)果(查找出對應(yīng)的唯一結(jié)果),而非唯一索引的關(guān)聯(lián)容器可以是為了統(tǒng)計或者遍歷的目的,而非細分查找的目的。前述實施方式中給出了不同數(shù)據(jù)表中記錄對象間一對多和一對一的情況,但實際中還可能存在記錄對象間多對多的情況。在多對多的情況下,本示例實施方式中兩個數(shù)據(jù)表之間可以具有正反向傳遞功能,即一對多時是父集數(shù)據(jù)表中有一個關(guān)聯(lián)容器用來記錄關(guān)聯(lián)的子集的內(nèi)容,但多對多的情況下,子集數(shù)據(jù)表中也有一個關(guān)聯(lián)容器可以用來記錄關(guān)聯(lián)的父集數(shù)據(jù)表的內(nèi)容。在本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中的記錄對象之間是多對多的關(guān)系時,所述第二數(shù)據(jù)表可以包括歸屬于每條第二記錄對象的一第二存儲裝置,其中所述第二存儲裝置用于保存和所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一數(shù)據(jù)表中的一第一記錄對象的地址。示例性的,所述第二存儲裝置采用指針或者關(guān)聯(lián)容器。該第二存儲裝置與所述第一存儲裝置相同,具體可參考前述關(guān)于第一存儲裝置的說明,此處不再贅述。參考圖4所示,相應(yīng)的,當所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中的記錄對象之間是多對多的關(guān)系時,所述方法還可以包括以下步驟:步驟s103:根據(jù)所述第二記錄對象所屬的所述第二存儲裝置中的所述地址從所述第一數(shù)據(jù)表中獲取與所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一記錄對象。該步驟s103與上述根據(jù)所述第一存儲裝置在第二數(shù)據(jù)表中查找數(shù)據(jù)的過程相同或相類似,此處不再贅述。下面再結(jié)合一個具體示例比較說明本示例實施方式中的上述方法的技術(shù)優(yōu)點。假設(shè)所述交易系統(tǒng)當前一共有10萬個客戶,每個客戶有2個賬戶,每個賬戶下都有5條持倉。這樣客戶表中的記錄為10萬條,賬戶表的記錄為20萬條,持倉表中的記錄為100萬條?,F(xiàn)有的交易處理流程如以下201~204所示:201:交易請求下達。202:根據(jù)請求中傳入的客戶編號,在客戶表的10萬條記錄中找到對應(yīng)的客戶,然后檢驗該客戶狀態(tài)是否正常,正常則通過繼續(xù)往下進入203。203:根據(jù)請求中傳入的客戶編號和交易類型從賬戶表的20萬條記錄中找到對應(yīng)的交易賬戶記錄,然后對該交易賬戶狀態(tài)進行檢查,檢查通過則繼續(xù)往下進入204,否則返回錯誤應(yīng)答,交易失敗。204:根據(jù)客戶編號和上一步找到的交易賬戶號以及請求傳入的要賣的商品編號在持倉表的100萬條記錄中找到對應(yīng)的商品,然后對該商品數(shù)據(jù)進行校驗,如果數(shù)量大于等于要賣的數(shù)量則通過繼續(xù)往下交易成功,請求處理結(jié)束。從上面的流程中可以看到當一個請求進來,業(yè)務(wù)處理過程的每一個小的步驟都要去訪問不同的數(shù)據(jù)表中的數(shù)據(jù),并且都要從這些數(shù)據(jù)表的全部記錄中去查找對應(yīng)的記錄。這種方式存在很大的一個缺陷,一個業(yè)務(wù)做下來需要訪問三張表,每次都是從數(shù)據(jù)表的全部記錄中去查找對應(yīng)的那條記錄。例如先是從10萬條記錄的客戶表去找到對應(yīng)的客戶記錄,再去20萬條記錄的賬戶表去找這個客戶的賬戶,然后再從100萬條記錄的持倉表去找到要賣的那個持倉。這樣對延時要求較高的場景會存在較大的性能問題。并且,隨著數(shù)據(jù)表中數(shù)據(jù)增大,這個業(yè)務(wù)的性能會受很大影響,比如由現(xiàn)在的10萬客戶增加到了20萬客戶,賬戶表就可能增加到了40萬,持倉表就可能增加到了200萬,增加了新的客戶后,對原有其他客戶的交易性能都會產(chǎn)生影響,因為整個數(shù)據(jù)表的記錄增大了,也就是查詢的范圍擴大了。結(jié)合參考圖3所示,采用本示例實施方式中的上述方法后的交易處理流程如以下301~304所示:301:交易請求下達。302:根據(jù)請求中傳入的客戶編號,在客戶表的10萬條記錄中找到對應(yīng)的客戶記錄,然后檢驗該客戶狀態(tài)是否正常,正常則繼續(xù)往下進入303,否則返回錯誤應(yīng)答,交易失敗。303:根據(jù)請求傳入的交易類型從找到的對應(yīng)的客戶記錄包含的2條交易賬戶記錄的關(guān)聯(lián)容器中查找到對應(yīng)的交易賬戶記錄,然后對該交易賬戶狀態(tài)進行檢查,檢查通過則繼續(xù)往下進入304,否則返回錯誤應(yīng)答,交易失敗。304:根據(jù)請求傳入的要賣的商品編號在交易賬戶記錄包含的5條持倉記錄的關(guān)聯(lián)容器中查找到對應(yīng)的商品記錄。然后對商品數(shù)據(jù)進行校驗,如果數(shù)量大于等于要賣的數(shù)量則通過繼續(xù)往下交易成功,請求處理結(jié)束;否則返回錯誤應(yīng)答,交易失敗。本示例實施方式中在數(shù)據(jù)表中設(shè)置關(guān)聯(lián)容器記錄對象間的層次關(guān)聯(lián)關(guān)系,其業(yè)務(wù)處理過程先是從10萬條記錄的客戶表去找到對應(yīng)的客戶記錄,在根據(jù)客戶記錄里面包含賬戶記錄的容器中去查找賬戶記錄時,容器當中只有2條記錄,查找的條件也只需要業(yè)務(wù)類型即可;同樣根據(jù)賬戶記錄里面包含持倉記錄的容器去查找持倉記錄時,容器當中只有5條記錄,查找的條件也只需要根據(jù)商品編碼即可。比如由現(xiàn)在的10萬客戶增加到了20萬客戶,賬戶表就可能增加到了40萬,持倉表就可能增加到了200萬,增加了新的客戶后,對原有其他客戶的交易性能產(chǎn)生的影響很小,只有客戶表查找的時候數(shù)據(jù)量變大了,后面容器里面的數(shù)據(jù)量都是不變的。這樣使得數(shù)據(jù)請求處理時可以利用關(guān)聯(lián)容器更高效地找到下一個需要使用的數(shù)據(jù),相比于現(xiàn)有技術(shù)使得在一個請求處理過程中大大節(jié)約了整個業(yè)務(wù)處理的總耗時,提高了業(yè)務(wù)系統(tǒng)處理性能。需要說明的是,盡管在附圖中以特定順序描述了本公開中方法的各個步驟,但是,這并非要求或者暗示必須按照該特定順序來執(zhí)行這些步驟,或是必須執(zhí)行全部所示的步驟才能實現(xiàn)期望的結(jié)果。附加的或備選的,可以省略某些步驟,將多個步驟合并為一個步驟執(zhí)行,以及/或者將一個步驟分解為多個步驟執(zhí)行等。另外,也易于理解的是,這些步驟可以是例如在多個模塊/進程/線程中同步或異步執(zhí)行。進一步的,本示例實施方式中,還提供了一種數(shù)據(jù)庫數(shù)據(jù)處理裝置。參考圖5中所示,裝置100可以包括數(shù)據(jù)獲取模塊101和第一數(shù)據(jù)查找模塊102。其中:所述數(shù)據(jù)獲取模塊101,用于接收一預設(shè)操作請求,響應(yīng)所述預設(shè)操作請求以從一第一數(shù)據(jù)表中獲取對應(yīng)的一第一記錄對象;其中,所述第一數(shù)據(jù)表包括歸屬于每條所述第一記錄對象的一第一存儲裝置,所述第一存儲裝置用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的一第二數(shù)據(jù)表中的一第二記錄對象的地址。所述第一數(shù)據(jù)查找模塊102,用于根據(jù)所述第一記錄對象所屬的所述第一存儲裝置中的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。在本公開的一種示例性實施例中,所述數(shù)據(jù)庫為一內(nèi)存數(shù)據(jù)庫,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表均為所述內(nèi)存數(shù)據(jù)庫中的內(nèi)存表。在本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中有關(guān)聯(lián)關(guān)系的記錄對象之間是一對一的關(guān)系時,所述第一存儲裝置采用指針。相應(yīng)的,所述第一數(shù)據(jù)查找模塊102,用于根據(jù)所述第一記錄對象所屬的所述指針所指示的所述地址從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二記錄對象。在本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述數(shù)據(jù)第二表中的記錄對象之間是一對多的關(guān)系時,所述第一存儲裝置采用關(guān)聯(lián)容器;所述關(guān)聯(lián)容器用于保存和對應(yīng)的所述第一記錄對象有關(guān)聯(lián)關(guān)系的所述第二數(shù)據(jù)表中的多個第二記錄對象的地址。相應(yīng)的,所述第一數(shù)據(jù)查找模塊102,用于遍歷所述第一記錄對象所屬的所述關(guān)聯(lián)容器中的所述多個第二記錄對象的地址以從所述第二數(shù)據(jù)表中獲取與所述第一記錄對象有關(guān)聯(lián)關(guān)系的多個所述第二記錄對象。在本公開的一種示例性實施例中,所述關(guān)聯(lián)容器可以包括唯一索引型容器和/或非唯一索引型容器。在本公開的一種示例性實施例中,所述第一數(shù)據(jù)表中每條第一記錄對象可以包括多個所述第一存儲裝置。參考圖6中所示,在本公開的一種示例性實施例中,所述第一數(shù)據(jù)表和所述第二數(shù)據(jù)表中的記錄對象之間是多對多的關(guān)系時,所述第二數(shù)據(jù)表也可以包括歸屬于每條第二記錄對象的一第二存儲裝置,其中所述第二存儲裝置用于保存和所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一數(shù)據(jù)表中的一第一記錄對象的地址。所述裝置100還可以包括第二數(shù)據(jù)查找模塊103,用于根據(jù)所述第二記錄對象所屬的所述第二存儲裝置中的所述地址從所述第一數(shù)據(jù)表中獲取與所述第二記錄對象有關(guān)聯(lián)關(guān)系的所述第一記錄對象。在本公開的一種示例性實施例中,所述第二存儲裝置可以采用指針或者關(guān)聯(lián)容器。關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進行了詳細描述,此處將不做詳細闡述說明。應(yīng)當注意,盡管在上文詳細描述中提及了用于動作執(zhí)行的設(shè)備的若干模塊或者單元,但是這種劃分并非強制性的。實際上,根據(jù)本公開的實施方式,上文描述的兩個或更多模塊或者單元的特征和功能可以在一個模塊或者單元中具體化。反之,上文描述的一個模塊或者單元的特征和功能可以進一步劃分為由多個模塊或者單元來具體化。作為模塊或單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上。可以根據(jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)木公開方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。本示例實施方式中,還提供了一種計算機可讀存儲介質(zhì),其上存儲有計算機程序,該程序被處理器執(zhí)行時實現(xiàn)上述任一實施例中所述數(shù)據(jù)庫數(shù)據(jù)處理方法的步驟。關(guān)于該數(shù)據(jù)庫數(shù)據(jù)處理方法的具體步驟可參考前述方法實施例中的詳細描述,此處不再贅述。另外,本示例實施方式中,還提供了一種電子設(shè)備,該電子設(shè)備可以包括處理器和存儲器。其中,所述存儲器,用于存儲所述處理器的可執(zhí)行指令;所述處理器配置為經(jīng)由執(zhí)行所述可執(zhí)行指令來執(zhí)行上述任一實施例中所述數(shù)據(jù)庫數(shù)據(jù)處理方法的步驟。關(guān)于該數(shù)據(jù)庫數(shù)據(jù)處理方法的具體步驟可參考前述方法實施例中的詳細描述,此處不再贅述。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員易于理解,這里描述的示例實施方式可以通過軟件實現(xiàn),也可以通過軟件結(jié)合必要的硬件的方式來實現(xiàn)。因此,根據(jù)本公開實施方式的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個非易失性存儲介質(zhì)(可以是cd-rom,u盤,移動硬盤等)中或網(wǎng)絡(luò)上,包括若干指令以使得一臺計算設(shè)備(可以是個人計算機、服務(wù)器、觸控終端、或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行根據(jù)本公開實施方式的方法。圖7示出根據(jù)本公開示例實施方式中一種數(shù)據(jù)庫數(shù)據(jù)處理裝置400的示意圖。例如,裝置400可以被提供為一服務(wù)器。參照圖7,裝置400包括處理組件422,其進一步包括一個或多個處理器,以及由存儲器432所代表的存儲器資源,用于存儲可由處理組件422的執(zhí)行的指令,例如應(yīng)用程序。存儲器432中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。此外,處理組件422被配置為執(zhí)行指令,以執(zhí)行上述方法。裝置400還可以包括一個電源組件426被配置為執(zhí)行裝置400的電源管理,一個有線或無線網(wǎng)絡(luò)接口450被配置為將裝置400連接到網(wǎng)絡(luò),和一個輸入輸出(i/o)接口458。裝置400可以操作基于存儲在存儲器432的操作系統(tǒng),例如windowsservertm,macosxtm,unixtm,linuxtm,freebsdtm或類似。本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的發(fā)明后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本
技術(shù)領(lǐng)域:
:中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由所附的權(quán)利要求指出。當前第1頁12當前第1頁12