منصة البيانات · من SQL Server إلى PostgreSQL

ترحيل SQL Server إلى PostgreSQL مع بقاء القاعدتين تعملان حتى التحويل

يبدأ ترحيل SQL Server إلى PostgreSQL عادةً بموعد تجديد التراخيص، وتحسمه الهندسة: يُطابَق الهيكل، وتُعاد كتابة شيفرة T-SQL بلغة PL/pgSQL، ويُختبر التطبيق على قاعدة تختلف في تفاصيل صغيرة. وتنفّذ إنتركي الانتقال من الرياض، ويُبقي iblync، منصتها للنسخ المتماثل، قاعدتي SQL Server وPostgreSQL على اتفاق أثناء التشغيل المتوازي، فيحدث التحويل حين تنجح الفحوص لا حين تنتهي نافذة النقل.

ترحيل SQL Server إلى PostgreSQL في لمحة

أهم ما يلزم معرفته عن ترحيل SQL Server إلى PostgreSQL مع إنتركي
السؤالالإجابة المختصرة
لماذا تنتقل الفرقغالبًا كلفة تراخيص SQL Server، وأحيانًا الانتقال إلى خدمة PostgreSQL مُدارة أو الرغبة في توحيد المحرك
ما الذي يُنقلالهيكل والبيانات وشيفرة T-SQL (الإجراءات والدوال والمشغّلات والمهام المجدولة) واستعلامات التطبيقات التي تعتمد عليها
أين يتركز الجهدعادةً في إعادة كتابة T-SQL واختبار التطبيقات، لا في نسخ البيانات
كيف يبقى التوقف قصيرًاتحميل أولي، ثم نسخ مستمر عبر iblync، ثم تشغيل متوازٍ، ثم تحويل على مراحل لها شروط عبور
أين يعمليمكن تشغيل جسر النسخ وقاعدة البيانات الهدف والأدوات على بنية داخل المملكة
التسعيرلكل مشروع بعد التقييم، وiblync بعرض سعر بحسب نظام المصدر ونظام الهدف وحجم البيانات

القرار للإدارة العليا سهل الصياغة: التوفير في التراخيص حقيقي، لكنه يُدفع مرة واحدة عملًا هندسيًا. ويضع التقييم الرقمين جنبًا إلى جنب، وقد ينتهي إلى أن البقاء على SQL Server أنسب لكم.

متى يكون ترحيل SQL Server إلى PostgreSQL قرارًا معقولًا

تبدأ معظم المشاريع التي نُسأل عنها في الإدارة المالية. فتراخيص SQL Server كلفة متكررة تكبر مع عدد الأنوية والخوادم، وPostgreSQL برنامج مفتوح المصدر بلا رسوم ترخيص.

ويكون الترحيل قرارًا سليمًا إذا تحققت ثلاثة أمور:

  • أن يدوم التوفير بعد انتهاء المشروع. فإعادة الكتابة والاختبار والتشغيل المتوازي تُدفع مرة واحدة، أما التوفير فيتكرر. ويقارن التقييم بين الاثنين على المدة نفسها.
  • ألا تكون القاعدة مرتبطة بخصائص لا توجد إلا في SQL Server. فكثرة حزم SQL Server Integration Services ومهام SQL Server Agent والخوادم المرتبطة (Linked Servers) ترفع الكلفة، لأن كل واحدة منها تحتاج إلى بديل.
  • أن يوجد من يشغّل PostgreSQL بعد ذلك. مديرو قواعد البيانات لديكم بعد التسليم، أو فريق خدمات مُدارة. فالقاعدة التي لا مسؤول عنها ليست توفيرًا.
اقرأ المزيد

وإن لم تتحقق هذه الأمور فقد يكون ضبط بيئة SQL Server الحالية وتجميع خوادمها هو الأنسب، ونقول ذلك كتابةً. والمنهج العام، ومنه متى لا يكون الترحيل مناسبًا أصلًا، في صفحة الترحيل إلى PostgreSQL، أما هذه الصفحة فتخص المصدر SQL Server تحديدًا.

تحويل SQL Server إلى PostgreSQL: كيف تتطابق أنواع البيانات

