ซอร์สโค้ดสำหรับการส่งรายงาน ICDE 2023: "การจัดทำดัชนีสำหรับข้อมูลที่เรียงลำดับใกล้เคียง"
พื้นที่เก็บข้อมูลประกอบด้วยซอร์สโค้ดสำหรับการใช้งาน B+tree และ SWARE ในโค้ดเวอร์ชันปัจจุบัน การใช้งานทั้งสองเป็นแบบทั่วไป แต่ไฟล์แอปพลิเคชันที่ทดสอบโครงสร้างข้อมูลดัชนีเหล่านี้รองรับเฉพาะประเภทข้อมูลจำนวนเต็มเท่านั้น นอกจากนี้ ไฟล์แอปพลิเคชันยังใช้ค่าเดียวกันสำหรับทั้งคีย์และค่าของแต่ละรายการ ส่วนขยายของโค้ดในอนาคตจะรองรับประเภทข้อมูลที่ใหญ่ขึ้น
โครงสร้างข้อมูลทั้งสองจำเป็นต้องมีการจัดสรรบัฟเฟอร์พูลในขณะที่รันโค้ด ซึ่งสามารถขยายเป็นจำนวนที่ต้องการได้ หากจำเป็นเพื่อให้รันในหน่วยความจำได้อย่างสมบูรณ์ การจัดสรรบัฟเฟอร์พูลจะได้รับตามจำนวนบล็อกโดยแต่ละบล็อกมีขนาด 4KB ตัวอย่างเช่น หากคุณใช้การจัดสรรบล็อก 1M แสดงว่าคุณกำลังจัดสรรหน่วยความจำ 1M*4KB = 4GB สำหรับโครงสร้างข้อมูลแบบต้นไม้
นอกจากนี้ SA B+-tree ยังต้องการจำนวนรายการที่บัฟเฟอร์ในหน่วยความจำสามารถเก็บได้ในขณะที่รันโปรแกรม พร้อมด้วยปัจจัยการเติมที่จะรักษาไว้ขณะโหลดจำนวนมาก แต่ละรายการเป็นคู่คีย์-ค่า
ใช้ตัวสร้างข้อมูลการจัดเรียงจาก repo นี้: https://github.com/BU-DiSC/bods เพื่อสร้างคีย์การนำเข้า (สามารถระบุ payload size=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 เรากำลังใช้แคชพูลบัฟเฟอร์สำหรับบล็อก 1 ล้านบล็อก และกำลังดำเนินการค้นหา 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% ของรายการทั้งหมด) เรากำลังใช้แคชพูลบัฟเฟอร์สำหรับบล็อก 1 ล้านบล็อก และกำลังดำเนินการค้นหา 200,000 จุด เวลาแฝงของเอาต์พุตสำหรับทั้งการนำเข้าและการสืบค้นแบบจุดจะถูกเขียนไปที่ "swaresample.txt" บัฟเฟอร์ในหน่วยความจำจะเก็บได้ 10,000 รายการ (1% ของ 1M) และเราจะรักษาอัตราการเติมไว้ที่ 95%