分區表中的唯一值估計的製作方法
2023-05-25 20:34:51 1
專利名稱:分區表中的唯一值估計的製作方法
技術領域:
這裡描述的主題涉及分區的資料庫表的操縱。
背景技術:
近些年來,計算機處理硬體的中央處理單元(CPU)已經基本上體驗到了最大的性能提高,這些提高主要是通過處理器核心數目的增加而實現的,而非通過提高時鐘速率實現的。因此,為了最大化性能,通過允許並行執行以及具有與核心的數量良好匹配(scalewell)的體系結構,如今的軟體有利地利用了多核CPU的優勢。對於數據管理系統而言,要充分利用並行處理能力所帶來的優勢,一般需要將存儲的數據分區成多個扇區(section)或「分區」,以便對它們並行執行計算。資料庫程序或者資料庫管理系統一般用具有行和列的二維表的形式來顯示數據。但是,數據典型地存儲為一維數據串。基於行的存儲典型地將行中的值一起串行化(serialize),然後是下一行中的值,這樣持續下去,相應地,基於列的存儲將列的值一起串行化,然後是下一列中的值,這樣持續下去。一般而言,當需要對於許多行計算聚集(aggregate)但只是所有數據列中顯然較小的子集時,基於列的系統有著更高的效率,這是因為讀取較小的子集相比於讀取所有數據而言將會更為快捷。當一列中的新值被即刻提供給所有行時,基於列的系統可以更有效率,這是因為列數據可以被高效地寫入並且取代舊的列數據,而不涉及這些行中的任何其它列。當單一行中的多個列在同一個時間被需要時,以及當行的大小相對較小時,基於行的系統將更為高效,這是因為整個行可以通過單一磁碟搜索來取回(retrieve)。如果所有列數據在同一時間被提供而寫一個新行時,基於行的系統也將更為高效,這是因為整個行可以通過單一磁碟搜索而被寫入。基於列的存儲可以促進使用多個處理器核心並行執行操作。在列存儲中,數據已經被垂直的分區,所以對於不同列的操作可以容易地並行處理。如果多個列需要被搜索或者整合,則這些操作中的每一個都可以被分配給不同的處理器核心。此外,對一個列的操作可以通過將列分區為由不同處理器核心處理的多個扇區而被並行化。列數據典型地是統一類型,其可以為優化存儲大小以使得那些與基於行的數據存儲並不適用的基於列的數據存儲可被使用而帶來機會。例如,當今一些壓縮機制可以利用鄰近數據間的相似性來進行壓縮。為了改善基於列的數據的壓縮,典型的解決方法是對行進行排序(sorting)。例如,使用位圖索引,通過按照大概的大小次序,排序能夠改善壓縮。在傳統的系統中,柱形壓縮通常以取回效率為代價來實現對存儲空間需求的減少。當數據位於單一位置時,從單一行中取回所有的數據可能更為高效,如基於行的體系結構。進一步的,鄰近壓縮完成的越多,則隨機訪問將變得越發困難,這是因為數據典型地需要被解壓縮才能被讀取。因此,傳統的基於列的體系結構通常可以通過附加的以最小化訪問壓縮數據的需求為目標的機制而被豐富。這些附加的機制可以導致更低的壓縮效率和/或增加訪問壓縮數據的處理需求。當今可用的相關資料庫管理系統可以基於被應用來劃分(split)資料庫的特定標準來實現分區。通常,分區鍵(key)被用來基於一定標準分配分區。通常使用的方法包括範圍分區、列表分區、哈希(hash)分區、輪循(round robin)分區、以及組合分區。在範圍分區中,分區可以通過確定分區鍵是否在該排列中而被定義。例如,分區可以被創建為包括郵政編碼在70000和79999之間的列中所有的行。在列表分區中,分區可以被分配值的列表,並且如果分區鍵具有列表中的一個值,則能夠選擇該分區。例如,分區被建立為包括與北歐國家相關的數據,該分區可以包括其中國家名稱的列包括文本字符串值冰島、挪威、瑞典、芬蘭、丹麥、等等的所有的行。在哈希分區中,哈希函數的值可以確定分區中的成員。例如,對於具有四個分區的分區方法,哈希函數可以返回從O到3的值以便指定四個分區中的一個。輪循分區可以被用來根據在可用分區或者伺服器或伺服器過程當中的預設旋轉(pre-setrotation),在多個數據分區和/或伺服器或伺服器過程中分布存儲和/或處理載荷。例如,第一數據單元可以導向三個分區中的第一分區,第二數據單元導向第二分區,第三數據單元導向第三分區,第四數據單元導向第一分區,依此類推。在組合分區中,能夠允許其它分區方法的一定組合,例如,首先應用範圍分區然後應用哈希分區。
發明內容
在一個方面,一種方法包括應用估計算法以產生資料庫表的列中的數據的唯一性度量(uniqueness metric),所述資料庫表的列被跨越多個數據分區來劃分,通過將唯一性度量與閾值進行對比,將列分類為有類別的(categorical)和無類別的(non-categorical),並且分配第一估計因子和第二估計因子之一到所述列。如果所述列被分類為有類別的,則所述分配包括第一估計因子,如果所述列被分類為無類別的,則所述分配包括第二估計因子。第二估計因子大於第一估計因子。該方法還包括,計算對在所述資料庫表執行資料庫操作所需的系統資源的成本估計,以及改進成本估計。所述成本估計包括使用分配的第一估計因子或第二估計因子以及作為估計函數的輸入的所述表中的行數而確定的、跨越所述多個數據分區中所有分區的所述列中的不同值的估計的總數。在當前主題的一些變型中,以下特徵中的一個或多個可以選擇性地包括在任何可行的組合中。成本估計的改進可以選擇性地包括使用在開發至少部分操作計劃中的成本估計,用於執行涉及按照最優次序的資料庫表的至少一個列和其它列的一個或多個資料庫操作,經由與計算系統或設備相關聯的顯示設備顯示成本估計,發送包含成本估計的電子消息給用戶或者另一個機器,並且生成包括成本估計的報告。所述一個或多個資料庫操作可以選擇性地包括聯接(join)。所述估計算法可以選擇性地包括選擇多個數據分區中的一個數據分區,查詢所選擇的數據分區的字典有關在所選擇的數據分區中的所述列中唯一值的總數,計算唯一值的總數與所選擇的數據分區中包含的所述列的行數的比值(ratio),假定所述比值代表了多個數據分區中所有其它數據分區中的唯一值的分布,並且返回所計算的比值作為唯一性度量。所述估計算法可以額外地或者替換地選擇性地包括查詢字典有關多個數據分區的兩個或更多個數據分區中的每一個數據分區,比較有關兩個或更多個數據分區中的每一個數據分區的從字典返回的隨機採樣,以及返回唯一性度量作為隨機採樣之間的相異程度。查詢多個數據分區的兩個或更多個數據分區中每一個數據分區的字典,並比較從有關兩個或更多個數據分區中每一個數據分區的字典返回的隨機採樣;而後返回該唯一性度量作為隨機採樣間的相異度。所述查詢可以選擇性地包括請求隨機採樣,隨機採樣包括有關所述兩個或更多個數據分區中的每一個數據分區的所述列中的預設數量的唯一值。所述估計算法可以額外地或者替換性地選擇性地包括請求來自多個數據分區的一個或多個所選擇的數據分區中的每一個數據分區的字典返回具有相同的特定大小的各自的Bloom過濾器,並且基於從所述一個或多個所選擇的數據分區中返回的Bloom過濾器被填充的程度來返回所述唯一性度量。如這裡所使用的,字典可以包括在各自數據分區中各自列的唯一值的列表。本主題的一些實施方式可以包括,但不限於,描述了一致包含一個或多個特徵的系統和方法,以及包含有形體現的機器可讀介質的物品,該機器可讀介質可操作以引起一個或多個機器(例如,計算機等)產生此處描述的操作。類似的,還描述了可以包含一個或多個處理器以及耦合到該一個或多個處理器的一個或多個存儲器的計算機系統。可以包含計算機可讀存儲介質的存儲器可以包含、編碼、存儲等等引起一個或多個處理器執行一個或多個此處描述操作的一個或多個程序。與本主題的一個或多個實施方式一致的計算機實現的方法可以由駐留在單一的計算機系統或多個計算機系統中的一個或多個數據處理器來實現。這種多個計算機系統可以被連接並通過一個或多個連接方式交換數據和/或命令或其它指令等,包含但不限於通過網絡(例如,網際網路、無線廣域網、區域網、廣域網、有線網等等)連接、通過多個計算機系統中的一個或多個之間的直接連接等。在附圖和下面的描述中闡述此處描述的主題的一個或多個變形的細節。通過該描述、附圖和權利要求,此處描述的主題的其它特徵和優點將是顯而易見的。儘管為了說明的目的關於企業資源軟體系統或其它商業軟體解決方案或體系結構描述了本公開的主題的某些特徵,應當容易理解的是,這些特徵並不是用於限制的目的。本公開的權利要求書旨在定義要求保護的主題的範圍。
包含在說明書中並構成說明書一部分的附圖,顯示了此處公開的主題的某些方面,並且與說明書一起幫助解釋與公開的實施方式相關的一些原理。圖1是示出與本主題的至少一些實施方式相符的商業軟體系統體系結構的特徵的示圖;圖2是示出與本主題的至少一些實施方式相符的具有一個或多個特徵的方法的方面的處理流程圖;圖3是示出與本主題的至少一些實施方式相符的多級分區方法的特徵的示圖;圖4是示出與本主題的至少一些實施方式相符的資料庫管理系統體系結構的特徵的示圖;圖5是示出與本主題的至少一些實施方式相符的另一個資料庫管理系統體系結構的特徵的示圖;以及圖6是示出與本主題的至少一些實施方式相符的多租賃(mult1-tenancy)資料庫結構的特徵的示圖。實際中,相同的參考標號表示相同的結構、特徵或元素。
具體實施方式
表中不同屬性的數量,例如,一個或多個列中不同值的數量,可以是有效的資料庫管理中重要的確定,特別是對於跨越多個數據分區劃分的大型資料庫的管理中,其可以選擇性地由分離的數據伺服器或數據伺服器過程來控制。例如,確定諸如聯接等操作所需的資源,對於調度和分配對這樣的操作足夠的資源是必須的。這樣的操作通常需要多個聯接,並且按照最優的次序確定用於執行那些聯接或其它操作的操作計劃也可能需要至少估計在所述表的一個或多個列跨越數據分區劃分時所述列中非重複的(non-duplicative)值的數量。但是,在分區的表中,確定不同值的準確計數是很昂貴的。通常,每個分區中不同值的數量的計數必須被確定,然後這些計算必須被整合到一起以消除重複(duplicates)。例如,第一分區可以在其唯一計數中包括也出現在另一個分區上的值,並且因此在那個第二分區上也被計數為唯一。在不產生實質運行時通信量的情況下,這樣的計算對於在分區表中執行是很困難的,運行時通信量在性能方面是損失嚴重的(costly)。與當前主題相符的方法、系統、生產工藝等,聯合其它可能的優點,能夠提供改進的方法,用來獲得跨越多個數據分區劃分的表中的不同值的數量的合理估計。以這種方式,能夠避免對於一個或多個表或列操作確定處理要求而對分區的過度讀取。與一個或多個實施方式相符的,基於一列或多列中的值的小採樣(smallsampling),每一列可以被分類為有類別的列(categorical column)或無類別的列(non-categorical column)。如這裡所使用的,有類別的列可以是這樣的列,其被估計為包含比在列中的行實質上更少的唯一值。換句話說,這樣的列包含在個別的數據記錄中頻率地重複的數據值。作為一個非限制性的例子,有類別的列的數據內容可以包括國家、州、部分、市、眼睛色彩、零件號碼、郵政編碼、組織角色、等等。圖1示出了可以實現當前主題的一個或多個特徵的系統的示圖。計算系統102能夠包括一個或多個核心軟體平臺模塊104,其提供了商業軟體系統或者包括資料庫管理特徵的其它軟體的一個或多個特徵。計算機系統也可以集成或者提供網關,用戶可以通過網關訪問由一個或多個外部軟體組件106提供的功能。一個或多個客戶機108可以經由直接連接、本地終端、或通過網絡110(例如,區域網、廣域網、無線網、網際網路等等)訪問計算機系統。估計代理112或者其它可比較的功能可以訪問包括至少一個表116的資料庫114,而表116可以依次包括至少一列。估計代理112可以實現一種估計算法,該估計算法使得計算系統的一個或多個處理器來執行一個或多個這裡描述的功能。資料庫表可以存儲任何數據類型,潛在地包括但不限於,商業計劃(business scenario)的定義、商業過程、以及一個或多個商業配置、以及與商業計劃的實例或定義、商業過程、以及一個或多個商業配置相關的交易(transactional)數據、元數據、主數據,等等,和/或與商業計劃或者商業過程等的特定實例相關的數據對象和/或商業對象的具體實例。表可以跨越一個或多個數據分區120、122、124來劃分,所述數據分區可以經由單一的伺服器或伺服器過程來訪問,或者經由兩個或更多並行伺服器或者伺服器過程來訪問,例如,如下所述的。可以作為資料庫管理模塊等的一部分的列存儲引擎126可以維持這樣一個字典,其包含表的每一列中的多個分區120、122、124中的每一個分區的唯一(不同,等)值的列表。圖2示出了過程流程圖200,該流程圖200示出了方法特徵,這些方法特徵中的一個或多個可以包括在當前主題的實施方式中。在202,估計算法例如由估計代理來應用,或者在其它方式中由一個或多個處理器應用,以生成代表在資料庫表的列中的數據的唯一性度量。所述列可以跨越多個數據分區來劃分,例如,如上所討論的。唯一性度量可使用幾種可能的估計算法中的一種來計算。在204,通過將唯一性度量與閾值進行比較,所述列被分類為有類別的或者無類別的。在206,第一或者第二估計因子被分配給所述列。如果所述列被分類為有類別的,則第一估計因子被分配給列,如果所述列被分類為無類別的,則大於第一估計因子的第二因子被分配給列。在210,計算對於在資料庫表上執行資料庫操作所需的系統資源的成本估計。成本估計包括使用分配的第一估計因子或第二估計因子以及表中的行數作為成本估計函數的輸入,確定跨越多個數據分區中的所有數據分區的列中的不同值的估計的數量。在212,改進成本估計。改進包括在開發或確定用於執行聯接或其它資料庫操作的操作計劃的至少一部分中使用成本估計,所述聯接或其它資料庫操作涉及按照最優次序的資料庫表的所述列和/或一個或多個其它列。分區還可以選擇性地包括經由與計算系統或設備相相關聯的顯示設備來顯示成本估計,將包含成本估計的電子消息發送給用戶或另一臺機器,生成包括成本估計的報告,例如,在通過估計的唯一值數量對列進行排隊(ranking)時等等。在一些實施方式中,估計算法可以包括選擇多個分區中的一個分區,並且查詢所選擇的數據分區的字典有關在所選擇的數據分區中的列中的唯一值的總數。計算唯一值與所選擇的數據分區中包含的列的行數的比值,並假定其代表了在多個數據分區中的所有其它數據分區中唯一值的分布。在這個例子中,唯一性度量可以是所計算的唯一值與行數的比值。如果在所選擇的數據分區中的列的唯一值數量基本上小於行數(例如,唯一值與行數的比值低於閾值),則列被分類為是有類別的。在其它的實施方式中,估計算法可以向多個數據分區中的兩個或更多個數據分區上的字典發送查詢。查詢可以請求在兩個或更多個數據分區中的每一個數據分區上的列中預設數量的唯一值的隨機採樣。兩個或更多個數據分區可以選擇性地包括所述多個數據分區中的所有數據分區。從兩個或更多個數據分區上的字典中返回的隨機採樣可以被比較,並且唯一性度量可以代表隨機採樣之間的類似程度。在這個例子中,如果隨機採樣之間的相似度高於閾值,則所述列將被分類為有類別的,因為採樣的數據分區中的列部分之間的唯一值的副本指示單一性的較低程度。如果隨機採樣的相似度低於閾值,則所述列被分類為無類別的。在另一個實施方式中,估計算法可以利用Bloom過濾器,Bloom過濾器是用於測試某個要素是否為集合中的一員的具有良好空間效率的概率(probabilistic)數據結構。估計算法可以請求來自表或列的一個或多個數據分區的字典返回具有相同的、特定大小的bloom過濾器。用於每個採樣的分區的Bloom過濾器被填充的程度可以用來確定所述列是否應當被劃分為有類別的。例如,如果所述一個或多個數據分區被填充的Bloom過濾器結果小於預定閾值量,則所述列可以被分類為有類別的。如果所述一個或多個數據分區被填充的Bloom過濾器結果大於預定閾值量,則所述列可以被分類為無類別的。在另一個例子中,用於兩個或更多個分區的、使用相同大小和哈希函數生成的bloom過濾器可以被比較。如果集合比特大多數相同則所述列可以被分類為有類別的,如果集合比特並非大多數相同則所述列可以被分類為無類別的。
當前主題的一些實施方式可以結合多級的分區方法來使用。在圖3所示的一個非限制性例子中,根據月份的範圍分區可以被用來劃分在幾個並行伺服器或數據伺服器過程中的每一個上的多個分區中的數據記錄。如圖3的框架300中所示,對於一年中的第一季度的每個月,資料庫可以被範圍分區為一個分區。因此,在第一數據過程伺服器304上的3級第一數據分區302被子分區(subpartition)為2級第一一月分區306、2級第一二月分區308、以及2級第一三月分區310。在第二數據過程伺服器314上的I級第二數據分區312被子分區為2級第二一月分區316、2級第二二月分區318、以及2級第二三月分區320。在圖3中所示的例子中,在I級第一資料庫分區302和I級第二資料庫分區312之間的資料庫上的數據的分區可以通過使用哈希分區方法來達成,在哈希分區方法中基於資料庫的一個或多個列中的數據記錄的值、使用哈希函數計算數據記錄的哈希值(hashvalue)。圖3示出分別包含(hosting) 了兩個I級分區302和312的兩個伺服器過程304和314,但是這種簡化的表述並不是意圖進行限定。與I級數據分區相關聯的任何數量的並行伺服器過程都在當前主題的範圍內。此外,第一級分區並不需要在兩個或更多個伺服器過程之間,相反地,也可以在單一伺服器過程內被執行。圖3還示出了與主伺服器324通信的客戶端108指引數據請求和查詢以及新的數據被存儲到兩個或更多個伺服器過程304、314上的兩個或更多個I級數據分區302、312中合適的一個。在一些實施方式中,主伺服器324可以執行哈希函數的計算,以確定響應於查詢或請求指示哪個伺服器過程304、314中可以接收新的數據以及從哪裡找到新的數據的哈希值。在與當前主題的各方面相符的其它實施方式中,客戶端108可以執行主伺服器324 —個或多個上述功能,並且能夠選擇性地消除在跨越兩個或更多個並行伺服器過程304,314分配和維持數據時對分離的主伺服器324的需要。在再一個其它的實施方式中,主伺服器可以被認為是被動源(passive resource),例如,儲存能夠被一個或多個獨立主伺服器機器或者所有獨立主伺服器機器、與伺服器過程304、314、客戶端108等協同定位(co-located)的一個或多個索引伺服器呼叫的元數據或者其它數據、規則、屬性、標準等的儲存庫。此外,雖然在圖3中描繪的方法使用了哈希分區以將數據分布在並行的伺服器304、314上,並且使用了範圍分區以進一步將數據從兩個或更多個I級分區302、312分配到第二級分區中(例如,子分區),通過使用這些分區方法或者其它分區方法或者在不同次序下的其它分區方法(例如,輪循分區)的實施方式也在當前主題的範圍中。例如,範圍分區(或者其它分區方法)可以在第一級被使用,以分配數據到兩個或更多個並行伺服器過程中,哈希分區(或者與在第一級所使用的分區方法不同的一些其它分區方法)可以在第二級使用。範圍分區可以應用在具有順序性質的任何數據上(例如,郵遞編碼、日期、電話號碼、目錄頁碼、等等)。如這裡所討論的,範圍分區中的日期值的使用在某些應用中具有特殊的優勢,其中日期本身就是在資料庫的查詢中提供的查詢值。在這種情況下,查詢本身可以指派哪個2級分區需要被搜索以回復所述查詢。在再一個實施方式中,多級分區可以在單一伺服器過程或者物理伺服器內執行。以這種方式,多級分區樹形結構可以以改進的並行機制來創造數據存儲的多級子分區,其中所述改進的並行機制可以提高資料庫操作的效率,所述操作例如索引、合併、裁剪、數據檢索(data retrieval)、等等。使用哈希分區作為用於I級分區的第一分區方法,並且使用範圍分區作為用於2級分區的第二分區方法,這在啟用基於時間的分區而不需要將舊數據與新數據頻繁地合併或結合方面具有優勢。在傳統的方法中,裝載到表中的數據必須最後合併到主索引中。這樣的合併的定義典型地基於主索引的大小。通過根據時間範圍(例如,月、周、年、或者一段其它的時間)在第二級進行分區,更多最近(並且因此通常更頻繁地訪問)的數據記錄被保存在一起,而舊數據記錄則保留在不需要那麼頻繁訪問(並且因此重新索引和/或解壓縮和重新壓縮)的分區中。使用哈希分區,例如,作為用於數據伺服器過程之間的第一級分區的第一分區方法,包括記錄之間的實質改變(改變很多)的包含線項目編號或一些其它鍵值一個或多個列可以被選擇作為哈希列。哈希值可以使用哈希函數基於一個或多個列中的每一列中的數據記錄值來計算。如果多個列被使用,則哈希函數可以包括多個列中的數據記錄值的串聯。在其它實施方式中,第一分區方法可以選擇性地包括輪循分區、範圍分區、或者一些它形式的分區。能夠選擇性地包括範圍分區(或者能夠選擇性地包括哈希分區、輪循分區、或者一些其它形式的分區)的第二分區方法可以包括基於一個或多個第二列的第二分區標準的估計,其並不包括在第一分區標準的評估(evaluation)中使用的一個或多個第一列。同樣,雖然第一分區標準可以包括數據記錄的主鍵值,但是第二分區標準並不包括。在進一步的變型中,除了以上討論的I級分區和2級分區等級,還可以使用另外的分區等級(partitioning level)。例如,另外的層(layer)可以包括另外的哈希分區等級。在一些實施方式中,第三分區層可以用來替代例如用來跟蹤資料庫的改變的歷史表或資料庫中的一個或多個表。對於當前主題的各種實施方式的一種潛在應用可以包括對企業資源計劃(ERP)系統、其它商業軟體體系結構、或者其它數據密集型計算應用或軟體體系結構的資料庫需求的操控。在一些例子中,這樣的應用可以提供為在特定組織的控制下、在一個或多個處理器上運行的獨立的、定製化的軟體安裝。這種安排對於大規模組織非常有效,所述大規模組織有非常嫻熟的內部(in-house)信息技術(IT)團隊,並且對於定製商業上可用的商業軟體解決方案以便與組織專用的商業過程和功能一起工作所需要的計算硬體和諮詢服務中的進行大小相當的資本投資是可行的。圖1的示圖描繪了這樣的系統的例子。替換地或者附加地,表或者表內的範圍可以被分配給不同的資料庫分區,所述不同的資料庫分區被分配給不同的主機,例如,數據分布和/或可測量性原因。圖4示出了與包括用於可測量性原因的數據分布的實施方式相符的企業資源系統體系結構400的例子。這樣的配置可以用於大型的、定製的(on-premise)或者獨立的具有高性能需求的系統。每個數據伺服器過程402及其相關聯的數據分區404可被分配給離散主機406。主機406可以是具有一個或多個物理處理器的獨立機器,或者是在大型系統302上的虛擬機,如圖4中所示。圖4中標記為名稱伺服器412的中央組件知道系統的拓撲以及數據如何分布。在具有數據分布的系統中,名稱伺服器知道哪些表和表中的哪些分區位於哪個數據伺服器過程402上。一個或多個客戶端414(例如客戶機308)可以經由直連或經網絡416訪問名稱伺服器412。在數據分布情景中,分區可通過表方式或通過拆分表來進行。利用表方式分區,名稱伺服器基於表的當前分布(分配給每一資料庫伺服器過程402的表的數量),分配新的表給資料庫伺服器過程402。接著,用於該表的數據將僅僅駐留在資料庫伺服器過程402上。指定在多個資料庫伺服器過程402上拆分表也是可能的。基於通過應用指定的大小估計,命稱伺服器412可以選擇性地將表分區。當記錄插入到拆分的表中時,可以基於名稱伺服器信息將記錄分布給其它資料庫伺服器過程402。較小的組織也可受益於業務軟體功能的使用。然而,這樣的組織可能缺乏必要的硬體資源、IT支持、和/或利用獨立業務軟體軟體體系結構產品所需要的諮詢預算,並且在某些情況下可以通過軟體即服務(Software as a service, SaaS)配置提供更有效的服務,在軟體即服務配置中,業務軟體系統體系結構被託管(hosted on)在諸如伺服器和數據儲存庫的計算硬體上,所述伺服器和數據儲存庫被保持在遠離組織位置處並且由在組織處的授權用戶經由諸如網絡瀏覽器的瘦客戶機或通過網絡來訪問。在軟體遞送(delivery)配置中,被提供給多個組織中的每一個的業務軟體系統的服務被託管在專用系統上,該專用系統僅能夠訪問該組織,其中該專用系統處的軟體安裝可以以與以上描述的單獨的例子相同的方式來定製和配置,所定製的軟體安裝局部地運行於組織的硬體上。然而,為了更有效地使用SaaS供應商的計算資源並且提供重要的性能冗餘和更好的可靠性,能夠有利是在包括多個伺服器並以安全的方式維護多個承租者的全部的數據的單個系統上託管多個承租者,同時也提供為每一承租者的業務過程量身定製的定製解決方案。如圖5的系統體系結構500中所示,與當前主題的實現方案相一致的數據分區也可以用在多承租環境中。多個承租者502,每一個與另一個相隔離並且可以由多個組織中的單獨組織504中的客戶機414經由網絡416來訪問,多個承租者502可由同一主機406主控(host),主機406可以為圖5中所示的較大系統302上的虛擬機或包括一個或多個物理處理器的單獨系統。承租者502也可選地分布在多於一個的主機406上的多個資料庫伺服器過程402上。以這種方式,由於擴容的原因,表或表內的區域被分配給不同的資料庫伺服器過程402,所述不同的資料庫伺服器過程402分配給不同的主機406。可替代地,一個或多個承租者502可由單個資料庫伺服器過程402來提供服務,所述單個資料庫伺服器過程402訪問與其他承租者502隔離的各個承租者502的數據分區404 (或多個數據分區404)。為由單個軟體傳輸體系結構500所支持的多個組織中的每一個而提供商業過程的定製化,由資料庫管理系統314所存儲的該數據和數據對象,可包括如圖6所示的三種內容類型:核心軟體平臺內容602(例如,商業過程的標準定義)、系統內容604、以及承租方內容606。核心軟體平臺內容602包括地標核心功能的內容並且不可被承租方修改。系統內容604在某些例子中可由核心軟體平臺的運行時間所創建,並且可以包括存儲有與給定商業過程的特定實例相關聯的離散數據的核心數據對象,並且可以用每個承租方提供的數據進行修改。保留在這些數據對象中的數據是特定的承租方:例如,承租方組中的每個承租方502可以存儲自身存貨清冊、銷售訂單、等等。對承租方組中每個承租方502均隔離的承租方內容606包括數據對象或者對其它數據對象的擴充,所述數據對象或者擴充為了承租方組中特定承租方502被定製化以反映商業過程和數據,所述商業過程和數據對於特定的承租方而言是特定的,並且僅可被在相應的承租方的授權用戶訪問。這樣的數據對象可以包括一個鍵域(例如,存貨跟蹤中的「客戶」),也包括一個或多個主數據,商業配置信息、交易數據、或者類似的其它內容。例如,承租方內容606可以反映特定承租方的修改或者對商業過程的標準模板定義的改變,以及與各個處理步驟(例如,所生成條件表中的記錄、訪問序列、價格計算結果、其它特定承租方值、等等)相關的商業對象的特定承租方定製化。承租方組中特定承租方502的軟體平臺內容602、系統內容604、以及承租方內容606的組合可被訪問,以便根據承租方的定製和商業數據而提供商業過程定義和/或與商業過程的特定實例相關的狀態信息,從而使得承租方組中每個承租方502都可以被提供對定製化的解決方案的訪問,該解決方案中的數據只對來自承租方502中的用戶可用。此處描述的主題的一個或多個方面或特徵可以在數字電子電路、集成電路、專門設計的專用集成電路(ASIC)、現場可編程門陣列(FPGA)計算硬體、固件、軟體和/或其組合中實現。這些不同的方面或特點可以包括在包含至少一個可編程處理器的可編程系統上可執行和/或可解釋的一個或多個電腦程式中的實現,可編程處理器可以是專用的或通用的,耦接到存儲系統、至少一個輸入設備以及至少一個輸出設備以從其中接收數據和指令並向其發送數據和指令。客戶機和伺服器一般是互相遠離的且通常通過通信網絡進行交互。客戶機和伺服器之間的關係由運行在各自計算機上的並具有客戶機-伺服器相互關係的電腦程式虛擬產生。這些電腦程式,其還可以被稱為程序、軟體、軟體應用程式、應用程式、組件、或代碼,包括可編程處理器的機器指令,並且可以用高級程序和/或面向對象的程式語言,和/或彙編/機器語言來實現。如此處使用的,術語「機器可讀介質」是指用於向可編程處理器提供機器指令和/或數據的任何電腦程式產品、裝置和/或設備,比如磁碟、光碟、存儲器和/或可編程邏輯器件(PLD),包括接收機器指令作為機器可讀信號的機器可讀介質。術語「機器可讀信號」指任何用於提供機器指令和/或數據給可編程處理器的信號。機器可讀介質可以非暫時性地存儲這種機器指令,比如作為非暫時性的固態存儲器或磁硬碟驅動器或任何其它等效的存儲介質。機器可讀介質可以可選地或另外地以暫時的方式存儲這種機器指令,比如作為處理器高速緩存或其它與一個或多個物理處理器核心相關聯的隨機存取存儲器。為提供與用戶的交互,此處描述的主題的一個或多個方面或特徵可以在計算機上實現,該計算機具有諸如用於向用戶顯示信息的陰極射線管(CRT)或液晶顯示器(LCD)或光發射二極體(LED)監視器的顯示設備和用戶用來向計算機提供輸入的鍵盤以及諸如滑鼠或軌跡球的指示設備。其它種類的設備也可以用於提供和用戶的交互。例如,提供到用戶的反饋可以是任何形式的感測反饋,比如視覺反饋、聽覺反饋或觸覺反饋;並且來自用戶的輸入可以以任何形式接收,包括但不限於,聲音、語音或觸覺輸入。其它可能的輸入設備包括但不限於,觸控螢幕或其它諸如單一或多點電阻或電容軌跡板、語音識別硬體和軟體、光學掃描儀、光學指示器、數字圖像捕獲設備及相關聯的解譯軟體等等。此處描述的主題可以基於想要的配置而體現為系統、裝置、方法和/或物品。在前面的說明中提出的實施方式不代表與此處描述的主題一致的所有實施方式。相反,它們僅僅是與所描述主題一致的一些例子。儘管上面已經詳細描述了一些變化形式,但是可能做出其它的修改或添加。特別是,可以在此處提出的這些內容之外提供進一步的特徵和/或變化。例如,上述實施方式可以指導出所公開的特徵的各種組合和子組合和/或上述公開的一些進一步的特徵的組合和子組合。另外,附圖中示出的和/或本文描述的邏輯流程並不必然要求所顯示的特定順序或連續順序以獲得想要的結果。其它實施方式也在權利要求書的範圍之內。
權利要求
1.一種包括存儲指令的機器可讀介質的電腦程式產品,當所述指令由至少一個可編程處理器執行時,使得所述至少一個可編程處理器執行下列操作,包括: 應用估計算法以生成代表資料庫表的列中的數據的唯一性度量,所述列被跨越多個數據分區來劃分; 通過比較所述唯一性度量與閾值,將所述列分類為有類別的或無類別的; 將第一估計因子和第二估計因子之一分配給所述列,如果所述列被分類為有類別的,則所述分配包括第一估計因子,如果所述列被分類為無類別的,則所述分配包括第二估計因子,第二估計因子大於第一估計因子; 計算對在所述資料庫表執行資料庫操作所需的系統資源的成本估計,所述成本估計包括使用分配的第一估計因子或第二估計因子以及作為估計函數的輸入的所述表中的行數而確定的、跨越所述多個數據分區中所有分區的所述列中的不同值的估計的總數;並且改進所述成本估計。
2.如權利要求1所述的電腦程式產品,其中,改進所述成本估計包括使用在開發至少部分操作計劃中的成本估計,用於執行涉及按照最優次序的資料庫表的至少一個列和其它列的一個或多個資料庫操作,經由與計算系統或設備相關聯的顯示設備顯示成本估計,發送包含成本估計的電子消息給用戶或者另一個機器,並且生成包括成本估計的報告。
3.如權利要求2所述的電腦程式產品,其中,所述一個或多個資料庫操作包含聯接。
4.如權利要求1所述的電腦程式產品,其中,所述估計算法包括: 選擇多個數據分區中的一個數據分區; 查詢所選擇的數據分區的字典有關在所選擇的數據分區中的所述列中唯一值的總數,所述字典包括在所選擇的 數據分區中的所述列的唯一值的列表; 計算唯一值的總數與所選擇的數據分區中包含的所述列的行數的比值; 假定所述比值代表了多個數據分區中所有其它數據分區中的唯一值的分布;以及 返回所計算的比值作為唯一性度量。
5.如權利要求1所述的電腦程式產品,其中,所述估計算法包括: 查詢字典有關多個數據分區的兩個或更多個數據分區中的每一個數據分區,所述字典包括所述兩個或更多個數據分區中的每一個數據分區中的所述列的唯一值的列表,所述查詢包括請求隨機採樣,所述隨機採樣包括有關所述兩個或更多個數據分區中的每一個數據分區的所述列中的預設數量的唯一值; 比較有關兩個或更多個數據分區中的每一個數據分區的從字典返回的所述隨機採樣;以及 返回所述唯一性度量作為隨機採樣之間的相異程度。
6.如權利要求1所述的電腦程式產品,其中,所述估計算法包括: 請求來自多個數據分區的一個或多個所選擇的數據分區中的每一個數據分區的字典返回具有相同的特定大小的各自的Bloom過濾器,每一個字典包括其各自的數據分區中的所述列的唯一值的列表;以及 基於從所述一個或多個所選擇的數據分區中返回的Bloom過濾器被填充的程度來返回所述唯一性度量。
7.一種系統,包括:至少一個可編程的處理器;以及 存儲指令的機器可讀介質,所述指令在由至少一個處理器運行時,使得至少一個可編程處理器執行以下操作,包括: 應用估計算法以生成代表資料庫表的列中的數據的唯一性度量,所述列被跨越多個數據分區來劃分; 通過比較所述唯一性度量與閾值,將所述列分類為有類別的或無類別的; 將第一估計因子和第二估計因子之一分配給所述列,如果所述列被分類為有類別的,則所述分配包括第一估計因子,如果所述列被分類為無類別的,則所述分配包括第二估計因子,第二 估計因子大於第一估計因子; 計算對在所述資料庫表執行資料庫操作所需的系統資源的成本估計,所述成本估計包括使用分配的第一估計因子或第二估計因子以及作為估計函數的輸入的所述表中的行數而確定的、跨越所述多個數據分區中所有分區的所述列中的不同值的估計的總數;並且改進所述成本估計。
8.如權利要求7所述的系統,其中,改進所述成本估計包括使用在開發至少部分操作計劃中的成本估計,用於執行涉及按照最優次序的資料庫表的至少一個列和其它列的一個或多個資料庫操作,經由與計算系統或設備相關聯的顯示設備顯示成本估計,發送包含成本估計的電子消息給用戶或者另一個機器,並且生成包括成本估計的報告。
9.如權利要求8所述的系統,其中,所述一個或多個資料庫操作包含聯接。
10.如權利要求7所述的系統,其中,所述估計算法包括: 選擇多個數據分區中的一個數據分區; 查詢所選擇的數據分區的字典有關在所選擇的數據分區中的所述列中唯一值的總數,所述字典包括在所選擇的數據分區中的所述列的唯一值的列表; 計算唯一值的總數與所選擇的數據分區中包含的所述列的行數的比值; 假定所述比值代表了多個數據分區中所有其它數據分區中的唯一值的分布;以及 返回所計算的比值作為唯一性度量。
11.如權利要求7所述的系統,其中,所述估計算法包括: 查詢字典有關多個數據分區的兩個或更多個數據分區中的每一個數據分區,所述字典包括所述兩個或更多個數據分區中的每一個數據分區中的所述列的唯一值的列表,所述查詢包括請求隨機採樣,所述隨機採樣包括有關所述兩個或各個多個數據分區中的每一個數據分區的所述列中的預設數量的唯一值; 比較有關兩個或更多個數據分區中的每一個數據分區的從字典返回的所述隨機採樣;以及 返回所述唯一性度量作為隨機採樣之間的相異程度。
12.如權利要求7所述的系統,其中,所述估計算法包括: 請求來自多個數據分區的一個或多個所選擇的數據分區中的每一個數據分區的字典返回具有相同的特定大小的各自的Bloom過濾器,每一個字典包括其各自的數據分區中的所述列的唯一值的列表;以及 基於從所述一個或多個所選擇的數據分區中返回的Bloom過濾器被填充的程度來返回所述唯一性度量。
13.—種計算機實現的方法,包括: 應用估計算法以生成代表資料庫表的列中的數據的唯一性度量,所述列被跨越多個數據分區來劃分; 通過比較所述唯一性度量與閾值,將所述列分類為有類別的或無類別的; 將第一估計因子和第二估計因子之一分配給所述列,如果所述列被分類為有類別的,則所述分配包括第一估計 因子,如果所述列被分類為無類別的,則所述分配包括第二估計因子,第二估計因子大於第一估計因子; 計算對在所述資料庫表執行資料庫操作所需的系統資源的成本估計,所述成本估計包括使用分配的第一估計因子或第二估計因子以及作為估計函數的輸入的所述表中的行數而確定的、跨越所述多個數據分區中所有分區的所述列中的不同值的估計的總數;並且改進所述成本估計。
14.如權利要求13所述的計算機實現的方法,其中,改進所述成本估計包括使用在開發至少部分操作計劃中的成本估計,用於執行涉及按照最優次序的資料庫表的至少一個列和其它列的一個或多個資料庫操作,經由與計算系統或設備相關聯的顯示設備顯示成本估計,發送包含成本估計的電子消息給用戶或者另一個機器,並且生成包括成本估計的報告。
15.如權利要求14所述的計算機實現的方法,其中,所述一個或多個資料庫操作包含聯接。
16.如權利要求13所述的計算機實現的方法,其中,所述估計算法包括: 選擇多個數據分區中的一個數據分區; 查詢所選擇的數據分區的字典有關在所選擇的數據分區中的所述列中唯一值的總數,所述字典包括在所選擇的數據分區中的所述列的唯一值的列表; 計算唯一值的總數與所選擇的數據分區中包含的所述列的行數的比值; 假定所述比值代表了多個數據分區中所有其它數據分區中的唯一值的分布;以及 返回所計算的比值作為唯一性度量。
17.如權利要求13所述的計算機實現的方法,其中,所述估計算法包括: 查詢字典有關多個數據分區的兩個或更多個數據分區中的每一個數據分區,所述字典包括所述兩個或更多個數據分區中的每一個數據分區中的所述列的唯一值的列表,所述查詢包括請求隨機採樣,所述隨機採樣包括有關所述兩個或更多個數據分區中的每一個數據分區的所述列中的預設數量的唯一值; 比較有關兩個或更多個數據分區中的每一個數據分區的從字典返回的所述隨機採樣;以及 返回所述唯一性度量作為隨機採樣之間的相異程度。
18.如權利要求13所述的計算機實現的方法,其中,所述估計算法包括: 請求來自多個數據分區的一個或多個所選擇的數據分區中的每一個數據分區的字典返回具有相同的特定大小的各自的Bloom過濾器,每一個字典包括其各自的數據分區中的所述列的唯一值的列表;以及 基於從所述一個或多個所選擇的數據分區中返回的Bloom過濾器被填充的程度來返回所述唯一性度量。
19.如權利要求13所述的計算機實現的方法,其中,所述應用、計算、分配、計算、以及改進中的至少一個是由至少 一個可編程處理器執行的。
全文摘要
一種估計算法可以生成代表資料庫表列中數據的唯一性度量,所述列被跨越多個數據分區來劃分。如果唯一性度量低於閾值,則所述列能夠被分類為有類別的,如果唯一性度量高於閾值,則所述列能夠被分類為無類別的。如果所述列被分類為有類別的,則第一估計因子被分配到所述列,如果所述列被分類為無類別的,則更大的第二估計因子被分配到所述列。計算對在資料庫表執行資料庫操作所需的系統資源的成本估計。成本估計包括使用分配的第一估計因子或第二估計因子以及作為估計函數的輸入的所述表中的行數而確定的、跨越所述多個數據分區中所有分區的所述列中的不同值的估計的總數。
文檔編號G06F17/30GK103177061SQ20121044505
公開日2013年6月26日 申請日期2012年9月28日 優先權日2011年12月23日
發明者L·弗裡克, S·Y·黃 申請人:Sap股份公司