Этот проект содержит прототип системы базы данных, описанной в
Speedy Transactions in Multicore In-Memory Databases Stephen Tu, Wenting Zheng, Eddie Kohler, Barbara Liskov, Samuel Madden SOSP 2013. http://people.csail.mit.edu/stephentu/papers/silo.pdf
Этот код находится в стадии разработки.
Есть несколько вариантов сборки. MODE
— важная переменная, определяющая тип сборки. По умолчанию используется MODE=perf
, дополнительные параметры см. в Makefile. DEBUG=1
запускает отладочную сборку (по умолчанию отключено). CHECK_INVARIANTS=1
включает инвариантную проверку. Существует две цели: цель по умолчанию, которая создает набор тестов, и dbtest
, которая создает набор тестов. Примеры:
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j MODE=perf make -j dbtest
Каждая другая комбинация MODE
, DEBUG
и CHECK_INVARIANTS
запускает уникальный выходной каталог; например, первая команда выше преобразуется в out-perf.debug.check.masstree
.
Silo теперь по умолчанию использует Masstree в качестве индексного дерева по умолчанию. Чтобы использовать старое дерево, установите MASSTREE=0
.
Чтобы запустить тесты, просто вызовите <outdir>/test
без аргументов. Чтобы запустить набор тестов, вызовите <outdir>/benchmarks/dbtest
. А пока посмотрите в benchmarks/dbtest.cc
документацию по аргументам командной строки. Пример вызова TPC-C:
<outdir>/benchmarks/dbtest --verbose --bench tpcc --num-threads 28 --scale-factor 28 --runtime 30 --numa-memory 112G
Чтобы воспроизвести графики из статьи:
$ cd benchmarks $ python runner.py /unused-dir <results-file-prefix>
Если вы установите DRYRUN=True
в runner.py
, вы сможете увидеть все команды, которые будут выполняться сценарием тестирования.