ICDE 2023 論文提交的源代碼:“Indexing for Near Sorted Data”
該存儲庫包含 B+tree 和 SWARE 實現的源代碼。在目前版本的程式碼中,兩種實作都是通用的,但測試這些索引資料結構的應用程式檔案僅支援整數資料類型。此外,應用程式檔案對每個條目的鍵和值使用相同的值。程式碼的未來擴充將支援更大的資料類型。
兩種資料結構在運行程式碼時都需要緩衝池分配,如果需要完全在記憶體中運行,可以將其擴展到所需的數量。緩衝池分配以區塊數給出,其中每個區塊為 4KB。例如,如果您使用 1M 區塊的分配,那麼您將為樹資料結構分配 1M*4KB = 4GB 的記憶體。
SA B+ 樹還需要執行程式時其記憶體緩衝區可以容納的條目數,以及批次載入時要維護的填充因子。每個條目都是一個鍵值對。
使用此儲存庫中的排序資料產生器:https://github.com/BU-DiSC/bods 產生攝取金鑰(可指定有效負載大小 = 0 以僅產生金鑰)。如上所述,應用程式檔案對每個條目(K,V 對)的鍵和值使用相同的值。記下產生的工作負載的路徑。
./ test_base_index < ingestion_workload_path > < output_file_name > < buffer_pool_allocation > < K > < L > < #. queries >
例如,您可以使用:
./ test_base_index createdata_1000000 - elems_100000 - K_100000 - L_1seed1632764083 . dat sample . txt 1000000 100000 100000 200000
在這裡,我們攝取 1M 個條目/密鑰的工作負載,其中 K=L=100,000。我們使用 1M 區塊的緩衝池快取並執行 200,000 個點查詢。攝取和點查詢的輸出延遲均寫入「sample.txt」。
./ test_satree < ingestion_workload_path > < output_file_name > < buffer_pool_allocation > < K > < L > < #. entries > < swareBuffer allocation > < fill factor % > < #. queries >
例如,您可以使用:
/ test_satree createdata_1000000 - elems_10 - K_10 - L_1seed1632764083 . dat swaresample . txt 1000000 10 10 1000000 10000 95 200000
在這裡,我們攝取 1M 個條目/密鑰的工作負載,其中 K=L=100,000(總條目的 10%)。我們使用 1M 區塊的緩衝池快取並執行 200,000 個點查詢。攝取和點查詢的輸出延遲均寫入「swaresample.txt」。記憶體緩衝區將容納 10,000 個條目(1M 的 1%),並且我們保持 95% 的填充因子。