أكثر الأعطال إيلاماً هي تلك التي لا تفشل. يغيّر نظام مصدر نوع عمود من عدد صحيح إلى نص، فيتوقف ربط عن مطابقة نسبة صغيرة من الصفوف، وتبقى كل عمليات التشغيل خضراء بينما تنحرف الأرقام.
لماذا لا تكشفه الاختبارات
تفحص اختبارات dbt ما خطر لك أن تفحصه: خلوّ العمود من القيم الفارغة (not null)، والتفرّد (unique)، والقيم المقبولة (accepted values)، والعلاقات (relationships). أما انحراف المخطط فيميل إلى التسلل من بينها. فتغيير النوع لا يجعل العمود فارغاً. والعمود المحذوف الذي لم تستعلم عنه قط لا يعطّل شيئاً حتى يحتاجه أحد. وقيمة التعداد (enum) الجديدة تمرّ إن لم يكتب أحد اختباراً للقيم المقبولة.
ما الذي ينبغي مراقبته بدلاً من ذلك
- أسماء الأعمدة وأنواعها في كل مصدر، مع مقارنتها من تشغيل إلى آخر.
- أعداد الصفوف في كل نموذج مقارنةً بنمطها المعتاد، لا برقم ثابت.
- نسب التطابق في عمليات الربط المهمة، مثل ربط الطلبات بالعملاء.
لا يحتاج أي من هذا إلى قراءة بياناتك. فمخطط المعلومات (information schema) ونتائج التشغيل يكفيان للأوّلين، واستعلام عدّ واحد يتكفّل بالثالث.
إذا انخفض عدد الصفوف بنسبة 2% وبقي كذلك، فهذا ليس ضجيجاً، بل ربط توقّف عن المطابقة.
مثال حقيقي
أحد عملائنا مزوّد لخدمات تبريد المناطق، وقد غيّر مورّد العدادات لديه معرّف القراءة من عدد صحيح إلى نص. فأسقط ربط داخلي (inner join) بصمت نحو 2% من القراءات طوال ثلاثة أسابيع. ورصدت فحوص الحجم هذا التغيّر المفاجئ في اليوم الأول، وكان الإصلاح تحويلاً للنوع (cast) في سطر واحد، إضافة إلى اختبار لعدد الصفوف.
إن كان عليك أن تفعل شيئاً واحداً بعد قراءة هذا، فأضف فحصاً لعدد الصفوف إلى النماذج الثلاثة التي يقرؤها فريق المالية أولاً. إنه أرخص تأمين في هندسة البيانات.