أنواع بيانات SQL Server الشائعة وما يقابلها عادةً في PostgreSQL
SQL ServerPostgreSQLما الذي يُراجع
INT وBIGINT وSMALLINTinteger وbigint وsmallintتطابق مباشر في الغالب
TINYINTsmallintلا يوجد في PostgreSQL عدد صحيح من بايت واحد، فأضيفوا قيدًا للتحقق إن كان المدى من 0 إلى 255 مهمًا
BITbooleanالشيفرة التي تقارن بالقيمتين 1 و0 يجب أن تقارن بـ true وfalse
VARCHAR(n) وNVARCHAR(n)varchar(n) أو textيحفظ PostgreSQL كل النصوص بترميز القاعدة، فمع UTF-8 لا تحتاج أنواع N إلى مقابل منفصل، وراجعوا الأطوال وقواعد الترتيب
VARCHAR(MAX) وNVARCHAR(MAX)textلا حد للطول يلزم نقله
DATETIME وDATETIME2timestampراجعوا الدقة وأي شيفرة تعتمد على تقريب DATETIME
DATETIMEOFFSETtimestamptzيحفظ PostgreSQL اللحظة الزمنية لا فرق التوقيت الأصلي، فاحفظوا الفرق في عمود مستقل إن احتجتم إليه
UNIQUEIDENTIFIERuuidتتغير دوال القيم الافتراضية
VARBINARY(MAX) وIMAGEbyteaقد يكون الأنسب حفظ الملفات الكبيرة خارج القاعدة، ويُقرَّر ذلك لكل جدول
MONEYnumeric(19,4)استخدموا numeric للمبالغ الدقيقة
أعمدة IDENTITYGENERATED AS IDENTITYأعيدوا ضبط القيمة التالية بعد تحميل البيانات
ROWVERSIONلا مقابل مباشرقرار تصميم: عمود إصدار يحدّثه مشغّل، أو تغيير في طريقة اكتشاف التطبيق للتعارض

تستطيع أدوات تحويل الهيكل إعداد مسودة أولى لهذه المطابقة. أما القرارات في العمود الأخير فيراجعها التقييم يدويًا، على بيانات تشبه بيانات الإنتاج.

من T-SQL إلى PL/pgSQL: ما الذي يحتاج عادةً إلى إعادة عمل

الشيفرة داخل القاعدة هي التي تأخذ معظم الوقت الهندسي. وهذه فروق تظهر في كل مصدر SQL Server تقريبًا:

  • الصياغة اليومية. يصبح TOP هو LIMIT، وISNULL هو COALESCE، وGETDATE() هو now() أو CURRENT_TIMESTAMP، ويصبح ربط النصوص بعلامة + ربطًا بـ ||. تغييرات سهلة، لكنها تُنسى بسهولة في الاستعلامات الديناميكية.
  • المفاتيح المولَّدة. تحل جملة INSERT مع RETURNING محل SCOPE_IDENTITY() و@@IDENTITY.
  • الإجراءات التي تُرجع صفوفًا. الإجراء في T-SQL الذي ينتهي بجملة SELECT يصبح عادةً دالة في PostgreSQL تُرجع جدولًا، ويتغير أسلوب استدعاء التطبيق لها.
  • معالجة الأخطاء. تصبح كتلتا TRY وCATCH كتلة واحدة فيها قسم EXCEPTION. وفي PL/pgSQL يؤدي التقاط الاستثناء إلى إلغاء التغييرات التي جرت منذ بداية تلك الكتلة، فالشيفرة المنقولة سطرًا بسطر قد تفقد عملًا كانت تحتفظ به.
  • الجداول المؤقتة. تصبح جداول #temp جداول تُنشأ بـ CREATE TEMP TABLE، مع الانتباه إلى وقت إنشائها وحذفها.
  • حالة الأحرف. تستخدم قواعد SQL Server كثيرًا قاعدة ترتيب لا تميّز حالة الأحرف، فتكون 'Riyadh' = 'RIYADH' صحيحة. أما في PostgreSQL فمقارنة النصوص تميّز حالة الأحرف افتراضيًا، والأسماء غير المقتبسة تُحوَّل إلى أحرف صغيرة. فالبحث والمفاتيح الفريدة والربط على النصوص كلها تحتاج إلى مراجعة.
  • المهام المجدولة. تحتاج مهام SQL Server Agent إلى أداة جدولة جديدة، لأن PostgreSQL نفسه لا يتضمن وكيلًا للمهام.

لا شيء من هذا غريب، ولا شيء منه يُحل بنسخ البيانات. ولهذا يقرأ التقييم الإجراءات واستعلامات التطبيقات قبل أن يقدّر أحد أي مدة.

