يحتوي هذا المشروع على النموذج الأولي لنظام قاعدة البيانات الموضح في
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
، فستتمكن من رؤية جميع الأوامر التي سيتم إصدارها بواسطة البرنامج النصي المعياري.