۱ آبان ۱۴۰۵ github.com ۳ دقیقه مطالعه

حذف یک ورودی تقلبی از بنچمارک ClickBench؛ وقتی پای کدهای دستی و کش در میان است

حذف یک ورودی تقلبی از بنچمارک ClickBench؛ وقتی پای کدهای دستی و کش در میان است — Remove pgrust: the entry is cheating

خلاصه

پروژه ClickBench یک بنچمارک استاندارد برای پایگاه‌های داده تحلیلی (OLAP) است. اخیراً در یک پول ریکوئست مشخص شد که یکی از ورودی‌ها به‌جای اجرای واقعی پرس‌وجوها، از کدهای دست‌نویس و مکانیسم کش برای پاسخ‌دهی استفاده کرده است که منجر به حذف آن شد.

ماجرای حذف ورودی متخلف در ClickBench

در تاریخ بنچمارک‌های نرم‌افزاری، گاهی تلاش برای کسب رکوردهای بهتر به روش‌های نامتعارفی منجر می‌شود. در یکی از تازه‌ترین تغییرات مخزن گیت‌هاب ClickBench که توسط الکسی میلُویدوف (Alexey Milovidov) ثبت شده است، ورودی مربوط به ابزاری به نام pgrust به طور کامل حذف شد.

بررسی‌ها نشان داد که نتایج این ورودی نه توسط موتور پایگاه داده، بلکه با استفاده از کدهای دست‌نویس اختصاصی برای تک‌تک ۴۳ پرس‌وجوی استاندارد این بنچمارک تولید شده است. بییناری منتشر شده این ابزار حاوی کدهای Rust ویژه‌ای برای هر کوئری بود و در اجرای دوم به بعد، نتایج از روی کش خوانده می‌شدند؛ رفتاری که قوانین صریح بنچمارک را نقض می‌کند.

درباره ClickBench و ساختار آن

پروژه ClickBench توسط تیم ClickHouse توسعه داده شده و به عنوان یک معیار استاندارد برای ارزیابی عملکرد پایگاه‌های داده تحلیلی (OLAP) شناخته می‌شود. هدف این بنچمارک، سنجش سرعت پایگاه‌های داده در سناریوهای تحلیل ترافیک وب، لاگ‌ها و داده‌های رویداد است.

ویژگی‌های کلیدی ClickBench:

  • مجموعه داده واقعی: داده‌ها از ترافیک واقعی یک پلتفرم تحلیل وب بزرگ مشتق شده‌اند.
  • ۴۳ پرس‌وجوی استاندارد: کوئری‌هایی که اسکن کامل جدول، فیلترها، جستجوهای ایندکس و عملیات رابطه‌ای را تست می‌کنند.
  • بازتولیدپذیری آسان: اسکریپت‌های اتوماسیون به توسعه‌دهندگان اجازه می‌دهند سیستم‌های مختلف را در زمان کوتاه روی ماشین‌های ابری تست کنند.

جزئیات فنی تخلف در pgrust

بر اساس بررسی کدهای باینری و گزارش پاتچ، این ابزار به جای داشتن یک موتور اجرای عمومی (General Execution Engine) برای داده‌های ستونی، دارای ویژگی‌های زیر بود:

  • هسته‌های دست‌نویس: پکیج‌های کدهای Rust مجزا برای هر کدام از کوئری‌های بنچمارک (q00.rs تا q36.rs) وجود داشت.
  • کش نتایج گرم (Hot Run Cache): در برخی کوئری‌ها مانند Q20 و Q21، هیچ ستونی از دیتابیس لمس نمی‌شد و پاسخ‌ها از اجرای قبلی Replay می‌شدند.
  • خطاهای سخت‌گیرانه: کوئری‌هایی که خارج از الگوهای از پیش تعیین‌شده ۴۳ گانه بودند، با خطای صریح مواجه می‌شدند و موتور هیچ‌پشتیبانی از اجرای عمومی آن‌ها نداشت.

دیدگاه جامعه توسعه‌دهندگان در Hacker News

بحث‌های شکل گرفته پیرامون این موضوع در هکرنیوز ابعاد جالبی به خود گرفت. برخی کاربران با اشاره به حجم تغییرات و الگوهای کدهای تولید شده، این فرضیه را مطرح کردند که شاید این پروژه با کمک ابزارهای هوش مصنوعی و به سبک «Vibe Coding» توسعه یافته است؛ جایی که نوشتن نرم‌افزار قابل استفاده بدون درک ساختار عمیق می‌تواند به پیچیدگی‌های موضعی و راه‌حل‌های غیرمتعارف منجر شود.

در یک نگاه

  • نام پروژه: ClickHouse/ClickBench
  • موضوع: بنچمارک برای پایگاه‌های داده تحلیلی و OLAP
  • زبان اصلی: Shell و پشتیبانی از ابزارهای گوناگون
  • مجوز: فاقد مجوز صریح (NOASSERTION)
  • اهمیت: معیاری برای مقایسه عادلانه و استاندارد سرعت دیتابیس‌ها بدون تقلب و دستکاری کش

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

خبرهای فناوری در قالب پست و ویدیوی کوتاه، در اینستاگرام هکرنیوز بلاگ. به‌زودی
هر خبر به محض انتشار، به‌همراه پادکست روزانه در کانال تلگرام هکرنیوز بلاگ.