لقد أتقنت غيت لاب (GitLab) الحفاظ على قواعد بياناتها الضخمة تعمل على مدار الساعة، حتى أثناء التغييرات الهيكلية المعقدة، وذلك باستخدام إدارة ذكية للأقفال ومهل زمنية صارمة. هذا يعني أن المستخدمين نادراً ما يواجهون أي توقف للخدمة عند تحديث قواعد البيانات.
هل تساءلت يوماً كيف تقوم شركات التكنولوجيا الكبرى بتحديث قواعد بياناتها الضخمة دون أن يتوقف كل شيء؟ لقد اكتشفت غيت لاب (GitLab) السر، ونهجها في ترحيل قواعد البيانات دون توقف يقدم دروساً قيمة لنا جميعاً. ما يعنيه هذا بالنسبة لك هو تجارب أفضل عبر الإنترنت، حيث تتجنب خدمات مثل غيت لاب تلك الشاشات المزعجة 'قيد الصيانة' أثناء التحديثات الهامة.
عندما تتعامل قاعدة بيانات مثل التي لدى غيت لاب مع مليارات الصفوف وآلاف المعاملات في الثانية الواحدة، حتى التغيير البسيط، مثل إضافة عمود جديد، يمكن أن يصبح مشكلة ضخمة. عادة، تتضمن مثل هذه التغييرات ما يسمى بقفل 'ACCESS EXCLUSIVE'، والذي يوقف جميع عمليات القراءة والكتابة على جزء قاعدة البيانات هذا. في قاعدة بيانات اختبار صغيرة، هذا جيد – ينتهي في أجزاء من الثانية. لكن على نظام إنتاج عملاق، يمكن لهذا القفل أن يتسبب بسرعة في تراكم المعاملات، واستنزاف الاتصالات، وفي النهاية انهيار تطبيقك.
السر وراء نجاح غيت لاب يكمن في فهم عميق لكيفية عمل الأقفال في PostgreSQL. إنهم يعرفون بالضبط العمليات التي تمنع بعضها البعض. على سبيل المثال، بينما لا تمنع عمليات 'SELECT' أو 'UPDATE' القياسية الكثير، فإن أمر 'ALTER TABLE' بقفله 'ACCESS EXCLUSIVE' سيوقف كل شيء في مساره. لقد تعلموا أيضاً أن عبارة 'ALTER TABLE' السريعة التي تستغرق 2 ميلي ثانية فقط يمكن أن تسبب الفوضى إذا علقت خلف استعلام طويل الأمد. أثناء انتظارها، تُحظر كل استعلامات جديدة تحاول الوصول إلى قاعدة البيانات بعدها، وقبل أن تعرف، قد ينفد خادم تطبيقك بالكامل من اتصالات قاعدة البيانات.
لمنع هذا، لا تسمح غيت لاب للترحيلات بالانتظار إلى أجل غير مسمى للحصول على الأقفال. بدلاً من ذلك، يقومون بتطبيق مهل زمنية صارمة للأقفال – قصيرة تصل إلى 500 ميلي ثانية – ويقومون ببناء حلقات إعادة محاولة في عملية الترحيل الخاصة بهم. هذا يعني أنه إذا لم تتمكن عملية الترحيل من الحصول على القفل بسرعة، فإنها تتوقف مؤقتاً وتحاول مرة أخرى لاحقاً، بدلاً من تعطيل النظام بأكمله. من خلال تطبيق هذه الأنماط التي أُثبتت فعاليتها، تضمن غيت لاب أن تتم تغييرات قاعدة البيانات الأساسية دون مقاطعة خدمتك، مما يضع معياراً عالياً للاستقرار على مستوى الشركات.
عندما تتعامل قاعدة بيانات مثل التي لدى غيت لاب مع مليارات الصفوف وآلاف المعاملات في الثانية الواحدة، حتى التغيير البسيط، مثل إضافة عمود جديد، يمكن أن يصبح مشكلة ضخمة. عادة، تتضمن مثل هذه التغييرات ما يسمى بقفل 'ACCESS EXCLUSIVE'، والذي يوقف جميع عمليات القراءة والكتابة على جزء قاعدة البيانات هذا. في قاعدة بيانات اختبار صغيرة، هذا جيد – ينتهي في أجزاء من الثانية. لكن على نظام إنتاج عملاق، يمكن لهذا القفل أن يتسبب بسرعة في تراكم المعاملات، واستنزاف الاتصالات، وفي النهاية انهيار تطبيقك.
السر وراء نجاح غيت لاب يكمن في فهم عميق لكيفية عمل الأقفال في PostgreSQL. إنهم يعرفون بالضبط العمليات التي تمنع بعضها البعض. على سبيل المثال، بينما لا تمنع عمليات 'SELECT' أو 'UPDATE' القياسية الكثير، فإن أمر 'ALTER TABLE' بقفله 'ACCESS EXCLUSIVE' سيوقف كل شيء في مساره. لقد تعلموا أيضاً أن عبارة 'ALTER TABLE' السريعة التي تستغرق 2 ميلي ثانية فقط يمكن أن تسبب الفوضى إذا علقت خلف استعلام طويل الأمد. أثناء انتظارها، تُحظر كل استعلامات جديدة تحاول الوصول إلى قاعدة البيانات بعدها، وقبل أن تعرف، قد ينفد خادم تطبيقك بالكامل من اتصالات قاعدة البيانات.
لمنع هذا، لا تسمح غيت لاب للترحيلات بالانتظار إلى أجل غير مسمى للحصول على الأقفال. بدلاً من ذلك، يقومون بتطبيق مهل زمنية صارمة للأقفال – قصيرة تصل إلى 500 ميلي ثانية – ويقومون ببناء حلقات إعادة محاولة في عملية الترحيل الخاصة بهم. هذا يعني أنه إذا لم تتمكن عملية الترحيل من الحصول على القفل بسرعة، فإنها تتوقف مؤقتاً وتحاول مرة أخرى لاحقاً، بدلاً من تعطيل النظام بأكمله. من خلال تطبيق هذه الأنماط التي أُثبتت فعاليتها، تضمن غيت لاب أن تتم تغييرات قاعدة البيانات الأساسية دون مقاطعة خدمتك، مما يضع معياراً عالياً للاستقرار على مستوى الشركات.