跳到內容

使用RDM進行索引- 何時使用哪種索引方法

當前,RDM支持4種不同類型的索引,用戶可以選擇將其與數據庫一起使用。這些類型是:B樹,R樹,哈希和AVL。每個都有自己理想的用例,下面將對其進行詳細說明,但是用戶可以自由地在自己的數據庫中嘗試每種類型並找到理想的性能。 

B樹  

RDM的默認索引方法是b樹。 b樹是一種自平衡樹結構,該結構使數據保持有序排列,以允許搜索和順序訪問。插入,刪除,更新和查找可以以對數標度完成。 b樹是磁盤數據庫的一個很好的解決方案,因為b樹節點的寬度可以使節點樹的深度小於自平衡二叉樹的深度。這樣可以減少搜索和更新樹所需的磁盤訪問量。  

RDM b樹實現是一種非聚集的外部樹,它根據索引定義中指定的列值進行排序。在b樹節點中,對於索引所源自的表中的每一行都有一個條目。節點由其對象ID標識,稱為節點對象的節點ID。這使得使用磁盤上或內存中引擎的數據庫實現更加高效。在這兩個引擎中,將通過b樹存儲在其中的抽屜的id索引查找對節點id的引用。在磁盤引擎中,id索引將包含節點的偏移量和大小。打包文件。在內存引擎中,id索引將包含一個指向該節點的指針。 RDM b樹實現使用32個項目的節點大小。但是,只有正在使用的項目才會存儲在交易文件服務器上。 RDM b樹節點永遠不會更新;而是創建一個新節點,並更新id索引以指向新節點的位置。舊節點將可在以後的事務中重用。  

磁盤上的Raima存儲數據庫

R樹(空間索引)

RDM 14.1添加了專門為地理空間數據設計的索引算法,稱為R-Tree。它是一棵平衡的搜索樹,將其數據組織到頁面中,旨在對附近的對象進行分組,然後將其表示在樹的下一級。當用戶需要在邊界框內快速檢索多維數據時,這是理想的索引類型。  R樹在現實世界中的常見用法是存儲諸如餐廳位置或典型地圖所構成的多邊形之類的空間對象:街道,建築物,湖泊輪廓,海岸線等,然後快速找到查詢答案例如“在我當前位置2公里範圍內查找所有博物館”,“在我位置2公里範圍內檢索所有路段”(以在導航系統中顯示)或“查找最近的加油站”(儘管不上路)帳戶)

R樹索引Raima數據庫管理器

雜湊  

RDM 14.1中的哈希實現使用可擴展哈希算法。可擴展的哈希算法不需要開發人員在設計時就猜測索引的基數。這對於內存存儲引擎非常重要,因為無需為可能永遠不會使用的一組存儲桶保留內存。相反,隨著散列中存儲桶數量的增加,目錄大小將增加。當前實現僅允許使用唯一鍵,並根據鍵控的列對數據進行排序(數據是基於這些列的哈希值進行組織的)。這意味著哈希可以用於查找,但不能用於順序訪問或範圍。

屏幕截圖2019-01-17 at 15.37.26

AVL  

RDM 14.1還添加了一種索引算法,專門用於稱為AVL樹的內存存儲引擎。 AVL是一種自平衡二叉樹,在RDM中是在內部而不是外部實現的。與B樹不同,AVL中沒有數據重複,因為不維護包含索引列副本的外部節點。 AVL是二叉樹,這意味著樹的深度將比B樹的深度大得多。因此,與使用壓縮行格式的基於磁盤的引擎相比,AVL索引更適合使用擴展行格式的內存中存儲引擎。打包行格式的確包含AVL索引的實現,但這主要是為了將內存中的映像持久保存到磁盤而設計的,並不打算在基於磁盤的表中普遍使用。  

AVL可用於b樹索引將用於的任何操作。 AVL支持查找,範圍,掃描以及重複或唯一約束。 SQL優化器將以與B樹相同的方式利用AVL,但基於B樹與AVL之間的實現差異,將使用略有不同的權重。  

護牆板

立即嘗試使用其他索引方法進行RDM