ICDE 2023 논문 제출용 소스 코드: "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
여기서는 K=L=100,000인 100만 개의 항목/키로 구성된 워크로드를 수집합니다. 우리는 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
여기서는 K=L=100,000(총 항목의 10%)인 100만 개의 항목/키로 구성된 워크로드를 수집합니다. 우리는 1M 블록에 대한 버퍼 풀 캐시를 사용하고 있으며 200,000 포인트 쿼리를 실행하고 있습니다. 수집 및 포인트 쿼리 모두에 대한 출력 대기 시간은 "swaresample.txt"에 기록됩니다. 인 메모리 버퍼는 10,000개의 항목(1M의 1%)을 보유하며 채우기 비율은 95%를 유지합니다.