أداة ترحيل SQL Server إلى PostgreSQL للبيانات: أين يناسب iblync

iblync منصة إنتركي لترحيل البيانات ونسخها، وSQL Server وPostgreSQL كلاهما في قائمة موصلاتها المنشورة. وله في هذا المشروع مهمة واحدة: نقل البيانات وإبقاء القاعدتين على اتفاق بينما يُثبَت باقي العمل.

  • التحميل الأولي. تُنسخ البيانات الحالية إلى PostgreSQL مرة واحدة، مع تقييد المعدل حتى لا ينافس التحميل الإنتاج على SQL Server.
  • النسخ المستمر. كل تغيير يجري على SQL Server بعد التحميل يُطبَّق على PostgreSQL. وإن تعذّر الوصول إلى PostgreSQL تنتظر التغييرات في طابور بدل أن تفشل، ثم تُعالج حين يعود.
  • الاتجاهان عند الحاجة. يدعم iblync المزامنة في الاتجاهين، فيمكن أثناء التشغيل المتوازي أن تكتب بعض الخدمات في PostgreSQL وغيرها ما زال يكتب في SQL Server.
  • الإثبات. يذكر موقع iblync أن التحقق يعتمد على المجاميع الاختبارية (checksums) وعدد الصفوف. ونتفق على شروط النجاح لبياناتكم قبل التحويل.

وأين لا يناسب: لا يعيد iblync كتابة شيفرة T-SQL ولا يغيّر تطبيقاتكم. فهذا عمل هندسي نتولاه مع فرقكم. ونمط التشغيل المتوازي والتحويل الأخير المخطط مشروح في صفحة الترحيل بدون توقف، والمنصة نفسها في صفحة iblync.

نقاط البداية التي نراها عادةً

  • تجديد تراخيص له موعد محدد. الهدف نقل أكبر الخوادم أو أعلاها كلفة أولًا وإيقافها قبل التجديد القادم، ثم يلحق بها الباقي.
  • تطبيق جديد مبني على PostgreSQL ما زال يحتاج إلى بيانات SQL Server. يُبقي iblync القاعدتين على اتفاق بينما يُوقف النظام القديم خدمةً بعد خدمة.
  • الانتقال إلى خدمة PostgreSQL مُدارة على منصة سحابية أو على بنية داخل المملكة، مع حسم قرار إقامة البيانات أولًا.

كيف يسير مشروع الانتقال من SQL Server إلى PostgreSQL

  1. التقييم.

    الخوادم والهيكل وشيفرة T-SQL ومهام Agent وحزم التكامل واستعلامات التطبيقات وحجم البيانات ومعدل تغيرها ونافذة التوقف وإقامة البيانات. ونتيجته قرار مع مقارنة للكلفة تتضمن خيار البقاء على SQL Server.

  2. الهيكل والشيفرة.

    يُطابَق الهيكل، وتُعاد كتابة T-SQL بلغة PL/pgSQL، ويُختبر الاثنان على بيانات تشبه بيانات الإنتاج.

  3. تعديلات التطبيقات.

    تُعدَّل برامج الاتصال وإعدادات الربط والاستعلامات ومعالجة الأخطاء وتُختبر لكل خدمة، مع فرق التطبيقات لديكم.

  4. التحميل والنسخ.

    يحمّل iblync البيانات ويُبقي PostgreSQL على اتفاق مع SQL Server.

  5. التشغيل المتوازي.

    القاعدتان تعملان، وتنتقل القراءة أولًا خدمةً بعد خدمة، بخطوات يمكن التراجع عنها.

  6. تحويل على مراحل.

    مزامنة أخيرة، ثم تحقق، ثم قرار مضي أو توقف يتخذه شخص مسمّى، ثم تنتقل الكتابة. ويُتمرَّن على التحويل والتراجع قبل الليلة الفعلية.

  7. التثبيت والتسليم.

    ضبط الأداء، وإثبات الاستعادة من النسخ الاحتياطية، وتمارين الانتقال عند التعطل، ثم التسليم لمديري قواعد البيانات لديكم أو تشغيل إنتركي لها.

ما تقدمه إنتركي في السعودية

فريق واحد للتقييم والتحويل والنسخ والتحويل النهائي، مع دعم من الرياض بالعربية والإنجليزية ومهندسين يتحدثون العربية. ويمكن تشغيل جسر النسخ وقاعدة البيانات الهدف والأدوات على بنية داخل المملكة، وهذا مهم إذا كانت البيانات شخصية أو خاضعة لجهة تنظيمية. ويُحسم مكان البيانات في التقييم، قبل أي نسخ.

