Dieses Projekt enthält den Prototyp des in beschriebenen Datenbanksystems
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
Dieser Code ist eine laufende Arbeit in Arbeit.
Es gibt mehrere Möglichkeiten zum Bauen. MODE
ist eine wichtige Variable, die den Build-Typ bestimmt. Der Standardwert ist MODE=perf
. Weitere Optionen finden Sie im Makefile. DEBUG=1
löst einen Debug-Build aus (standardmäßig deaktiviert). CHECK_INVARIANTS=1
ermöglicht die invariante Prüfung. Es gibt zwei Ziele: das Standardziel, das die Testsuite erstellt, und dbtest
, das die Benchmark-Suite erstellt. Beispiele:
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j MODE=perf make -j dbtest
Jede unterschiedliche Kombination von MODE
, DEBUG
und CHECK_INVARIANTS
löst ein eindeutiges Ausgabeverzeichnis aus; Der erste Befehl oben erstellt beispielsweise out-perf.debug.check.masstree
.
Silo verwendet jetzt standardmäßig Masstree als Standardindexbaum. Um den alten Baum zu verwenden, legen Sie MASSTREE=0
fest.
Um die Tests auszuführen, rufen Sie einfach <outdir>/test
ohne Argumente auf. Um die Benchmark-Suite auszuführen, rufen Sie <outdir>/benchmarks/dbtest
auf. Suchen Sie vorerst in benchmarks/dbtest.cc
nach einer Dokumentation zu den Befehlszeilenargumenten. Ein Beispielaufruf für TPC-C ist:
<outdir>/benchmarks/dbtest --verbose --bench tpcc --num-threads 28 --scale-factor 28 --runtime 30 --numa-memory 112G
So reproduzieren Sie die Grafiken aus dem Papier:
$ cd benchmarks $ python runner.py /unused-dir <results-file-prefix>
Wenn Sie in runner.py
DRYRUN=True
festlegen, werden alle Befehle angezeigt, die vom Benchmark-Skript ausgegeben würden.