منصة البيانات · من SQL Server إلى PostgreSQL
ترحيل SQL Server إلى PostgreSQL مع بقاء القاعدتين تعملان حتى التحويل
يبدأ ترحيل SQL Server إلى PostgreSQL عادةً بموعد تجديد التراخيص، وتحسمه الهندسة: يُطابَق الهيكل، وتُعاد كتابة شيفرة T-SQL بلغة PL/pgSQL، ويُختبر التطبيق على قاعدة تختلف في تفاصيل صغيرة. وتنفّذ إنتركي الانتقال من الرياض، ويُبقي iblync، منصتها للنسخ المتماثل، قاعدتي 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 تحديدًا.
روابط ذات صلةصفحة الترحيل إلى PostgreSQL
تحويل SQL Server إلى PostgreSQL: كيف تتطابق أنواع البيانات
| SQL Server | PostgreSQL | ما الذي يُراجع |
|---|---|---|
| INT وBIGINT وSMALLINT | integer وbigint وsmallint | تطابق مباشر في الغالب |
| TINYINT | smallint | لا يوجد في PostgreSQL عدد صحيح من بايت واحد، فأضيفوا قيدًا للتحقق إن كان المدى من 0 إلى 255 مهمًا |
| BIT | boolean | الشيفرة التي تقارن بالقيمتين 1 و0 يجب أن تقارن بـ true وfalse |
| VARCHAR(n) وNVARCHAR(n) | varchar(n) أو text | يحفظ PostgreSQL كل النصوص بترميز القاعدة، فمع UTF-8 لا تحتاج أنواع N إلى مقابل منفصل، وراجعوا الأطوال وقواعد الترتيب |
| VARCHAR(MAX) وNVARCHAR(MAX) | text | لا حد للطول يلزم نقله |
| DATETIME وDATETIME2 | timestamp | راجعوا الدقة وأي شيفرة تعتمد على تقريب DATETIME |
| DATETIMEOFFSET | timestamptz | يحفظ PostgreSQL اللحظة الزمنية لا فرق التوقيت الأصلي، فاحفظوا الفرق في عمود مستقل إن احتجتم إليه |
| UNIQUEIDENTIFIER | uuid | تتغير دوال القيم الافتراضية |
| VARBINARY(MAX) وIMAGE | bytea | قد يكون الأنسب حفظ الملفات الكبيرة خارج القاعدة، ويُقرَّر ذلك لكل جدول |
| MONEY | numeric(19,4) | استخدموا numeric للمبالغ الدقيقة |
| أعمدة IDENTITY | GENERATED 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.
روابط ذات صلةصفحة الترحيل بدون توقفصفحة iblync
نقاط البداية التي نراها عادةً
- تجديد تراخيص له موعد محدد. الهدف نقل أكبر الخوادم أو أعلاها كلفة أولًا وإيقافها قبل التجديد القادم، ثم يلحق بها الباقي.
- تطبيق جديد مبني على PostgreSQL ما زال يحتاج إلى بيانات SQL Server. يُبقي iblync القاعدتين على اتفاق بينما يُوقف النظام القديم خدمةً بعد خدمة.
- الانتقال إلى خدمة PostgreSQL مُدارة على منصة سحابية أو على بنية داخل المملكة، مع حسم قرار إقامة البيانات أولًا.
كيف يسير مشروع الانتقال من SQL Server إلى PostgreSQL
-
التقييم.
الخوادم والهيكل وشيفرة T-SQL ومهام Agent وحزم التكامل واستعلامات التطبيقات وحجم البيانات ومعدل تغيرها ونافذة التوقف وإقامة البيانات. ونتيجته قرار مع مقارنة للكلفة تتضمن خيار البقاء على SQL Server.
-
الهيكل والشيفرة.
يُطابَق الهيكل، وتُعاد كتابة T-SQL بلغة PL/pgSQL، ويُختبر الاثنان على بيانات تشبه بيانات الإنتاج.
-
تعديلات التطبيقات.
تُعدَّل برامج الاتصال وإعدادات الربط والاستعلامات ومعالجة الأخطاء وتُختبر لكل خدمة، مع فرق التطبيقات لديكم.
-
التحميل والنسخ.
يحمّل iblync البيانات ويُبقي PostgreSQL على اتفاق مع SQL Server.
-
التشغيل المتوازي.
القاعدتان تعملان، وتنتقل القراءة أولًا خدمةً بعد خدمة، بخطوات يمكن التراجع عنها.
-
تحويل على مراحل.
مزامنة أخيرة، ثم تحقق، ثم قرار مضي أو توقف يتخذه شخص مسمّى، ثم تنتقل الكتابة. ويُتمرَّن على التحويل والتراجع قبل الليلة الفعلية.
-
التثبيت والتسليم.
ضبط الأداء، وإثبات الاستعادة من النسخ الاحتياطية، وتمارين الانتقال عند التعطل، ثم التسليم لمديري قواعد البيانات لديكم أو تشغيل إنتركي لها.
ما تقدمه إنتركي في السعودية
فريق واحد للتقييم والتحويل والنسخ والتحويل النهائي، مع دعم من الرياض بالعربية والإنجليزية ومهندسين يتحدثون العربية. ويمكن تشغيل جسر النسخ وقاعدة البيانات الهدف والأدوات على بنية داخل المملكة، وهذا مهم إذا كانت البيانات شخصية أو خاضعة لجهة تنظيمية. ويُحسم مكان البيانات في التقييم، قبل أي نسخ.
وقبل البدء، تمر قائمة قرارات الترحيل لدينا على الأسئلة التي تحدد هل يستحق الانتقال كلفته. وبعد الإطلاق يمكن إدارة تغييرات الهيكل على 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]أبراج التعاونية، البرج الشمالي، الطابق السابع، طريق الملك فهد، العليا، ص.ب. ٥٦٨٣٥، الرياض ١١٥٦٤، المملكة العربية السعودية