وقبل البدء، تمر قائمة قرارات الترحيل لدينا على الأسئلة التي تحدد هل يستحق الانتقال كلفته. وبعد الإطلاق يمكن إدارة تغييرات الهيكل على PostgreSQL بالإصدارات ونشرها عبر مسار آلي مع ممارسة DevOps لقواعد البيانات لدينا.

ما الذي يحدد الكلفة

يُسعَّر كل مشروع على حدة بعد التقييم. وأهم ما يحدد الكلفة: حجم شيفرة T-SQL في القاعدة وأسلوب كتابتها، وعدد التطبيقات والخدمات التي تتغير استعلاماتها، وخصائص SQL Server التي تحتاج إلى بديل (مهام Agent وحزم التكامل والخوادم المرتبطة)، وحجم البيانات ومعدل تغيرها، ونافذة التوقف التي يقبلها العمل، ونموذج النشر، ومن يشغّل PostgreSQL بعد ذلك. ويُسعَّر iblync نفسه بعرض سعر بحسب نظام المصدر ونظام الهدف وحجم البيانات.

أسئلة شائعة

هل يلغي الانتقال إلى PostgreSQL كلفة تراخيص SQL Server؟

للقواعد التي تُنقل ويُوقف تشغيلها على SQL Server، نعم، فـ PostgreSQL بلا رسوم ترخيص. لكن الكلفة تنتقل إلى الترحيل نفسه وإلى الدعم وإلى من يشغّل PostgreSQL. ويقارن التقييم التوفير بهذه التكاليف على المدة نفسها.

كم يستغرق ترحيل SQL Server إلى PostgreSQL عادةً؟

يتوقف أساسًا على حجم شيفرة T-SQL وعدد التطبيقات التي تتغير، ثم على حجم البيانات ونافذة التوقف. ونقدّم مدى تقريبيًا بعد التقييم مع تسمية ما يغيّره، لا رقمًا قبل أن يقرأ أحد الشيفرة.

هل يحوّل iblync إجراءات T-SQL المخزنة تلقائيًا؟

لا. ينقل iblync البيانات ويُبقي SQL Server وPostgreSQL على اتفاق. وتستطيع أدوات التحويل إعداد مسودة للهيكل ولبعض الشيفرة، ويعيد مهندسونا كتابة الباقي بلغة PL/pgSQL ويختبرونه.

هل يمكن تشغيل SQL Server وPostgreSQL معًا قبل التحويل؟

نعم، وهذه هي الخطة. ينسخ iblync التغييرات باستمرار، وفي الاتجاهين إذا كانت بعض الخدمات تكتب في PostgreSQL، فلا تنتقل القراءة ثم الكتابة إلا حين تنجح الفحوص المتفق عليها.

هل تبقى البيانات داخل المملكة أثناء نسخها؟

يمكن ذلك. فجسر النسخ وقاعدة البيانات الهدف والأدوات يمكن تشغيلها على بنية داخل المملكة، ويُتفق على مكان البيانات في التقييم قبل أول نسخة.

من يدعم قواعد PostgreSQL الجديدة بعد الإطلاق؟

مديرو قواعد البيانات لديكم بعد التسليم، أو إنتركي من الرياض ضمن نطاق مكتوب للخدمات المُدارة. وفي الحالتين تتضمن خطة التحويل إثبات الاستعادة من النسخ الاحتياطية وتمارين الانتقال عند التعطل قبل التسليم.

الخطوة التالية

حدّدوا نطاق انتقالكم إلى PostgreSQL

أخبرونا بإصدارات SQL Server وعدد الخوادم، والحجم التقريبي للبيانات، وكمية شيفرة T-SQL فيها، ونافذة التوقف التي يقبلها العمل.

خانة إلزامية

بإرسالك هذا النموذج، فأنت توافق على سياسة الخصوصية.

أو مباشرةً

+966-11-2180999 [email protected]

أبراج التعاونية، البرج الشمالي، الطابق السابع، طريق الملك فهد، العليا، ص.ب. ٥٦٨٣٥، الرياض ١١٥٦٤، المملكة العربية السعودية

أو كيف تتطابق أنواع البيانات

نشرته إنتركي. آخر تحديث . إنتركي مسجلة في الرياض بالسجل التجاري رقم 1010156897.