أداة safe-not-safe المجانية تفحص migrations قاعدة PostgreSQL قبل تنفيذها داخل المتصفح
القاعدة التي تمنع migration من قفل جدول ضخم معروفة، لكنها تُنسى تحت ضغط النشر، وأداة تطبقها آليًا دون أن يغادر الكود جهاز المطور تسد هذه الفجوة.
ظهرت أداة مجانية مفتوحة المصدر اسمها safe-not-safe، ووصلت إلى الصفحة الأولى في Hacker News. تستقبل الأداة ملف migration مكتوبًا بـ SQL، وتحكم على كل statement فيه بأنه آمن أو خطر قبل أن يُنفَّذ على قاعدة البيانات.
والمشكلة التي تعالجها مألوفة لمن يدير قواعد بيانات كبيرة. فعملية migration واحدة قد تقفل جدولًا فيه ملايين الصفوف، فتتوقف الكتابة إليه، ويبدأ الـ API في إرجاع أخطاء 500 بينما يحاول الفريق فهم ما حدث.
تعمل الأداة بالكامل داخل المتصفح. فهي تحلل الكود باستخدام مكتبة libpg_query مبنية بتقنية WebAssembly، ولذلك لا يغادر الـ SQL جهاز المستخدم. ويذكر موقعها أنه لا يوجد API route ولا سجلات ولا حساب.
والجانب الأذكى فيها أنها تأخذ حجم الجدول في الاعتبار، عبر ثلاث شرائح: أقل من 50 ألف صف، ومن 50 ألفًا إلى 5 ملايين، وأكثر من 5 ملايين. فالـ statement نفسه قد يكون آمنًا تمامًا على جدول صغير، وكارثيًا على جدول كبير.
ومن الأمثلة التي تعرضها: إضافة عمود بقيمة default آمنة، وإنشاء index باستخدام CONCURRENTLY آمن، والطريقة الصحيحة لإضافة foreign key هي إنشاؤه أولًا بخيار NOT VALID ثم التحقق منه بخطوة VALIDATE لاحقة.
وقيمة أداة كهذه لا تكمن في تعليم قاعدة جديدة، فأغلب هذه القواعد معروفة. قيمتها أنها تطبق القاعدة في اللحظة التي تُنسى فيها عادة، أي في آخر الليل ومع ضغط إنهاء النشر.