الانتقال إلى المحتوى الرئيسي
على غرار Star Schema Benchmark (SSB)، يستند TPC-DS إلى TPC-H، لكنه اتخذ المسار المعاكس، أي زاد عدد عمليات الربط المطلوبة عبر تخزين البيانات في مخطط ندفة ثلجية معقد (24 جدولًا بدلًا من 8). توزيع البيانات غير متوازن (على سبيل المثال، التوزيع الطبيعي وتوزيع بواسون). ويتضمن 99 استعلامًا للتقارير واستعلامات مخصّصة مع استبدالات عشوائية. المراجع

توليد البيانات واستيرادها

أولاً، استنسخ مستودع 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.
آخر تعديل في ٢٥ يونيو ٢٠٢٦