System.ArgumentOutOfRangeException: 索引和長度必須引用該字符串內的位置。 參數名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind()
【技術實現步驟摘要】
本專利技術涉及鍵值存儲與哈希索引,具體涉及一種基于分離式內存的寫優化哈希索引構建方法及系統。
技術介紹
1、哈希索引,又稱散列索引,由于其常數級別的查找時間復雜度而被廣泛應用于成為了數據密集型應用的基石,如內存數據庫,鍵值存儲系統等,以提供快速的響應。對于任意給定的關鍵字,哈希索引根據關鍵字經過散列函數的映射來決定存放鍵值對的位置。當需要進行搜索請求時,哈希索引將關鍵字代入散列函數后得到包含該關鍵字的記錄在表中的地址,通過該地址訪問獲得關鍵字對應的值。
2、傳統的數據中心由多個單片服務器組成,每個服務器都配備有cpu和內存。這種體系結構將計算和存儲資源緊密結合,使得數據中心承受資源利用不足,低可擴展性以及總成本高昂的問題。分離式內存將計算和存儲資源解耦到一個計算池和一個獨立管理和擴展的內存池中。計算池包括許多cpu刀片和少量內存空間,用于緩存部分應用數據,而內存池具有許多內存刀片和輕微的計算能力。計算池可以通過rdma網卡直接與內存池通信,以實現高訪問帶寬和低延遲。現有哈希索引研究成果主要可分為兩類:(1)基于層級的哈希索引(level,clevel);(2)可擴展哈希索引(cceh,dash,race)。現有基于分離式內存的哈希索引工作主要聚焦于基于單邊rdma操作哈希索引(race)。觀察發現,現有研究成果在設計鍵值存儲系統時,考慮了分離式內存節點計算能力弱、rdma網絡帶寬高、延遲低等普遍特性,但忽略分裂帶來的性能影響,忽略了緩存設計帶來的高昂的同步開銷導致寫性能表現不佳,導致寫性能表現不佳有如下兩個原因:(1
技術實現思路
1、本專利技術的目的在于針對現有技術中的缺陷和不足,提出一種基于分離式內存的寫優化哈希索引構建方法及系統,將多層級的目錄與可擴展哈希結合,以細粒度的方式對哈希索引進行擴展與同步,同時采用預測器部件與優化分裂來降低分裂開銷,最終提升寫性能。
2、本專利技術的技術方案如下。
3、一方面,一種基于分離式內存的寫優化哈希索引構建方法,包括:
4、s101,基于分離式內存設計,在內存節點中建立包括目錄、段和桶的哈希索引結構,以及建立包括葉子項與非葉子項的目錄樹結構,并在計算節點緩存相應目錄;其中,每個桶中有預設個槽;葉子項中的目錄項指向相應的段;
5、s102,為每個槽維護相應的預測器,在分裂時通過讀取預測器中的相應位指示分裂時槽應放置的位置;
6、s103,在哈希索引引入分裂時,在內存節點中開啟一個單線程的內存爬蟲定期搜索未更新的預測器;
7、s104,當相應計算節點在分裂時成功獲取段鎖后,該計算節點通過門鈴批處理技術將修改目錄項中的多個遠端cas原語合并為一個請求進行發送;在插入與更新操作中,計算節點將讀取桶與寫入鍵值通過門鈴批處理技術合并為一個請求。
8、優選的,所述s101,具體包括:
9、s1011,在內存節點中建立一個由目錄、段和桶構成的哈希索引結構;其中,目錄中包含目錄項,每個目錄項指向相應的段,段中包含固定數目的m個桶,每個桶中有n個槽,每個槽用于存放一個指向鍵值對的指針;
10、s1012,在內存節點中建立目錄樹結構;其中,目錄樹內包含葉子項與非葉子項,葉子項與非葉子項包含相同數量的目錄項,非葉子項目錄項指向下一個葉子項,而葉子項中的目錄項指向相應的段;
11、s1013,在計算節點緩存相應目錄。
12、優選的,所述s102,具體包括:
13、s1021,在每個段內保存一個對應的預測器,預測器中包含m×n個槽,槽數與段內能夠容納鍵值對數量相等,每個預測器的槽分別對應相應段內槽,預測器槽內保存相應段槽中鍵值對的哈希值的一部分;
14、s1022,當計算節點試圖插入一個鍵值對到桶中,但該桶的鍵值對數目達到其容納的最大上限時將觸發分裂,此時計算節點將讀取該桶對應的段及段相應的預測器對段進行分裂操作;
15、s1023,在讀取待分裂段后,計算節點將分配一個新段以容納新的鍵值對;
16、s1024,計算節點按桶編號從小到大的順序掃描段內每個桶,檢測每個桶內的槽是否為空,若非空則意味著該槽存放著一個指向鍵值對的指針,根據槽的位置與桶的位置搜索預測器中對應的預測槽;
17、s1025,由于預測槽中存放鍵值對相應哈希值的信息,通過鍵值對相應哈希值的信息指示鍵值對指針分裂時存放的位置;
18、s1026,若鍵值對指針分裂時存放的位置為新桶,則將鍵值對指針暫時寫入到本地的新段,等待所有桶遍歷完畢后將新段通過一個遠端寫入請求寫入至遠端內存節點;
19、s1027,在寫入新段后,計算節點通過一個遠端比較與交換cas原語將新段相應目錄項設置為新段的地址使得新段能夠被其他計算節點發現;
20、s1028,最后計算節點將舊段內所有已被遷移至新段的鍵值對指針通過遠端比較與交換cas原語分別將其刪除。
21、優選的,所述s103,具體包括:
22、s1031,內存節點啟動一個內存爬蟲程序,內存爬蟲程序不斷掃描整個哈希表中的每個段的預測器部分;
23、s1032,當爬蟲發現預測器中的預測槽為空時,會檢查相應桶內的槽是否為空,若為空,則代表該桶內的槽尚未被占用,無需更新,若非空,則代表有客戶段已經插入至該桶槽但并未更新相應預測槽,此時爬蟲訪問桶槽中的指針所指向的位置,讀取相應的鍵值并進行計算,截取部分哈希值存放至預測槽內;
24、s1033,當計算節點已經插入桶槽但是內存爬蟲還沒有掃描至相應的桶槽時,計算節點采用基于分裂的預測器維護,當計算節點進行分裂時,發現桶槽中存在指針但是對應的預測槽中為空,則認為此時內存爬蟲還未來得及更新相應的預測槽;此時由計算節點從遠端讀取相應的鍵值對進行哈希計算并將截取的部分哈希值通過遠端比較與交換cas原語寫入至預測槽內完成預測槽更新。
25、優選的,所述s104,具體包括:
26、s1041,計算節點通過門鈴批處理技術將修改目錄項中的多個遠端cas原語合并為一個請求進行發送;
27、s1042,在插入與更新操作中,計算節點將讀取桶與寫入鍵值通過門鈴批處理技術合并為一個請求,同時將信號請求推進至讀取桶操作前,即當讀取桶操作完成時遠端將發送完成信號給計算節點,通知計算節點操作已完成。
28、另一方面,一種基本文檔來自技高網...
【技術保護點】
1.一種基于分離式內存的寫優化哈希索引構建方法,其特征在于,包括:
2.根據權利要求1所述的基于分離式內存的寫優化哈希索引構建方法,其特征在于,所述S101,具體包括:
3.根據權利要求2所述的基于分離式內存的寫優化哈希索引構建方法,其特征在于,所述S102,具體包括:
4.根據權利要求3所述的基于分離式內存的寫優化哈希索引構建方法,其特征在于,所述S103,具體包括:
5.根據權利要求4所述的基于分離式內存的寫優化哈希索引構建方法,其特征在于,所述S104,具體包括:
6.一種基于分離式內存的寫優化哈希索引構建系統,其特征在于,包括:
【技術特征摘要】
1.一種基于分離式內存的寫優化哈希索引構建方法,其特征在于,包括:
2.根據權利要求1所述的基于分離式內存的寫優化哈希索引構建方法,其特征在于,所述s101,具體包括:
3.根據權利要求2所述的基于分離式內存的寫優化哈希索引構建方法,其特征在于,所述s102,具體包括:
...
還沒有人留言評論。發表了對其他瀏覽者有用的留言會獲得科技券。