PostgreSQL والبيانات
طبقات بيانات موثوقة ومحكمة التصميم، ومستودعات بيانات.
كل تطبيق هو في النهاية قاعدة بيانات لها قواعدها الخاصة. نصمم البيانات بشكل صحيح من المرة الأولى، لأن هيكل قاعدة البيانات هو الشيء الوحيد الذي يصبح تغييره مكلفًا بمجرد أن تبدأ بيانات الإنتاج في التدفق. الشاشات يُعاد تصميمها والأطر البرمجية تُستبدل، أما الجداول التي تحتها فتعيش عادةً أطول منهما، ومعها كل اختصار اتُّخذ فيها. عملنا هنا هو الطبقة التي يقوم عليها منتجك: كيف تُصاغ البيانات، وكيف تتغير دون توقف، وكيف تبقى سريعة مع نموها، وكيف تُستعاد بعد يوم سيئ، وكيف تقرؤها التقارير دون أن تبطئ على عملائك. وقاعدة البيانات تعمل في حسابك السحابي وباسمك.
كيف ننفّذ PostgreSQL والبيانات.
تصميم هيكل البيانات
كيانات وعلاقات مصممة لتكون صحيحة اليوم ومرنة غدًا.
ضبط الأداء
فهارس وخطط استعلام وتقسيم للجداول تُبقي زمن الاستجابة ثابتًا مع نمو عدد السجلات.
الترحيل والأمان
تغييرات على الهيكل دون توقف الخدمة، مع مسارات تراجع ونسخ احتياطية مختبرة.
مستودعات البيانات
مخازن تحليلية تتغذى من بيئة الإنتاج دون أن تبطئها.
عزل بيانات العملاء
مخطط مشترك أم قاعدة بيانات لكل عميل؟ قرار يُتخذ مبكرًا، مع فرض الحدود بين العملاء في طبقة البيانات نفسها بدل الاعتماد على تذكّرها في كل استعلام.
الانتقال من الجداول والأنظمة القديمة
نقل البيانات على مراحل: نسخ مطابق أولًا، ثم مقارنة بالمصدر القديم، ولا تصبح المصدر المعتمد إلا حين تتطابق الأرقام.
ما يتضمنه العمل فعلًا.
صمّم وفق العمل، لا وفق الشاشة الأولى
نموذج البيانات هو أصعب قرار يمكن التراجع عنه، لذلك نبدأ من قواعد العمل لا من أول نموذج إدخال: أي عميل يشتري بأي سعر، وما الحالات التي يمكن أن ينتقل إليها الطلب، وأي سجل يُعتمد حين تصل عمليتا كتابة في الثانية نفسها. ولكل معلومة مرجع واحد. في SG-Mart يبقى نظام Odoo المصدر المعتمد للكتالوج وقوائم الأسعار والضرائب عبر الموقع وiOS وAndroid، لأن أي نسخة مكررة تبدأ في الابتعاد عن الأصل منذ يوم وجودها.
الامتثال متطلب في هيكل البيانات
المرحلة الثانية من نظام الفوترة لدى هيئة الزكاة والضريبة والجمارك السعودية (ZATCA) تفرض أن تحمل كل فاتورة بصمة تشفيرية (hash) للفاتورة التي سبقتها، فيجب أن تُكتب الفواتير بترتيب صارم ومن جهة كتابة واحدة، وعلى قاعدة البيانات أن تفرض ذلك لا أن يأمله التطبيق. والفاتورة الإلكترونية في مصر (ETA) تتطلب ترميز كل منتج وفق GS1 أو EGS قبل أن تُعتمد الفاتورة، وهذه مهمة تنظيف بيانات قائمة بذاتها. وسجل التدقيق لا قيمة له إلا إذا استطعت إثبات أن أحدًا لم يعدّله.
غيّر الهيكل على إصدارين لا إصدار واحد
إعادة تسمية عمود في مكانه تكسر أي كود يعمل وما زال ينتظر الاسم القديم. النمط الآمن هو التوسيع ثم التقليص (expand/contract): أضف البنية الجديدة إلى جانب القديمة، واملأها على دفعات صغيرة حتى لا يبقى جدول كبير مقفلًا، ثم أطلق الكود الذي يستخدمها، واحذف العمود القديم في إصدار لاحق حين لا يقرؤه شيء. ويمكن التراجع عن كل خطوة وحدها، ولا يرى عملاؤك صفحة صيانة أبدًا.
الاستعلام الذي كان فوريًا يوم الإطلاق
في SG-Mart تحولت استعلامات كانت مقبولة عند الإطلاق إلى عنق زجاجة مع نمو الكتالوج: ما يستغرق لحظة مع 200 منتج قد يستغرق ثوانٍ مع 20,000. والأسباب المعتادة قليلة: فهرس مفقود، أو استعلام يُنفَّذ مرة لكل سجل بدل مرة لكل صفحة، أو تحميل جدول كامل حيث يكفي تقسيم النتائج إلى صفحات. نقرأ خطط الاستعلام، ونصلح أسوأ المشكلات أولًا، ونختبر على حجم البيانات الذي ستصل إليه بعد عام.
تدرّب على الاستعادة بعد خطأ بشري
تعطل الخادم ليس السبب الوحيد للاستعادة، فاليوم السيئ قد يكون بالسهولة نفسها ترحيلًا فشل أو أمر حذف نُفّذ دون شرطه. وتجربة الاستعادة المفيدة تشمل العودة إلى اللحظة التي سبقت الخطأ، واسترجاع جدول واحد أو سجلات عميل واحد دون إرجاع الجميع إلى الوراء. واتفق أولًا، بالأرقام، على حجم البيانات الذي تتحمل فقدانه ومدة التوقف المقبولة، ثم اختبر الاستعادة مقابلهما.
تقارير لا تبطئ إتمام الشراء
تقارير نهاية الشهر والطلبات الحية لا يجب أن تتنافس على قاعدة البيانات نفسها. القراءات الثقيلة مكانها نسخة قراءة متزامنة (replica) أو جداول تقارير تُحدَّث وفق جدول زمني، فلا يعطّل تصدير مالي السجلات التي يدفع عميل ثمنها الآن. والتقارير أيضًا جزء أول مناسب عند استبدال نظام قديم: فهي للقراءة فقط وقليلة الارتباط ببقية النظام. أما لوحات المؤشرات والتوقعات المبنية فوقها فهي من خدمة البيانات والتحليلات لدينا، وهذه الصفحة عن البنية التي تحتها.
نتائج، لا مجرد مخرجات.
- استعلامات تبقى سريعة عند 100 ضعف حجم بيانات اليوم
- هيكل يدعم الميزة التالية بدلًا من أن يعرقلها
- نسخ احتياطية جُرّبت استعادتها فعلًا، لا مجرد جدولتها
- تغييرات على هيكل البيانات تُطلق بينما يواصل عملاؤك استخدام المنتج
- قاعدة البيانات وبيانات الدخول إليها ونسخها الاحتياطية في حسابك السحابي
أين نفّذنا ذلك من قبل.
ما ستريد أن تسأل عنه.
لماذا PostgreSQL؟
معظم بيانات الأعمال علائقية: عملاء وطلبات وأسعار وفواتير، وPostgreSQL يتعامل معها بضمانات قوية لسلامة البيانات، وأدوات ناضجة، وعدد كبير من المهندسين الذين يعرفونه. ولكل ما يحمل بيانات الإنتاج نفضّل التقنيات المجرَّبة والموثقة جيدًا على الجديدة اللامعة. وإن كانت لديك قاعدة بيانات أخرى تتحمل عملك جيدًا، فلن ننقلك منها لمجرد النقل.
قاعدة بيانات مُدارة أم نشغّل خادمنا الخاص؟
لمعظم المنتجات: مُدارة. في المراحل الأولى نفضّل أن ندفع مقابل الاعتمادية على أن نشغّل قاعدة البيانات بأنفسنا، وننصحك بالشيء نفسه. وتكون في حسابك السحابي، في منطقة (region) تُختار وفق المكان الذي يُلزم القانون بحفظ بيانات مستخدميك فيه، لا حسب ما اختارته لوحة التحكم افتراضيًا. أما التشغيل الذاتي فيصبح منطقيًا لاحقًا، مع فريق تشغيل متخصص أو متطلب لا تلبيه أي خدمة مُدارة.
قاعدة بياناتنا بطيئة. هل نحتاج إلى إعادة بنائها؟
نادرًا. يعود البطء عادةً إلى عدد قليل من الاستعلامات، وخطة كل استعلام تكشف أين يذهب الوقت. وإصلاح أسوأها، بفهرس أو بإعادة كتابة استعلام أو بتقسيم النتائج إلى صفحات، يزيل غالبًا معظم المشكلة دون لمس هيكل البيانات. وسنخبرك بما يمكن إصلاحه بتكلفة قليلة وما هو مشكلة في البنية، قبل أن يقترح أحد إعادة البناء.
هل يمكنكم نقل بياناتنا من جداول Excel أو من نظام قديم؟
نعم، على مراحل لا في عطلة نهاية أسبوع واحدة. تبدأ الجداول الجديدة بنسخة مطابقة للمصدر القديم، وتُطابَق معه حتى تتفق الأرقام، وعندها فقط تصبح المصدر المعتمد. والجداول الحسابية نقطة بداية شائعة، فقد كانت Go-Native مثلًا تدير الموردين على Excel حتى استبدلنا ذلك بنظام مركزي واحد.
من يملك قاعدة البيانات والبيانات نفسها؟
أنت. تعمل قاعدة البيانات في حسابك السحابي، والحساب الرئيسي والفوترة بين يديك، ونعمل من خلال دور (role) تستطيع سحبه متى شئت. وبيانات الدخول تخص مؤسستك لا حساب شخص بعينه. أما هيكل البيانات وسكربتات الترحيل والتوثيق فتعيش في مستودعك، فيمكن لأي فريق آخر أن يتسلّم العمل دون أن يتصل بنا.
هل تبنون أيضًا لوحات مؤشرات ومستودع بيانات؟
نعم، ضمن خدمة البيانات والتحليلات لدينا: خطوط نقل من أنظمتك المصدرية إلى مستودع بيانات واحد منظّم، ولوحات مؤشرات فوقه. أما هذه الصفحة فتغطي الطبقة التي يعتمد عليها ذلك كله. فإذا كانت قاعدة بيانات الإنتاج سيئة التصميم، ينسخ مستودع البيانات الفوضى كما هي، ولذلك يكون إصلاح المصدر أولًا هو الترتيب الأرخص عادةً.
لنتحدث عن PostgreSQL والبيانات.
أخبرنا عن منتجك وجدولك الزمني وأهدافك، وسنرد عليك خلال يوم عمل واحد.

