على غرار Star Schema Benchmark (SSB)، يستند TPC-DS إلى TPC-H، لكنه اتخذ المسار المعاكس، أي زاد عدد عمليات الربط المطلوبة عبر تخزين البيانات في مخطط ندفة ثلجية معقد (24 جدولًا بدلًا من 8). توزيع البيانات غير متوازن (على سبيل المثال، التوزيع الطبيعي وتوزيع بواسون). ويتضمن 99 استعلامًا للتقارير واستعلامات مخصّصة مع استبدالات عشوائية.
المراجع
- The Making of TPC-DS (Nambiar)، 2006
توليد البيانات واستيرادها
أولاً، استنسخ مستودع TPC-DS ثم قم بتجميع مولِّد البيانات:
git clone https://github.com/gregrahn/tpcds-kit.git
cd tpcds-kit/tools
makeبعد ذلك، أنشئ البيانات. تُحدِّد المَعلمة -scale معامل القياس.
./dsdgen -scale 1الآن أنشئ الجداول في ClickHouse. تتوفر تعريفات الجداول في init.sql في مستودع ClickHouse.
يمكن استيراد البيانات كما يلي:
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO call_center FORMAT CSV" < call_center.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO catalog_page FORMAT CSV" < catalog_page.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO catalog_returns FORMAT CSV" < catalog_returns.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO catalog_sales FORMAT CSV" < catalog_sales.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer FORMAT CSV" < customer.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer_address FORMAT CSV" < customer_address.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO customer_demographics FORMAT CSV" < customer_demographics.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO date_dim FORMAT CSV" < date_dim.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO household_demographics FORMAT CSV" < household_demographics.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO income_band FORMAT CSV" < income_band.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO inventory FORMAT CSV" < inventory.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO item FORMAT CSV" < item.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO promotion FORMAT CSV" < promotion.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO reason FORMAT CSV" < reason.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO ship_mode FORMAT CSV" < ship_mode.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO store FORMAT CSV" < store.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO store_returns FORMAT CSV" < store_returns.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO store_sales FORMAT CSV" < store_sales.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO time_dim FORMAT CSV" < time_dim.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO warehouse FORMAT CSV" < warehouse.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_page FORMAT CSV" < web_page.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_returns FORMAT CSV" < web_returns.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_sales FORMAT CSV" < web_sales.dat
clickhouse-client --format_csv_delimiter '|' --query "INSERT INTO web_site FORMAT CSV" < web_site.datثم نفّذ الاستعلامات المُنشأة.
الاستعلامات
يمكن العثور على استعلامات TPC-DS التسعة والتسعين هنا ضمن مستودع ClickHouse.
للحصول على سلوك متوافق مع معيار SQL والنتائج المتوقعة، طبّق الإعدادات الواردة في settings.json. راجع ملف README للاطلاع على المشكلات المعروفة والملاحظات المتعلقة ببعض الاستعلامات.
صحة النتائج
تتوافق نتائج الاستعلامات مع النتائج الرسمية ما لم يُذكر خلاف ذلك. وقد توجد فروق طفيفة في الدقة، وهو ما تسمح به مواصفة TPC-DS.
معيار الأداء
يتتبّع ClickHouse أداء استعلامات TPC-DS في كل إصدار يُنشر. يمكنك الاطّلاع على أوقات تنفيذ استعلامات TPC-DS التسعة والتسعين جميعها (معامل القياس 32) في صفحة معيار إصدارات ClickHouse لمعرفة كيف تطوّر الأداء بمرور الوقت.