پرش به محتوای اصلی
پرش به محتوای مقاله

sqlsure: شناسایی خطاهای معنایی در SQL با بازرس قطعی و بدون توهم

·۲۱ تیر ۱۴۰۵۴ دقیقه مطالعه
بررسی‌کننده معنایی SQL: شناسایی خطاهای شمارش مضاعف، نقص جمع‌پذیری، کلیدهای اشتباه و نقض سیاست قبل از اجرای پرس‌جو
بررسی‌کننده معنایی SQL: شناسایی خطاهای شمارش مضاعف، نقص جمع‌پذیری، کلیدهای اشتباه و نقض سیاست قبل از اجرای پرس‌جو
اشتراک‌گذاری
واقعاً چه چیز جدید است؟

معکوس کردن جریان اعتبارسنجی؛ به‌جای استفاده از LLM برای بررسی LLM، یک بازرس قطعی (Deterministic) با تأخیر ۰.۱ میلی‌ثانیه جایگزین شده که خطاهای معنایی را پیش از دسترسی به داده شناسایی می‌کند.

تصور کنید یک کوئری SQL کاملاً درست اجرا شود، بدون اینکه هیچ خطایی بدهد، اما عددی را برگرداند که در سکوت، کاملاً غلط است. برای هدف قرار دادن این «قاتلان خاموش» — چنین مواردی مانند درآمدی که به‌دلیل یک Join اشتباه دوبرابر شده، میانگینی که به‌جای میانگین، جمع شده یا شناسه‌ی یک بیمار که به‌طور اتفاقی افشا شده است — ابزار sqlsure در ۱۱ ژوئیه ۲۰۲۶ منتشر شد. این بازرس معنایی متن‌باز، دقیقاً همان دسته از باگ‌هایی را شکار می‌کند که ابزارهای استاندارد Linter یا خودِ پایگاه‌داده قادر به تشخیص آن‌ها نیستند.

در حالی که امروزه مدل‌های زبانی بزرگ (LLM) اکثر کدهای SQL محیط تولید را می‌نویسند، اما وقتی نوبت به بازبینی مؤثر منطق خود می‌رسد، به‌شدت شکست می‌خورند. اکثر حفاظ‌های موجود بر معیارهای «دقت در اجرا» (Execution-accuracy) تکیه دارند؛ یعنی تنها زمانی هشدار می‌دهند که کوئری کرش کند یا مقدار نهایی غلط باشد. اما sqlsure این دروازه را به لایه معنایی منتقل می‌کند و کوئری‌ها را بر اساس حقایق اعلام‌شده — مانند تست‌های یونیک dbt یا روابط کلید اصلی/خارجی (PK/FK) — پیش از آنکه حتی یک ردیف داده لمس شود، می‌سنجد.

عملکرد قطعی و بدون توهم

به نقل از مستندات sqlsure، این موتور با استفاده از جست‌وجوی دیکشنری به‌جای فراخوانی مدل‌های زبانی، به‌صورت قطعی و در زمان خیره‌کننده ۰.۱ میلی‌ثانیه عمل می‌کند. این ساختار تضمین می‌کند که یک ورودی یکسان، همیشه یک حکم یکسان می‌گیرد. در یک حسابرسی بنچمارک روی ۲۵۶۸ کوئری خبره از مجموعه‌های BIRD و Spider (مجموعه‌های متن-به-SQL)، این ابزار ۴۵ مورد خطا را با «صفر» مورد مثبت کاذب شناسایی کرد. نکته جالب این است که ابزار توانست یک پاسخ طلایی (gold answer) در BIRD dev را که به‌دلیل یک دسته خاص از باگ‌ها، ۸ برابر غلط بود، شناسایی کند؛ موضوعی که منجر به ثبت یک نقص در شمای اصلی (Upstream) شد.

قواعد کلیدی تشخیص

