有效地尋找空間得分最佳的實體的制作方法
【技術領域】
[0001]本公開一般地涉及在關系型數據庫中的空間數據的操縱,并且更具體地涉及基于空間和實體過濾標準兩者有效地尋找實體。
【背景技術】
[0002]關系型數據庫是在行和列的表格中存儲相關的數據的電子數據庫,并且允許在具有匹配字段的表格之間建立鏈接使得可以同時詢問多個表格。許多關系型數據庫采用某個版本的SQL語言,該SQL語言是適于管理數據的專用編程語言。SQL代碼可以由關系型數據庫系統來實現,所述關系型數據庫系統執行作為分離的過程并且由客戶端應用訪問。例如,SQL代碼可以由可從開源獲得的MySQL?數據庫系統、可從Oracle公司獲得的Oracle數據庫或者可從Microsoft公司獲得的Microsoft SQL Server數據庫系統執行。替代地,SQL代碼可以由通過自持的編程庫實現的關系型數據庫系統實現,所述自持的編程庫可以被集成在客戶端應用其自身之內。例如,SQL代碼可以由在公共域中可獲得的SQLite?嵌入式SQL數據庫系統來執行。
[0003]除其他使用之外,關系型數據庫還可以被利用來存儲描述在多維空間中的實體的位置、形狀和方向的空間數據。實體的位置、形狀和方向通常使用空間參考系統表示。除其他功能之外,空間參考系統還提供坐標系(例如,笛卡爾坐標系),通過其可以限定空間信息。例如,在實體上的點可由X軸、y軸和Z軸坐標限定。
[0004]存儲在關系型數據庫中的空間數據通常使用被設計成加快空間詢問的空間索引來進行索引。經常,空間索引被結構化為R樹(R-tree)。R樹是以使用邊界框(boundingbox)為前提的一種平衡樹數據結構。邊界框是多維空間的區域,所述多維空間的區域從相關實體或實體群組的最小程度跨越到相關實體或實體群組的最大程度。通常,邊界框與所采用的坐標系的軸線對齊,并且因此被稱為軸對齊的邊界框(AABB)。例如,在2D空間數據中,特定實體的邊界框可以是從實體的最小X軸坐標跨越到其最大X軸坐標并且從其最小I軸坐標跨越到其最大I軸坐標的矩形。在3D空間數據的情況下,特定實體的邊界框可以是從所述實體的最小X軸坐標跨越到其最大X軸坐標、從其最小I軸坐標跨越到其最大I軸坐標并且從其最小z軸坐標跨越到其最大z軸坐標的矩形棱柱。
[0005]在其最低級別處的R樹具有包括一個或多個單獨實體的葉節點。如果葉節點包括單個實體,則該葉節點的邊界框僅僅是該單獨實體自身的邊界框。如果葉節點包括多個實體,則該葉節點的邊界框是包圍了被包括在該葉節點中的單獨實體的所有邊界框的最小尺寸的框。在較高的級別處,R樹包括表示葉節點的群組的內部節點或者其他內部節點。每個內部節點的邊界框是包圍了該群組的所有邊界框的最小尺寸的框。在R樹的最高級別處是根節點。根節點的邊界框是包圍了由R樹進行索引的所有實體的所有邊界框的最小尺寸的框。
[0006]使用R樹的搜索一般在根節點處開始,并且通過樹的各級別向下進行。例如,如果用戶期望尋找定位于感興趣的區域(即,詢問框)內的實體,則基于該詢問框啟動搜索詢問。在根節點處,做出哪些較低級別的內部節點具有與詢問框重疊的邊界框的確定。搜索然后進行到這些較低級別的內部節點,在其處確定哪些更低級別的內部節點具有與詢問框重疊的邊界框。過程沿R樹往下繼續,通過與可能存在的級別一樣多的級別,直到最終遇到葉節點為止。相對于詢問框測試被包括在所遇到的葉節點中的單獨實體的邊界框,并且如果它們的邊界框與詢問框重疊,則將相應的實體放置到針對搜索詢問的結果集合中。
[0007]除了簡單的搜索詢問,還可以使用與包括空間數據的關系型數據庫有關的空間索引來執行各種其他類型的操作。例如,有時可期望尋找滿足空間和實體過濾標準兩者的特定數量(“X”)的“最佳”實體,其中“最佳”是基于得分確定的。一旦被找到,這樣的“X個最佳”實體可以被加載并且被用于各種目的。
[0008]雖然使用在許多關系型數據庫系統(例如,SQL數據庫系統)中提供的操作符來尋找滿足空間和實體過濾標準兩者的特定數量的“最佳”實體(“X個最佳”)是可能的,但通常這樣的操作是十分低效的。“蠻干”方法可以是:返回滿足空間標準和實體過濾標準兩者的所有實體,計算每個返回的實體的得分,根據得分對列表進行排序,并且在第一 “X”個實體之后截斷列表。在SQL中實現該蠻干方法的一種方式是經由“ORDER BY”和“UMIT”子句,與用于計算得分的用戶函數組合。應當明顯地看出,這種方式可以是非常低效的并且耗費大量的存儲器和處理資源。替代技術可以是采用迭代的“試湊法”方法。在通常的“試湊法”方法中,針對得分選擇任意的閾值。詢問被執行,其中相對于空間和實體過濾標準比較每個實體,并且相對于所述任意閾值比較其得分。其得分少于所述閾值的實體被拒絕。詢問結果將是滿足空間和實體過濾標準的某個數量(“Y”)的實體。所返回的實體的數量(“Y”)與實體的期望的數量(“X”)比較。如果返回了比所期望的數量多的實體,則以增量增加所述閾值并且重新執行詢問。可以重復該過程直到所返回的實體的數量(“Y”)少于或等于實體的期望的數量(“X”)為止。
[0009]這樣的“試湊法”方法的一般的低效率的加重(compound)在于其準確度和低效率是不可預測的。在不同的情況下可能需要不同數量的迭代。迭代的數量可以取決于開始閾值、閾值的增量以及數據本身。如果所述增量過大,則結果可能是小于“X”但相差任意數量的實體的數量“Y”。在此情況下,在結果中“錯失”了“Y-X”個實體。如果增量過小,則迭代的數量可以是不可預測地大。許多客戶端應用不佳地適于處理由迭代數量的變化產生的不可預測的性能。
[0010]相應地,存在針對解決這些缺陷和其他缺陷的改進的技術的需要。
【發明內容】
[0011 ] 在一個實施例中,滿足空間標準(例如,“視界錐(view cone),,)和實體過濾標準兩者的特定數量(“X”)的“最佳”實體被有效地找到,其中“最佳”是基于根據每個實體的邊界框與詢問框的關系計算的空間得分來確定的。
[0012]響應于指示期望的“最佳”實體的特定數量(“X”)的詢問語句,創建反向通道對象。反向通道對象維持空間標準(例如,視界錐)的指示、最近的空間得分以及包括特定數量(“X”)的“最佳”實體和它們的得分的當前的分類圖。針對在空間索引(例如,R樹)中將被考慮的每個目標(例如,節點和實體),相對于空間標準測試目標的邊界框。如果經受測試的目標的邊界框不符合空間標準(例如,不與視界錐相交),則經受測試的目標被排除在進一步考慮之外。如果目標是節點,則該節點以及從它所指向的任何較低級別的節點以及被包括在該節點以及較低級別的節點中的任何實體也可以被排除在進一步考慮之外。
[0013]如果經受測試的目標的邊界框符合空間標準(例如,與視界錐相交),則針對該目標計算空間得分。相對于在“最佳”實體的當前的分類圖中的最小得分比較該目標的空間得分。如果所述得分小于在當前的分類圖中的最小得分,并且如果所述圖當前保持了特定數量(“X”)的實體,則經受測試的目標被排除在進一步考慮之外。如果目標是節點,則該節點以及從它所指向的任何較低級別的節點以及被包括在該節點以及較低級別的節點中的任何實體也可以被排除在進一步考慮之外。
[0014]如果所述空間得分不小于在當前的分類圖中的最小得分,或者如果所述圖當前保持了小于特定數量(“X”)的實體,并且該目標是實體,則相對于實體過濾標準測試所述實體。如果所述實體符合實體過濾標準,則該實體被視為可接受。當前的分類圖被更新以存儲該實體以及其分數。如果當前的分類圖是滿的(已經保持了 “X”個實體),則丟棄在當前的分類圖中的最低得分實體來為新的實體讓出空位。
[0015]在空間索引中的所有目標(例如,節點和實體)已經被測試或者被排除在考慮之外之后,當前的分類圖保持滿足空間標準和實體過濾標準兩者的特定數量(“X”)的“最佳”實體,以它們的空間得分被排序。當前的分類圖被返回作為最終結果。
【附圖說明】
當前第1頁
1 
2 
3 
4 
5