Ce projet contient le prototype du système de base de données décrit dans
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
Ce code est un travail en cours.
Il existe plusieurs options de construction. MODE
est une variable importante régissant le type de construction. La valeur par défaut est MODE=perf
, consultez le Makefile pour plus d'options. DEBUG=1
déclenche une build de débogage (désactivée par défaut). CHECK_INVARIANTS=1
active la vérification invariante. Il existe deux cibles : la cible par défaut qui construit la suite de tests et dbtest
qui construit la suite de benchmarks. Exemples :
MODE=perf DEBUG=1 CHECK_INVARIANTS=1 make -j MODE=perf make -j dbtest
Chaque combinaison différente de MODE
, DEBUG
et CHECK_INVARIANTS
déclenche un répertoire de sortie unique ; par exemple, la première commande ci-dessus génère out-perf.debug.check.masstree
.
Silo utilise désormais Masstree par défaut comme arborescence d'index par défaut. Pour utiliser l'ancien arbre, définissez MASSTREE=0
.
Pour exécuter les tests, appelez simplement <outdir>/test
sans argument. Pour exécuter la suite de benchmarks, appelez <outdir>/benchmarks/dbtest
. Pour l'instant, consultez benchmarks/dbtest.cc
pour obtenir de la documentation sur les arguments de ligne de commande. Un exemple d'appel pour TPC-C est :
<outdir>/benchmarks/dbtest --verbose --bench tpcc --num-threads 28 --scale-factor 28 --runtime 30 --numa-memory 112G
Pour reproduire les graphiques de l’article :
$ cd benchmarks $ python runner.py /unused-dir <results-file-prefix>
Si vous définissez DRYRUN=True
dans runner.py
, vous verrez alors toutes les commandes qui seraient émises par le script de référence.