این سیستم چندین دسته بحرانی از خطاها و هشدارها را رصد می‌کند:

  • FANOUT: شناسایی SUM یا COUNT مقادیر جمع‌پذیر پس از یک Join یکه‌به‌چند.
  • CHASM: هشدار در مورد دو یا چند Join که اثر Fan-out یکدیگر را چند برابر می‌کنند و باعث تورم شدید داده‌ها می‌شوند.
  • ADDITIVITY: توقف جمع زدن مقادیر غیرجمع‌پذیر مانند نرخ‌ها و میانگین‌ها.
  • SEMI_ADDITIVE: شناسایی جمع زدن موجودی‌ها یا سرشماری‌ها در ابعاد اسنپ‌شات (Snapshot dimension).
  • JOIN_KEY: شکار Joinهایی که روی ستون‌های بدون رابطه اعلام‌شده انجام می‌شوند.
  • CROSS_JOIN: هشدار برای Joinهای بدون شرط (Predicate).
  • SENSITIVE_COLUMN: سیاستی که از نمایش ستون‌های حساس حاوی اطلاعات PHI (اطلاعات سلامت Protected Health Information) یا PII (اطلاعات شناسایی شخصی) در خروجی جلوگیری می‌کند.
  • WEIGHTED_AVG: هشدار زمانی که یک میانگین (AVG) به‌دلیل Fan-out به‌صورت خاموش تغییر وزن می‌دهد.
  • UNDECLARED_JOIN: هشدار برای Joinهایی که هیچ رابطه اعلام‌شده‌ای ندارند (در اینجا عدم تایید به معنای ایمن بودن نیست).

ویژگی‌های اعتماد و امنیت

sqlsure برای محیط‌های با امنیت بالا طراحی شده و استانداردهای سخت‌گیرانه‌ای دارد:

  • آفلاین: هیچ فراخوانی شبکه‌ای ندارد و متن SQL هرگز ماشین را ترک نمی‌کند.
  • عدم دسترسی به داده: موتور فقط متن کوئری را تجزیه (Parse) می‌کند و هرگز به پایگاه‌داده متصل نمی‌شود.
  • بدون تله‌متری: طبق جزئیات ذکر شده در فایل SECURITY.md، هیچ داده‌ای جمع‌آوری نمی‌شود.
  • زنجیره تأمین: نسخه‌ها از طریق PyPI Trusted Publishing (OIDC) و بر اساس Commitهای تگ‌دار با اجرای CI عمومی منتشر می‌شوند.

مسیرهای استقرار

کاربران می‌توانند این موتور را از سه طریق اصلی یکپارچه کنند:
۱. دروازه CI: مسدود کردن Merge در صورتی که یک Pull Request باعث محاسبه دوبرابر شود (به‌عنوان مثال، اجرای دستور python -m sqlsure.cli --model model.json query.sql در صورت وجود تخلف، خروجی ۱ می‌دهد و عملیات را متوقف می‌کند).
۲. سرور MCP: یک عامل هوش مصنوعی باید پیش از اجرا از طریق «پروتکل زمینه مدل» (Model Context Protocol) از بازرسی این ابزار عبور کند (مثلاً با دستور claude mcp add sqlsure).
۳. کتابخانه: استفاده به عنوان یک SemanticGate که تولیدکننده‌هایی مانند Vanna یا WrenAI را در بر می‌گیرد، یا به عنوان یک معیار ارزیابی معنایی در جایی که معیارهای دقت در اجرا، نابینا هستند.

منابع دفترچه قواعد (Rulebook)

برای ساخت دفترچه قواعد خود، sqlsure می‌تواند پایگاه‌های داده زنده را با استفاده از SQLite PRAGMAs یا information_schema برای Postgres و MySQL بازرسی کند. این ابزار همچنین از فایل‌های manifest.json یا schema.yml در dbt پشتیبانی می‌کند؛ جایی که تست‌های unique به «دانه» (Grain) و تست‌های Relationship به «کاردینالیتی Join» تبدیل می‌شوند. علاوه بر این، از OSI و MDL در WrenAI (برای نگاشت primaryKey به grain و cube measures به additivity) پشتیبانی می‌کند.

