本發(fā)明涉及一種模塊化數(shù)據(jù)分布計劃形成。
背景技術(shù):
企業(yè)數(shù)據(jù)庫系統(tǒng)存儲從一個或多個不同的源接收的巨大量的數(shù)據(jù)。數(shù)據(jù)被存儲在數(shù)據(jù)庫表格中并且可經(jīng)由結(jié)構(gòu)化查詢來訪問和修改。數(shù)據(jù)庫表格可被分區(qū),并且許多數(shù)據(jù)庫系統(tǒng)支持將表格分區(qū)分布在多個主機間以便改善例如可擴展性和可用性。
表格分區(qū)在主機間的分布通常由計劃生成算法來確定。計劃生成算法可考慮到情景的不同屬性和數(shù)據(jù)訪問需求。傳統(tǒng)的計劃生成算法是由數(shù)據(jù)庫系統(tǒng)開發(fā)者提供的并且無法具有照顧到眾多可能的考慮及其對于各種用戶的相對重要性所需的靈活性。
技術(shù)實現(xiàn)要素:
本發(fā)明的一個方面涉及一種系統(tǒng),包括:存儲器,存儲處理器可執(zhí)行過程步驟;以及處理器,執(zhí)行所述處理器可執(zhí)行過程步驟來使得所述系統(tǒng):實例化計劃生成環(huán)境,該計劃生成環(huán)境暴露一個或多個軟件鉤子,所述一個或多個軟件鉤子的每一者與用于生成數(shù)據(jù)庫表格分區(qū)重分布計劃的多個步驟中的相應(yīng)一個步驟相關(guān)聯(lián);對于所述一個或多個軟件鉤子,識別用于執(zhí)行與所述至少一個軟件鉤子相關(guān)聯(lián)的步驟的關(guān)聯(lián)的一個或多個軟件模塊;并且執(zhí)行所述計劃生成環(huán)境和所識別出的一個或多個軟件模塊來生成數(shù)據(jù)庫表格分區(qū)重分布計劃。
本發(fā)明的另一方面涉及一種由計算機實現(xiàn)的方法,包括:實例化計劃生成環(huán)境,該計劃生成環(huán)境暴露一個或多個軟件鉤子,所述一個或多個軟件鉤子的每一者與用于生成數(shù)據(jù)庫表格分區(qū)重分布計劃的多個步驟中的相應(yīng)一個步驟相關(guān)聯(lián);對于所述一個或多個軟件鉤子,識別用于執(zhí)行與所述至少一個軟件鉤子相關(guān)聯(lián)的步驟的關(guān)聯(lián)的一個或多個軟件模塊;并且執(zhí)行所述計劃生成環(huán)境和所識別出的一個或多個軟件模塊來生成數(shù)據(jù)庫表格分區(qū)重分布計劃。
本發(fā)明的再一方面涉及一種存儲程序代碼的非暫態(tài)計算機可讀介質(zhì),所述程序代碼可由計算機系統(tǒng)執(zhí)行來使得該計算機系統(tǒng):實例化計劃生成環(huán)境,該計劃生成環(huán)境暴露一個或多個軟件鉤子,所述一個或多個軟件鉤子的每一者與用于生成數(shù)據(jù)庫表格分區(qū)重分布計劃的多個步驟中的相應(yīng)一個步驟相關(guān)聯(lián);對于所述一個或多個軟件鉤子,識別用于執(zhí)行與所述至少一個軟件鉤子相關(guān)聯(lián)的步驟的關(guān)聯(lián)的一個或多個軟件模塊;并且執(zhí)行所述計劃生成環(huán)境和所識別出的一個或多個軟件模塊來生成數(shù)據(jù)庫表格分區(qū)重分布計劃。
附圖說明
圖1是根據(jù)一些實施例的數(shù)據(jù)庫體系結(jié)構(gòu)的框圖。
圖2是根據(jù)一些實施例的數(shù)據(jù)庫體系結(jié)構(gòu)的框圖。
圖3包括根據(jù)一些實施例的過程的流程圖。
圖4是根據(jù)一些實施例的用戶界面的外在視圖。
圖5包括根據(jù)一些實施例的過程的流程圖。
圖6包括根據(jù)一些實施例的過程的流程圖。
圖7是根據(jù)一些實施例的裝置的框圖。
具體實施方式
提供以下描述來使得任何本領(lǐng)域技術(shù)人員能夠做出和使用描述的實施例。然而,各種修改將仍然是本領(lǐng)域技術(shù)人員很容易清楚的。
圖1是根據(jù)一些實施例的數(shù)據(jù)庫體系結(jié)構(gòu)100的框圖。實施例不限于體系結(jié)構(gòu)100或某一數(shù)據(jù)庫體系結(jié)構(gòu)。體系結(jié)構(gòu)100包括數(shù)據(jù)庫110、應(yīng)用服務(wù)器120和客戶端130。
應(yīng)用服務(wù)器120執(zhí)行并提供服務(wù)給諸如管理工具122和其他應(yīng)用124a和124b之類的應(yīng)用。應(yīng)用可包括服務(wù)器側(cè)可執(zhí)行程序代碼(例如,編譯的代碼、腳本等等),這些代碼通過向客戶端130提供用戶界面,經(jīng)由這種用戶界面接收來自客戶端130的請求,基于這些請求從數(shù)據(jù)庫110取回數(shù)據(jù),處理從數(shù)據(jù)庫110接收的數(shù)據(jù),并且將經(jīng)處理的數(shù)據(jù)提供給客戶端130,從而來向客戶端130提供功能。
諸如管理工具122之類的在應(yīng)用服務(wù)器120內(nèi)執(zhí)行的應(yīng)用也可向客戶端130暴露管理功能,包括但不限于數(shù)據(jù)庫配置、數(shù)據(jù)庫維護、數(shù)據(jù)庫優(yōu)化和其他管理功能??蛻舳?30對特定應(yīng)用的訪問可基于操作客戶端130的用戶的角色。例如,在一些實施例中只有與數(shù)據(jù)庫管理員角色相關(guān)聯(lián)的用戶可被允許訪問管理工具122。
應(yīng)用服務(wù)器120提供客戶端130可通過其來與在應(yīng)用服務(wù)器120上執(zhí)行的應(yīng)用通信的任何適當(dāng)?shù)慕涌?。例如,?yīng)用服務(wù)器120可包括支持通過傳輸控制協(xié)議(transmissioncontrolprotocol,tcp)的瞬態(tài)請求/響應(yīng)協(xié)議的超文本傳送協(xié)議(hypertexttransferprotocol,http)接口,支持應(yīng)用服務(wù)器120和任何實現(xiàn)websocket協(xié)議的客戶端130之間的通過單個tcp連接的非瞬態(tài)全雙工通信的websocket接口,和/或開放數(shù)據(jù)協(xié)議(opendataprotocol,odata)接口。
數(shù)據(jù)庫110包括數(shù)據(jù)庫管理系統(tǒng)(databasemanagementsystem,dbms)112和數(shù)據(jù)114。根據(jù)一些實施例,數(shù)據(jù)114包括數(shù)據(jù)庫表格的數(shù)據(jù)。正如本領(lǐng)域中已知的,數(shù)據(jù)114可分布在多個主機之間。例如,每個主機可包括一個或多個分區(qū),并且每個分區(qū)可存儲數(shù)據(jù)114的一個或多個關(guān)聯(lián)的數(shù)據(jù)庫表格。
如下文將要描述的,dbms112根據(jù)一些實施例可提供計劃生成引擎來生成重分布計劃。dbms112可執(zhí)行這種重分布計劃以在多個主機之間分布數(shù)據(jù)114。
數(shù)據(jù)114在主機間的分布和分區(qū)的定義可由也存儲在數(shù)據(jù)114內(nèi)的元數(shù)據(jù)來描述。存儲的元數(shù)據(jù)也可描述數(shù)據(jù)114內(nèi)存儲的數(shù)據(jù)的結(jié)構(gòu)、關(guān)系和含義。此信息可包括定義數(shù)據(jù)114內(nèi)存儲的數(shù)據(jù)庫表格的模式(schema)的數(shù)據(jù)。模式可指定數(shù)據(jù)庫表格所屬的命名空間、數(shù)據(jù)庫表格名稱、數(shù)據(jù)庫表格的列、與每一列相關(guān)聯(lián)的數(shù)據(jù)類型和與數(shù)據(jù)庫表格相關(guān)聯(lián)的其他信息。
在服務(wù)器120上執(zhí)行的一個或多個應(yīng)用可利用數(shù)據(jù)庫管理接口與dbms112通信,所述數(shù)據(jù)庫管理接口包括但不限于開放數(shù)據(jù)庫互連(opendatabaseconnectivity,odbc)和java數(shù)據(jù)庫互連(javadatabaseconnectivity,jdbc)接口。這些類型的應(yīng)用可使用結(jié)構(gòu)化查詢語言(structuredquerylanguage,sql)來管理、修改和查詢數(shù)據(jù)庫110中存儲的數(shù)據(jù)。
dbms112為取回和/或修改數(shù)據(jù)114的請求服務(wù),并且也執(zhí)行行政和管理功能。這種功能可包括快照和備份管理、索引、優(yōu)化、垃圾收集和/或已知或者會變得已知的任何其他數(shù)據(jù)庫功能。根據(jù)一些實施例,數(shù)據(jù)庫110還提供應(yīng)用邏輯,例如數(shù)據(jù)庫過程和/或計算。此應(yīng)用邏輯可包括腳本、功能庫和/或編譯的程序代碼。
在一些實施例中,數(shù)據(jù)114可包括傳統(tǒng)的表格式數(shù)據(jù)、基于行的數(shù)據(jù)、基于列的數(shù)據(jù)和基于對象的數(shù)據(jù)中的一個或多個。數(shù)據(jù)114可被索引和/或在索引上選擇性地重復(fù)以允許對其的快速搜索和取回。數(shù)據(jù)庫110可支持多租賃以通過提供在編程上與彼此隔離的多個邏輯數(shù)據(jù)庫系統(tǒng)來分別支持多個不相關(guān)的客戶端。
數(shù)據(jù)庫110可包括已知的或?qū)⒆兊靡阎娜魏我粋€或多個查詢-響應(yīng)數(shù)據(jù)源,包括但不限于sql關(guān)系數(shù)據(jù)庫管理系統(tǒng)。數(shù)據(jù)庫110可包括關(guān)系數(shù)據(jù)庫、多維數(shù)據(jù)庫、可擴展標(biāo)記語言(extendablemarkuplanguage,xml)文檔或者存儲結(jié)構(gòu)化和/或非結(jié)構(gòu)化數(shù)據(jù)的任何其他數(shù)據(jù)存儲系統(tǒng)。數(shù)據(jù)114可分布在若干個關(guān)系數(shù)據(jù)庫、維度數(shù)據(jù)庫和/或其他數(shù)據(jù)源之間。實施例不限于任何數(shù)目或類型的數(shù)據(jù)源。
數(shù)據(jù)庫110可實現(xiàn)“內(nèi)存”(in-memory)數(shù)據(jù)庫,其中整個數(shù)據(jù)庫被存儲在易失性(例如,非基于盤的)存儲器(例如,隨機訪問存儲器)中。整個數(shù)據(jù)庫可被存留在和/或備份到固定盤中(未示出)。實施例不限于內(nèi)存實現(xiàn)方式。例如,數(shù)據(jù)可被存儲在隨機訪問存儲器(例如,用于存儲最近使用的數(shù)據(jù)的緩存存儲器)和一個或多個固定盤(例如,用于存儲整個數(shù)據(jù)庫的其各自部分的持久性存儲器)中。
如虛線所指示,應(yīng)用服務(wù)器120可與數(shù)據(jù)庫110分離或者與數(shù)據(jù)庫110緊密集成。緊密集成的應(yīng)用服務(wù)器120可使得能夠完全在數(shù)據(jù)庫110上執(zhí)行服務(wù)器應(yīng)用,而不需要額外的應(yīng)用服務(wù)器。例如,根據(jù)一些實施例,數(shù)據(jù)庫110包括提供對基于web的應(yīng)用的端到端支持的嵌入式服務(wù)的綜合集合。這些服務(wù)可包括輕量型web服務(wù)器、對odata的可配置支持、服務(wù)器側(cè)javascript執(zhí)行和對sql和sqlscript的訪問。
每個客戶端130可包括執(zhí)行用于呈現(xiàn)用戶界面以允許與應(yīng)用服務(wù)器120的交互的軟件應(yīng)用的程序代碼的一個或多個設(shè)備。用戶界面可包括適合于管理、報告、數(shù)據(jù)分析和/或任何其他基于數(shù)據(jù)114的功能的用戶界面。
取決于由應(yīng)用服務(wù)器120生成的用戶界面代碼的類型,如本文所述的用戶界面的呈現(xiàn)可包括任何程度或類型的渲染。例如,客戶端130可執(zhí)行web瀏覽器來經(jīng)由http、https和/或websocket從應(yīng)用服務(wù)器120請求并接收網(wǎng)頁(例如,以html格式)并且可根據(jù)已知的協(xié)議渲染并呈現(xiàn)網(wǎng)頁??蛻舳?30中的一個或多個可以額外地或者替換地通過在虛擬機內(nèi)執(zhí)行獨立可執(zhí)行文件(例如,.exe文件)或代碼(例如,java小應(yīng)用程序)來呈現(xiàn)用戶界面。
圖2是根據(jù)一些實施例的系統(tǒng)200的詳細框圖。系統(tǒng)200可包括在一些實施例中圖1的系統(tǒng)100的一種實現(xiàn)方式。系統(tǒng)200包括數(shù)據(jù)庫205,數(shù)據(jù)庫205進而包括數(shù)據(jù)210和數(shù)據(jù)庫引擎220。系統(tǒng)200還包括管理工具ui組件230,數(shù)據(jù)庫管理員240與該管理工具ui組件230交互來根據(jù)一些實施例生成重分布計劃。
計劃生成引擎222被調(diào)用以便生成重分布計劃。數(shù)據(jù)庫引擎220的計劃生成引擎222可基于經(jīng)由計劃生成數(shù)據(jù)總線224從計劃生成步驟模塊226接收的算法來生成重分布計劃。模塊226可包括被插入到計劃生成引擎222的軟件鉤子中并且在重分布計劃的生成期間的適當(dāng)時間被調(diào)用的算法。
模塊226可在數(shù)據(jù)庫系統(tǒng)205的核心內(nèi)實現(xiàn)(例如,實現(xiàn)為sqlscript模塊211)、在數(shù)據(jù)庫引擎220上實現(xiàn)(例如,實現(xiàn)為javascript模塊228)和/或在外部系統(tǒng)250上實現(xiàn),其中到該外部系統(tǒng)250的通信信道可作為模塊252被建立。模塊226因此可提供一種機制,通過該機制客戶可實現(xiàn)依客戶而定的算法,該算法作為由數(shù)據(jù)庫系統(tǒng)205的提供者發(fā)貨的算法的替換在重分布計劃的生成期間被調(diào)用。
數(shù)據(jù)210包括倉庫212和表格218。倉庫212的模塊接口數(shù)據(jù)214包括計劃生成環(huán)境(例如,模塊接口的元數(shù)據(jù),和配置設(shè)定(例如,哪些模塊要被使用))和在重分布計劃216的生成期間生成的日志。重分布計劃216定義數(shù)據(jù)庫表格分區(qū)的數(shù)目及其布置,并且可被觸發(fā)來由數(shù)據(jù)庫205執(zhí)行。
圖3包括根據(jù)一些實施例的過程300的流程圖。過程300可包括系統(tǒng)根據(jù)一些實施例生成重分布計劃。在一些實施例中,系統(tǒng)100或200的各種硬件元件(例如,一個或多個處理器)執(zhí)行程序代碼來執(zhí)行過程300。
過程300和本文提到的所有其他過程可以用從諸如軟盤、基于盤的硬盤驅(qū)動器或固態(tài)硬盤驅(qū)動器、cr-rom、dvd-rom、閃盤驅(qū)動器和磁帶之類的非暫態(tài)計算機可讀介質(zhì)中的一個或多個讀取并且隨后被以壓縮的、未編譯的和/或加密的格式存儲的處理器可執(zhí)行程序代碼來實現(xiàn)。在一些實施例中,硬連線的電路可取代程序代碼或與程序代碼相結(jié)合使用來實現(xiàn)根據(jù)一些實施例的過程。實施例因此不限于硬件和軟件的任何特定組合。
在s310之前,用戶可登錄到用于管理數(shù)據(jù)庫系統(tǒng)的應(yīng)用。實施例可采用任何適當(dāng)?shù)墓ぷ魇摇⒐ぞ?、開發(fā)環(huán)境或其他管理應(yīng)用。例如,管理員240可操作客戶端設(shè)備來訪問數(shù)據(jù)庫210的管理應(yīng)用的web門戶。假定管理員240提供適當(dāng)?shù)淖C書,則管理工具ui組件230可將用戶界面發(fā)送到客戶端設(shè)備來顯示。
圖4是根據(jù)一些實施例的用戶界面400的外在視圖。管理員240可操縱用戶界面400來指定計劃生成步驟模塊226及其特定參數(shù)。更具體而言,簡檔字段410指定與其自己的模塊接口(即,“鉤子”)和算法相關(guān)聯(lián)的特定計劃生成環(huán)境。
用戶界面400的各種區(qū)塊對應(yīng)于計劃生成環(huán)境的不同步驟。在每個區(qū)塊內(nèi)可指定多種參數(shù)。例如,參數(shù)“(一個或多個)模式名稱”、“(一個或多個)群組名稱”和“(一個或多個)群組類型”是鉤入到步驟中來確定分區(qū)元數(shù)據(jù)的模塊226的參數(shù),這將在下文描述。過程300在執(zhí)行生成計劃用戶界面控件時開始。
在s310,確定要執(zhí)行的計劃生成步驟和對于每個步驟要調(diào)用的模塊。計劃生成引擎222可基于上文描述的用戶輸入(即,指定計劃生成環(huán)境和對于環(huán)境的每個步驟指定參數(shù))加載模塊接口數(shù)據(jù)的配置設(shè)定并且基于其來實例化計劃生成環(huán)境。如上所述,計劃生成環(huán)境提供一個或多個預(yù)定的鉤子,這些鉤子可由模塊實現(xiàn)(或者在一些情況下必須由模塊實現(xiàn))。s310還包括加載模塊226之中的與實例化的計劃生成環(huán)境的鉤子相對應(yīng)的模塊,執(zhí)行一致性檢查并且寫入消息日志。
接下來,在s320,僅當(dāng)要求的且識別的模塊被成功加載時,計劃生成環(huán)境才被執(zhí)行來生成重分布計劃。在一些實施例中,計劃生成引擎222可執(zhí)行計劃生成環(huán)境的步驟,適當(dāng)?shù)卣{(diào)用加載的模塊,來生成分布計劃。在引擎222和模塊之間傳達的數(shù)據(jù)的一致性被對照模塊接口來檢查并且日志被寫入來提供關(guān)于每個步驟的結(jié)果的詳細信息。根據(jù)一些實施例的s320將在下文參考圖5的替換過程500和圖6的替換過程600來詳細描述。
生成的重分布計劃在s330被存儲。重分布計劃由重分布步驟組成,重分布步驟可包含關(guān)于將表格分區(qū)移動到何處或者如何改變分區(qū)的數(shù)目的信息,或者可包括特殊的語義(例如,觸發(fā)重壓縮)。這些步驟可被存儲在倉庫212的重分布計劃216中并且可隨后被數(shù)據(jù)庫系統(tǒng)205執(zhí)行來重分布分區(qū)。
在s340,與計劃生成有關(guān)的日志消息被寫入到數(shù)據(jù)庫表格。日志消息可包括關(guān)于計劃生成的狀態(tài)和關(guān)于發(fā)生的任何問題的信息。消息可被設(shè)定成與任何實體(例如,表格)發(fā)生關(guān)系,從而使得用戶可識別與給定實體相關(guān)聯(lián)的消息。模塊可能夠向日志消息賦予不同的嚴重性級別,從而促進對問題的根本原因的識別。
圖5的過程500包括根據(jù)一些實施例的過程300的s320的一種實現(xiàn)方式。一般而言,在過程500期間,計劃生成引擎222按預(yù)定的順序執(zhí)行由所選擇的計劃生成環(huán)境定義的特定步驟。用于執(zhí)行每個步驟的邏輯可由數(shù)據(jù)庫205的開發(fā)者提供,并且客戶、咨詢顧問或其他人可通過提供實現(xiàn)其自己的步驟實現(xiàn)方式的模塊來覆寫此邏輯。這種模塊必須遵守步驟的接口合約。
轉(zhuǎn)到具體步驟,在s510確定分區(qū)元數(shù)據(jù)。實現(xiàn)此步驟的模塊返回表示在下一步驟中要讀取的分區(qū)的集合和元數(shù)據(jù)的抽象數(shù)據(jù)源。在s510期間,要重組織的分區(qū)的集合可被約束(例如,通過針對某些屬性進行過濾)或者充實(例如,通過從外部源提供額外的元數(shù)據(jù),例如量級估計)。
實施例可支持多于一個模塊執(zhí)行s510。如果多于一個模塊被使用,則這些模塊與彼此形成流水線,使得由第一模塊返回的數(shù)據(jù)源被傳遞下去作為第二模塊的數(shù)據(jù)源,等等依此類推。所得到的數(shù)據(jù)源可以是復(fù)雜嵌套數(shù)據(jù)源。
接下來,在s520,從在s510產(chǎn)生的抽象數(shù)據(jù)源讀取一批分區(qū)信息。例如,實現(xiàn)s520的模塊可返回與彼此表現(xiàn)出特定關(guān)系(例如,由于常規(guī)數(shù)據(jù)庫查詢在聯(lián)接中使用這些表格)的表格的群組。讀取的批次的表格被聯(lián)合處理,從而對于重組織允許了更大靈活性(例如,關(guān)于放置的)。s520還確定表格將按什么順序被處理(例如,從具有最大表格的最大群組到具有最小表格的最小群組)。對于作為由此模塊返回的批次的一部分的每個表格,預(yù)期該表格的所有分區(qū)被返回(即,描述完整表格)。
在s530確定讀取的批次的每個表格的配置設(shè)定。預(yù)期向該批次的每個表格指派配置,并且如果沒有找到關(guān)聯(lián)的配置則忽略表格。附于表格的配置可由“擁有”該表格的應(yīng)用的開發(fā)者定義,但也可由數(shù)據(jù)庫管理員或咨詢顧問定義(即,作為“配置類型”)。
在s540基于配置設(shè)定確定該批次的每個表格的分區(qū)的目標(biāo)數(shù)目。實現(xiàn)s540的模塊可按每批次操作,以例如確保作為該批次的一部分的所有表格被指派相同數(shù)目的分區(qū)。s540可以是可選的,因為在分區(qū)的數(shù)目已被定義為固定的情況下其可被跳過。
對于該批次中包含的每個分區(qū),實現(xiàn)s5504模塊確定該分區(qū)應(yīng)當(dāng)被放置在的主機。在確定分布式數(shù)據(jù)庫系統(tǒng)的哪個主機對于給定表格是最優(yōu)的時可考慮任何數(shù)目的因素。例如,最優(yōu)主機可基于本地最優(yōu)來選擇(例如,具有最低的存儲器利用率的主機)、基于給定表格的增長率來選擇,或者被選擇來確保所有主機上的所有表格的記錄的數(shù)目是大致相等的。
在s560判定是否停止計劃的生成。此判定可簡單地是對于是否還有任何批次的分區(qū)元數(shù)據(jù)仍未被讀取的判定。如果否,則如圖所示流程前進到s330。
s560也可采用評估計劃生成是否應(yīng)當(dāng)被停止的一個或多個模塊。這些模塊可被“或”(or)在一起,使得如果任何模塊判定計劃生成應(yīng)當(dāng)被停止則計劃生成將停止。例如,如果已經(jīng)知道表格分區(qū)是正確分布的并且如果檢測到整體節(jié)點利用率是充分平衡的,則計劃生成可被提早停止(即,在讀取分區(qū)元數(shù)據(jù)的所有批次之前)。用于判定是否停止計劃生成的其他因素包括但不限于主機的數(shù)目、主機間的整體存儲器分布、通過讀取或修改屬于一起的不同表格分區(qū)的數(shù)據(jù)所引起的處理器負載以及執(zhí)行重分布計劃所需要的時間。
如果s560處的判定是否定,則流程返回到s520以讀取下一批分區(qū)元數(shù)據(jù)并且如上所述繼續(xù)直到所有批次都被讀取并且重分布計劃被生成為止或者直到在s560因其他原因判定停止計劃生成為止。
圖6的過程600例示了根據(jù)一些實施例的s320的一種實現(xiàn)方式。過程600反映了一種計劃生成環(huán)境,其中重分布計劃是基于由數(shù)據(jù)庫管理員定義的參數(shù)在一個步驟內(nèi)生成的。因此,不是利用如針對過程500所述定制重分布計劃生成的關(guān)聯(lián)子步驟的模塊,而是插入到過程600的計劃生成環(huán)境中的模塊提供用于生成重分布計劃的完整算法的一種實現(xiàn)方式。
在s610,使由數(shù)據(jù)庫管理員提供(例如,由數(shù)據(jù)庫管理員240經(jīng)由界面400提供)的數(shù)據(jù)符合計劃生成環(huán)境的(唯一)模塊接口。接下來,在s620,該模塊基于計劃生成環(huán)境的配置數(shù)據(jù)和由數(shù)據(jù)庫管理員提供的數(shù)據(jù)生成分布計劃。流程隨后如上所述繼續(xù)到s330。
前述模塊化概念經(jīng)由明確定義的接口和調(diào)用能力促進了插件模塊的使用,這些插件模塊提供了影響重分布計劃的生成的功能,這些重分布計劃例如定義數(shù)據(jù)庫表格分區(qū)及其在分布式數(shù)據(jù)庫系統(tǒng)的主機上的放置。
圖7是根據(jù)一些實施例的裝置700的框圖。裝置700可包括通用計算裝置并且可執(zhí)行程序代碼來執(zhí)行本文描述的任何功能。根據(jù)一些實施例,裝置700可包括圖1的數(shù)據(jù)庫110和應(yīng)用服務(wù)器120和/或圖2的數(shù)據(jù)庫系統(tǒng)205的一種實現(xiàn)方式。裝置700可包括其他未示出的元件。
裝置700包括處理器710,該處理器710操作性地耦合到通信設(shè)備720、數(shù)據(jù)存儲設(shè)備730、一個或多個輸入設(shè)備740、一個或多個輸出設(shè)備750和存儲器760。通信設(shè)備720可促進與外部設(shè)備(例如客戶端)或外部數(shù)據(jù)存儲設(shè)備的通信。(一個或多個)輸入設(shè)備740可包括例如鍵盤、小鍵盤、鼠標(biāo)或其他指點設(shè)備、麥克風(fēng)、旋鈕或開關(guān)、紅外(ir)端口、擴展塢和/或觸摸屏。(一個或多個)輸入設(shè)備740可例如用于向裝置700中輸入信息。(一個或多個)輸出設(shè)備750可包括例如顯示器(例如,顯示屏)、揚聲器和/或打印機。
數(shù)據(jù)存儲設(shè)備730可包括任何適當(dāng)?shù)某志眯源鎯υO(shè)備,包括磁存儲設(shè)備(例如,磁盤、硬盤驅(qū)動器和閃存)、光存儲設(shè)備、只讀存儲器(readonlymemory,rom)設(shè)備等等的組合,而存儲器760可包括隨機訪問存儲器(randomaccessmemory,ram)、存儲級存儲器(storageclassmemory,scm)或者任何其他快速訪問存儲器。
管理工具731、計劃生成引擎732、計劃生成步驟模塊733和dbms734可包括由處理器710執(zhí)行來使得裝置700執(zhí)行本文描述的過程中的任何一個或多個的程序代碼。實施例不限于單個裝置執(zhí)行這些過程。
重分布計劃735如本文所述可由計劃生成引擎732聯(lián)合計劃生成步驟模塊733生成。數(shù)據(jù)庫表格736可包括存儲數(shù)據(jù)的數(shù)據(jù)庫表格,以及元數(shù)據(jù)和希望存儲的任何其他數(shù)據(jù)。如本領(lǐng)域中已知的,重分布計劃735可被執(zhí)行來在主機之間分布數(shù)據(jù)庫表格736的分區(qū)。
數(shù)據(jù)庫表格736可如圖所示被存儲在設(shè)備730中和/或存儲在例如存儲器760之類的易失性存儲器中。數(shù)據(jù)存儲設(shè)備730也可存儲用于提供額外功能和/或?qū)τ谘b置700的操作所必要的數(shù)據(jù)和其他程序代碼,例如設(shè)備驅(qū)動器、操作系統(tǒng)文件等等。
前述附圖表示用于描述根據(jù)一些實施例的過程的邏輯體系結(jié)構(gòu),并且實際實現(xiàn)方式可包括以其他方式布置的更多或不同的組件。結(jié)合其他實施例可使用其他拓撲。另外,本文描述的每個組件或設(shè)備可由經(jīng)由任何數(shù)目的其他公共和/或私有網(wǎng)絡(luò)通信的任何數(shù)目的設(shè)備實現(xiàn)。這種計算設(shè)備中的兩個或更多個可位于彼此的遠程并且可經(jīng)由(一個或多個)網(wǎng)絡(luò)和/或?qū)S眠B接的任何已知方式與彼此通信。每個組件或設(shè)備可包括適合于提供本文描述的功能以及任何其他功能的任何數(shù)目的硬件和/或軟件元件。例如,在根據(jù)一些實施例的系統(tǒng)的實現(xiàn)方式中使用的任何計算設(shè)備可包括處理器來執(zhí)行程序代碼以使得該計算設(shè)備如本文所述那樣操作。
本文論述的所有系統(tǒng)和過程可以用存儲在一個或多個非暫態(tài)計算機可讀介質(zhì)上的程序代碼來實現(xiàn)。這種介質(zhì)可包括例如軟盤、cd-rom、dvd-rom、閃盤驅(qū)動器、磁帶和固態(tài)隨機訪問存儲器(ram)或只讀存儲器(rom)存儲單元。實施例因此不限于硬件和軟件的任何特定組合。
本文描述的實施例只是為了例示。本領(lǐng)域技術(shù)人員將會認識到在對上文描述的進行修改和替換后可實現(xiàn)其他實施例。