Git Product home page Git Product logo

extendibleradixtree's Introduction

ERT

Extendible Radix Tree (ERT), an efficient indexing structure for PM that significantly reduces tree heights to minimize random reads, while still maintaining fast in-node search speed. The key idea is to use extendible hashing for each node in a radix tree.

This repository contains the source codes of Extendible Radix Tree. The implementation includes Extendible Radix Tree, a random number generator for generating test data, and a simple memory manager as well as all other state-of-the-art works evaluated in the paper.

Specifically, the fastalloc memory manager supports allocating memory in DRAM and space allocation in PM. The extendible_radix_tree contains the source codes of ERT. We also provide the source codes of FAST&FAIR, LB+Trees, WORT, WOART, and ROART. To generate the graphs in the paper, we provide the scripts in the Figure part.

Dependence

The evaluation requires the following hardware and software components to function properly:

Hardware

  1. Intel® Xeon® Platinum Processors
  2. Intel Optane DCPMM

Software

  1. Linux 4.15 and above
  2. C++17
  3. CMake
  4. Python 3.8

To set up the Optane DCPMM, please refer to the document. Note that Optane DCPMM should be mapped to a pre-defined address space through a DAX file system.

To facilitate the evaluation, we set up the evaluation environment on an Internet-accessible machine. The login credentials will be provided upon requests.

Build and Run

By default, all the memory are allocated on DRAM. If you want to test it on persistent memory, please specify the PM file in the command line. We provide scripts to evaluate in one-button. You can also build and run the benchmark manually.

Evaluate in one-button

sh run.sh

Build the benchmark

You can build the benchmark with the following command lines. In this benchmark, we evaluate insert and point query performance on synthetic data sets.

cmake .
make

Reproduce the results

To run the experiment, please specify the following parameters:

keyNum: the num of keys in the synthetic dataset

OptanePath: Optane DCPMM path where the memory will be allocated, by default, it will be allocated on DRAM.

./nvmkv <keyNum> <OptanePath>

For example:

// allocate memory on DRAM
./nvmkv 10000000

// allocate memory on PM
./nvmkv 10000000 /mnt/aep1/test

The results will be written into ./Result/insert.csv and ./Result/query.csv respectively.

Plot the figures

We provide the scripts to plot the insert and point query figures, corresponding to Figure 10 in the paper.

cd Figure
pip3 install -r requirements.txt
python3 plot_insert.py
python3 plot_query.py

Contacts

Points of contacts for artifacts evaluation:

Reference

If you use this code in your research, please kindly cite the following paper.

Ke Wang, Guanqun Yang, Yiwei Li, Huanchen Zhang, and Mingyu Gao. When Tree Meets Hash: Reducing Random Reads for Index Structures on Persistent Memories. Proc. ACM Manag. Data, Vol 1, No 1, Article 105 (SIGMOD). 2023.

extendibleradixtree's People

Contributors

skyelves avatar extendibleradixtree avatar greatpep avatar gaomy3832 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.