در طول حسابرسی بنچمارک، موتور بازرسی توانست دو کلید خارجی (Foreign Key) را که در شمای منتشرشده BIRD گم شده بود، بازیابی کند (bird-bench/mini_dev#37). این نشان می‌دهد که ابزار اغلب نقص‌های موجود در خودِ تعاریف داده‌های زیربنایی را نیز پیدا می‌کند. این موتور در ۱۶ مورد از ۱۶ تست قانون، با بازخوانی (Recall) ۱۰۰٪ و صفر درصد مثبت کاذب در بنچمارک جفت‌شده، اعتبارسنجی شده است.

این رویکرد، این فرض را که «SQL معتبر برابر است با داده‌های صحیح» تغییر می‌دهد. با تبدیل قواعد معنایی به یک محدودیت سخت، این ابزار امکان ایجاد چرخه «پیش‌نویس $ o$ بررسی $ o$ اصلاح $ o$ اجرا» را فراهم می‌کند. در آزمایش‌ها، اعمال دستورات اصلاحی ماشین‌محور این ابزار به‌صورت کلمه به کلمه، در ۱۰ مورد از ۱۰ مورد منجر به تولید کوئری صحیح شد. این کار در واقع «استدلالِ» اصلاح را از یک مدل احتمالی به یک موتور قانون‌مند و قطعی منتقل می‌کند.

گام بعدی شما

  • اگر از عامل‌های هوش مصنوعی با دسترسی خواندنی (Read-access) به انبار داده استفاده می‌کنید، فوراً حفاظ‌های فعلی خود را ارزیابی کنید. شکاف بین کوئری‌ای که «اجرا می‌شود» و کوئری‌ای که «حقیقت است»، جایی است که اکثر شکست‌های AI در محیط تولید رخ می‌دهد.
  • ابزارهای اسکن dbt-repo را بررسی کنید تا شکاف‌های موجود در لایه معنایی خود را بیابید.
  • sqlsure را در خط لوله CI/CD خود قرار دهید تا از ورود باگ‌های معنایی به محیط تولید جلوگیری کنید.

اما داستان سخت‌افزاری این تحول حتی شگفت‌انگیزتر است — به تحلیل ما درباره‌ی تراشه‌های Blackwell مراجعه کنید.

چرا این موضوع مهم است؟

این ابزار با حذف توهمات در لایه SQL، اعتماد سازمان‌ها به اتوماسیون داده‌های حساس را بازیابی می‌کند. تکیه بر قوانین قطعی به‌جای استنتاج مدل، ریسک تصمیم‌گیری بر اساس داده‌های غلط را به‌طور سیستماتیک کاهش می‌دهد.

تأثیر برای ایران

به دلیل متن‌باز بودن و عدم نیاز به APIهای خارجی، توسعه‌دهندگان ایرانی می‌توانند بدون محدودیت تحریم‌ها، از آن برای ایمن‌سازی عامل‌های SQL در پروژه‌های داخلی استفاده کنند.

·نگاه ما
تحریریه دات‌هوش

جایگزینی مدل‌های احتمالی با موتورهای قانون‌مند (Deterministic) در لایه بازبینی، پایان دوران اعتماد کورکورانه به self-correction مدل‌های زبانی است. sqlsure ثابت می‌کند که برای اعتبارسنجی منطق، نیازی به «هوش» بیشتر نیست، بلکه نیاز به «قانون» سخت‌گیرانه است. این چرخش، استقرار عامل‌های داده‌محور را از یک قمار ریسکی به یک فرآیند مهندسی قابل‌پیش‌بینی تبدیل می‌کند.

منابع

این گزارش با خط‌لولهٔ خودکار دات‌هوش از منابع معتبر جهانی تدوین و زیر نظر تحریریه منتشر شده است. روش کار ما

گفتگو

پنج‌شنبه‌های هوش‌محور

بسته‌ی هفتگی دات‌هوش

۵ خبر، ۲ ابزار، ۱ پرامپت در هر شماره. به‌زودی راه‌اندازی می‌شود — هر پنج‌شنبه صبح.

خبر کلیدی
ابزار کاربردی
پرامپت حرفه‌ای
تحلیل پژوهش
به‌زودی
زاویه‌ی ایرانی
به‌زودی
تمرین این هفته
به‌زودی

راهنماهای دات‌هوش

راهنماهای کاربردیِ دات‌هوش برای کار با هوش مصنوعی — از همین‌جا شروع کنید:

دات‌هوش

راهنمای فارسی هوش مصنوعی — با نگاه به ایران

اخبار روزانه، معرفی ابزارها و مدل‌ها، و آموزشِ کار با هوش مصنوعی؛ همیشه با این پرسش که از ایران چه چیزی کار می‌کند و چه چیزی نه.