تقليل مشكلات لغة الاستعلامات المركبة لترحيلات Netezza

هذه المقالة هي الجزء الخامس من سلسلة من سبعة أجزاء تقدم إرشادات حول كيفية الترحيل من Netezza إلى Azure Synapse Analytics. تركيز هذه المقالة هو أفضل الممارسات لتقليل مشكلات SQL.

نظرة عامة

الخصائص الخاصة ببيئات Netezza

تلميح

أصبحت Netezza رائدة في مفهوم «جهاز مستودع البيانات» في أوائل القرن الحادي والعشرين.

في عام 2003، أصدرت Netezza مبدئيًا منتج جهاز مستودع البيانات. كما خفضت تكلفة الدخول وحسنت سهولة استخدام تقنيات المعالجة المتوازية على نطاق واسع لتمكين معالجة البيانات على نطاق واسع بكفاءة أكبر من تكنولوجيات الحاسوب الرئيسي الحالية أو غيرها من تكنولوجيات المعالجة المتوازية على نطاق واسع المتاحة في ذلك الوقت. ومنذ ذلك الحين، تطور المنتج، أصبح لديه العديد من المنشآت بين المؤسسات المالية الكبيرة، والاتصالات السلكية واللاسلكية، وشركات البيع بالتجزئة. واستخدم التنفيذ الأصلي أجهزة خاصة، بما في ذلك صفائف البوابة القابلة للبرمجة الميدانية - أو FPGAs - وكان يمكن الوصول إليها عبر اتصال شبكة اتصال قاعدة البيانات المفتوح أو JDBC عبر TCP/IP.

وتعد معظم عمليات تثبيت Netezza الحالية محلية، لذلك يفكر العديد من المستخدمين في ترحيل بعض بيانات Netezza أو جميعها إلى Azure Synapse Analytics للحصول على فوائد الانتقال إلى بيئة سحابية حديثة.

تلميح

كما تعتبر العديد من عمليات تثبيت Netezza الحالية مستودعات بيانات باستخدام نموذج بيانات الأبعاد.

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

يعمل هذا المزيج من لغة الاستعلامات المركبة ونماذج البيانات الأبعاد على تبسيط الترحيل إلى Azure Synapse، لأن المفاهيم الأساسية ومهارات لغة الاستعلامات المركبة قابلة للنقل. والنهج الموصى به هو ترحيل نموذج البيانات الحالي كما هو لتقليل المخاطر والوقت المستغرق. حتى إذا كانت النية النهائية هي إجراء تغييرات على نموذج البيانات (على سبيل المثال، الانتقال إلى نموذج مخزن البيانات)، فقم بإجراء ترحيل أولي كما هو ثم إجراء تغييرات داخل بيئة سحابة Azure، والاستفادة من الأداء وقابلية التوسع المرنة ومزايا التكلفة هناك.

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

استخدام Azure Data Factory من أجل تنفيذ ترحيل يستند إلى بيانات التعريف

تلميح

قم بأتمتة عملية الترحيل باستخدام قدرات Azure Data Factory.

قم بأتمتة عملية الترحيل وتنسيقها باستخدام قدرات بيئة Azure. يقلل هذا النهج من تأثير الترحيل على بيئة Netezza الحالية، والتي قد تكون بالفعل قريبة من السعة الكاملة.

يعتبر Azure Data Factory عبارة عن خدمة تكامل بيانات مستندة إلى مجموعة النظراء تتيح إنشاء مهام سير عمل تعتمد على البيانات في السحابة لتنظيم حركة البيانات وتحويلها وأتمتتها. باستخدام Azure Data Factory، بإمكانك إنشاء تدفقات سير عمل تعتمد على البيانات وجدولتها - تسمى المسارات - يمكنها استيعاب البيانات من مخازن البيانات المختلفة. يمكنها معالجة البيانات وتحويلها باستخدام خدمات الحوسبة مثل Azure HDInsight Hadoop وSpark وAzure Data Lake Analytics والتعلم الآلي من Microsoft Azure.

من خلال إنشاء بيانات تعريف لسرد جداول البيانات التي سيتم ترحيلها وموقعها، بإمكانك استخدام مرافق Data Factory لإدارة عملية الترحيل. بإمكانك أيضًا استخدام Azure Synapse Pipelines.

اختلافات لغة الاستعلامات المركبة ولغة توصيف البيانات بين Netezza وAzure Synapse

لغة توصيف البيانات (DDL)

تلميح

أوامر لغة الاستعلامات المركبة لغة توصيف البيانات CREATE TABLE وCREATE VIEW لها عناصر أساسية قياسية ولكن يتم استخدامها أيضًا لتحديد الخيارات الخاصة بالتطبيق.

يحدد معيار لغة الاستعلامات المركبة ANSI بناء الجملة الأساسي لأوامر لغة توصيف البيانات مثل CREATE TABLE وCREATE VIEW. تستخدم هذه الأوامر داخل كل من Netezza وAzure Synapse، ولكن تم توسيعها أيضًا للسماح بتعريف الميزات الخاصة بالتطبيق مثل الفهرسة وتوزيع الجدول وخيارات التقسيم.

وتناقش الأقسام التالية الخيارات الخاصة بـ Netezza التي يجب مراعاتها أثناء الترحيل إلى Azure Synapse.

اعتبارات الجدول

تلميح

استخدم الفهارس الموجودة لتتمكن من الإشارة إلى المرشحين للفهرسة في المستودع الذي تم ترحيله.

عند ترحيل الجداول بين تقنيات مختلفة، يتم نقل البيانات الأولية وبيانات التعريف التي تصفها فعليًا بين البيئتين. لا يتم ترحيل عناصر قاعدة البيانات الأخرى من النظام المصدر - مثل الفهارس - حيث قد لا تكون هناك حاجة إليها أو قد يتم تنفيذها بشكل مختلف داخل البيئة الهدف الجديدة. على سبيل المثال، الخيار TEMPORARY داخل بناء جملة Netezza CREATE TABLE يعادل بادئة اسم الجدول بحرف «#» في Azure Synapse.

ومن المهم فهم مكان استخدام تحسينات الأداء - مثل الفهارس - في بيئة المصدر. يشير هذا إلى مكان إضافة تحسين الأداء في البيئة الهدف الجديدة. على سبيل المثال، في حال كانت الاستعلامات في بيئة Netezza المصدر تستخدم خرائط المنطقة بشكل متكرر، فقد يشير ذلك إلى أنه يجب إنشاء فهرس غير مجمع داخل Azure Synapse المرحل. قد تكون تقنيات تحسين الأداء الأصلية الأخرى، مثل النسخ المتماثل للجدول، أكثر قابلية للتطبيق من إنشاء فهرس مباشر «مثل بالمثل».

أنواع عناصر قاعدة بيانات Netezza غير مدعومة

تلميح

يمكن استبدال ميزات خاصة بـ Netezza بميزات Azure Synapse.

تنفذ Netezza بعض كائنات قاعدة البيانات التي لا تدعم بشكل مباشر في Azure Synapse، ولكن هناك طرقًا لتحقيق نفس الوظيفة داخل البيئة الجديدة:

  • خرائط المنطقة: يتم إنشاء خرائط المنطقة، في Netezza، وصيانتها تلقائيًا لبعض أنواع الأعمدة ويتم استخدامها في وقت الاستعلام لتقييد كمية البيانات التي سيتم مسحها ضوئيًا. تنشأ خرائط المنطقة على أنواع الأعمدة التالية:

    • INTEGER أعمدة يبلغ طولها 8 بايت أو أقل.
    • أعمدة زمنية. وعلى سبيل المثال، وDATE وTIME وTIMESTAMP.
    • CHAR الأعمدة، إذا كانت هذه جزءًا من طريقة عرض مجسدة ومذكورة في ORDER BY العبارة.

    بإمكانك معرفة الأعمدة التي تحتوي على خرائط مناطق باستخدام nz_zonemap الأداة المساعدة، والتي تعد جزءًا من مجموعة أدوات NZ. لا يتضمن Azure Synapse خرائط المنطقة، ولكن يمكنك تحقيق نتائج مماثلة باستخدام أنواع الفهرس المعرفة من قبل المستخدم والتقسيم أو أيّ منهما.

  • الجداول الأساسية المجمعة (CBT): في Netezza، تستخدم CBT بشكل شائع لجداول الحقائق، والتي يمكن أن تحتوي على مليارات من السجلات. يتطلب مسح مثل هذا الجدول الضخم الكثير من وقت المعالجة، حيث قد تكون ثمة حاجة إلى فحص الجداول الكامل للحصول على السجلات ذات الصلة. يسمح تنظيم السجلات على الجداول الأساسية المجمعة التقييدية لـ Netezza بتجميع السجلات في نفس النطاقات أو القريبة. تنشئ هذه العملية أيضًا خرائط المنطقة التي تحسن الأداء عن طريق تقليل كمية البيانات التي سيتم مسحها ضوئيًا.

    في Azure Synapse، بإمكانك تحقيق تأثير مماثل باستخدام التقسيم واستخدام الفهارس الأخرى أو أيّ منهما.

  • طرق العرض المجسدة: يدعم Netezza طرق العرض المجسدة ويوصي بإنشاء واحد أو أكثر من هذه على جداول كبيرة تحتوي على العديد من الأعمدة حيث يُستخدم عدد قليل فقط من هذه الأعمدة بانتظام في الاستعلامات. يحافظ النظام تلقائيًا على طرق العرض المجسدة عند تحديث البيانات في الجدول الأساسي.

    يدعم Azure Synapse طرق العرض المجسدة، بوظائف Netezza ذاتها.

تعيين نوع بيانات Netezza

تلميح

تقييم تأثير أنواع البيانات غير المدعومة باعتبارها جزءًا من مرحلة الإعداد.

معظم أنواع بيانات Netezza تمتلك مكافئًا مباشرًا في Azure Synapse. يعرض الجدول التالي أنواع البيانات هذه جنبًا إلى جنب مع الطريقة الموصى بها لتعيينها.

نوع بيانات Netezza نوع بيانات Azure Synapse
BIGINT BIGINT
تغير ثنائي(n) VARBINARY(n)
BOOLEAN بت
BYTEINT tinyint
تغير الحرف(n) VARCHAR(n)
الحرف(n) CHAR(n)
التاريخ التاريخ(date)
DECIMAL(p,s) DECIMAL(p,s)
DOUBLE PRECISION حُر
حر(n) حر(n)
عدد صحيح INT
الفاصل لا يتم حاليًا دعم أنواع البيانات الفاصلة بشكل مباشر في Azure Synapse، ولكن يمكن حسابها باستخدام وظائف زمنية مثل DATEDIFF.
مال مال
تغير الحرف الدولي(n) NVARCHAR(n)
الحرف الدولي(n) NCHAR(n)
عددي(p,s) عددي(p,s)
حقيقي حقيقي
smallint smallint
ST_GEOMETRY(n) أنواع البيانات المكانية مثل ST_GEOMETRY غير مدعومة حاليًا في Azure Synapse، ولكن يمكن تخزين البيانات على هيئة VARCHAR أو VARBINARY.
الوقت الوقت
الوقت باستخدام المنطقة الزمنية DATETIMEOFFSET
الطابع الزمني التاريخ والوقت

إنشاء لغة توصيف البيانات(DDL)

تلميح

استخدم بيانات تعريف Netezza الموجودة لأتمتة إنشاء لغة توصيف البيانات CREATE TABLE وCREATE VIEW لـ Azure Synapse.

تحرير البرامج النصية Netezza CREATE TABLE وCREATE VIEW الموجودة لإنشاء التعريفات المكافئة مع أنواع البيانات المعدلة كما هو موضح سابقًا إذا لزم الأمر. عادة ما يشمل ذلك إزالة أو تعديل أي عبارات إضافية خاصة بـ Netezza مثل ORGANIZE ON.

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

قم بالوصول إلى هذه المعلومات باستخدام الأدوات المساعدة مثل nz_ddl_table وإنشاء عبارات لغة توصيف البيانات CREATE TABLE. حرر هذه العبارات للجداول المكافئة في Azure Synapse.

تلميح

يمكن أن تعمل أدوات وخدمات الجهات الخارجية على أتمتة مهمات تعيين البيانات.

توجد شركاء Microsoft يقدمون أدوات وخدمات لأتمتة الترحيل، بما في ذلك تعيين نوع البيانات. في حال كانت أداة استخراج وتحويل وتحميل تابعة لجهة خارجية مثل Informatica أو Talend قيد الاستخدام بالفعل في بيئة Netezza، يمكن لهذه الأدوات تنفيذ أي تحويلات مطلوبة للبيانات.

اختلافات لغة الاستعلامات المركبة ولغة معالجة البيانات بين Netezza وAzure Synapse

لغة معالجة البيانات لغة الاستعلامات المركبة (DML)

تلميح

تحتوي أوامر لغة الاستعلامات المركبة لغة معالجة البيانات SELECT وINSERT وUPDATE على عناصر أساسية قياسية ولكن قد تنفذ أيضًا خيارات بناء جملة مختلفة.

يحدد معيار لغة الاستعلامات المركبة ANSI بناء الجملة الأساسي لأوامر لغة توصيف البيانات مثل SELECT وINSERT وUPDATE وDELETE. يستخدم كل من Netezza وAzure Synapse هذه الأوامر، ولكن في بعض الحالات توجد اختلافات في التنفيذ.

تناقش الأقسام التالية أوامر لغة معالجة البيانات الخاصة بـ Netezza التي يجب مراعاتها في أثناء الترحيل إلى Azure Synapse.

اختلافات بناء جملة لغة الاستعلامات المركبة لغة معالجة البيانات

كن على دراية بهذه الاختلافات في بناء جملة لغة معالجة بيانات لغة الاستعلامات المركبة لغة معالجة البيانات بين لغة الاستعلامات المركبة Netezza وAzure Synapse عند الترحيل:

  • STRPOS: في Netezza، ترجع الدالة STRPOS موضع سلسلة فرعية داخل سلسلة. تعتبر الدالة المكافئة في Azure Synapse هي CHARINDEX، مع عكس ترتيب الوسيطات. فعلى سبيل المثال، SELECT STRPOS('abcdef','def')... في Netezza يعادل SELECT CHARINDEX('def','abcdef')... في Azure Synapse.

  • AGE: يدعم Netezza عامل التشغيل AGE لإعطاء الفاصل الزمني بين قيمتين زمنيتين، مثل الطوابع الزمنية أو التواريخ. على سبيل المثال، ⁧SELECT AGE('23-03-1956','01-01-2019') FROM...⁩. في Azure Synapse، يعطي DATEDIFF الفاصل الزمني. على سبيل المثال، ⁧SELECT DATEDIFF(day, '1956-03-26','2019-01-01') FROM...⁩. دون تسلسل تمثيل التاريخ.

  • NOW(): يقوم Netezza باستخدام NOW() لتمثيل CURRENT_TIMESTAMP في Azure Synapse.

دالات وإجراءات مخزنة وتسلسلات

تلميح

تقييم عدد ونوع العناصر غير البيانات التي سيتم ترحيلها كجزء من مرحلة الإعداد.

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

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

قد تكون ثمة مرافق في بيئة Azure تحل محل الوظائف المطبقة كوظائف أو إجراءات مخزنة في بيئة Netezza. في هذه الحالة، يكون استخدام مرافق Azure المدمجة أكثر فاعلية بدلاً من إعادة ترميز دالات Netezza.

تلميح

تستطيع منتجات وخدمات الجهات الخارجية أتمتة ترحيل العناصر غير المتعلقة بالبيانات.

يقدم شركاء Microsoft أدوات وخدمات يمكنها أتمتة الترحيل، بما يشمل تعيين أنواع البيانات. في حال كانت أداة استخراج وتحويل وتحميل تابعة لجهة خارجية مثل Informatica أو Talend قيد الاستخدام بالفعل في بيئة Netezza، يمكن لهذه الأدوات تنفيذ أي تحويلات مطلوبة للبيانات.

راجع الأقسام التالية لمزيد من المعلومات حول كل عنصر من هذه العناصر.

الوظائف

كما هو الحال مع معظم منتجات قواعد البيانات، تدعم Netezza وظائف النظام والوظائف المحددة من قبل المستخدم ضمن تنفيذ لغة الاستعلامات المركبة. عند الترحيل إلى نظام أساسي آخر لقاعدة البيانات مثل Azure Synapse، تتوفر وظائف النظام الشائعة ويمكن ترحيلها بدون تغيير. قد تحتوي بعض وظائف النظام على بناء جملة مختلف قليلاً، ولكن يمكن أتمتة التغييرات المطلوبة إذا كان الأمر كذلك. فيما يتعلق بوظائف النظام حيث لا يوجد مكافئ، أو للوظائف التعسفية المعرفة من قبل المستخدم، قم بإعادة ترميزها باستخدام اللغات المتوفرة في البيئة الهدف. يستخدم Azure Synapse لغة Transact-SQL الشائعة لتنفيذ الوظائف المعرفة بواسطة المستخدم. يتم ترميز الدالات المعرفة من قبل المستخدم في Netezza بلغات nzlua أو C++‎.

الإجراءات المخزنة

كما تسمح معظم منتجات قاعدة البيانات الحديثة بتخزين الإجراءات داخل قاعدة البيانات. يوفر Netezza لغة NZPLSQL، وهي تستند إلى Postgres PL/pgSQL. يحتوي الإجراء المخزن عادة على عبارات لغة الاستعلامات المركبة وبعض المنطق الإجرائي، وقد يرجع بيانات أو حالة.

يدعم Azure Synapse Analytics أيضًا الإجراءات المخزنة باستخدام T-SQL، لذلك في حال كان يجب ترحيل الإجراءات المخزنة، أعد ترميزها وفقًا لذلك.

التسلسلات

في Netezza، التسلسل هو كائن قاعدة بيانات مسمى تم إنشاؤه عبر CREATE SEQUENCE الذي يمكن أن يوفر القيمة الفريدة عبر الأسلوب NEXT VALUE FOR. استخدمهم لإنشاء أرقام فريدة لاستخدامها كقيم مفاتيح بديلة لقيم المفتاح الأساسي.

داخل Azure Synapse، لا يوجد CREATE SEQUENCE. تعالج التسلسلات باستخدام IDENTITY لإنشاء مفاتيح بديلة أو هوية مدارة باستخدام التعليمات البرمجية لغة الاستعلامات المركبة لإنشاء رقم التسلسل التالي في سلسلة.

استخدام EXPLAIN للتحقق من صحة لغة الاستعلامات المركبة القديمة

تلميح

ابحث عن مشكلات الترحيل المحتملة بواسطة استعلامات حقيقية من سجلات استعلام النظام الموجودة.

التقاط بعض عبارات لغة الاستعلامات المركبة التمثيلية من سجلات محفوظات الاستعلام القديمة لتقييم Netezza SQL القديمة للتوافق مع Azure Synapse. بعد ذلك قم ببادئة هذه الاستعلامات مع EXPLAIN و - بافتراض نموذج بيانات تم ترحيله «مثل للشبه» في Azure Synapse بنفس أسماء الجداول والأعمدة - قم بتشغيل هذه العبارات EXPLAIN في Azure Synapse. سترجع أي لغة الاستعلامات المركبة غير متوافقة خطأ. استخدم هذه المعلومات لتحديد تغيير حجم مهمة إعادة الترميز. لا يتطلب هذا الأسلوب تحميل البيانات في بيئة Azure، فقط أنه تم إنشاء الجداول والعروض ذات الصلة.

تعيين IBM Netezza إلى T-SQL

يوجد IBM Netezza إلى T-SQL المتوافق مع تعيين نوع بيانات لغة الاستعلامات المركبة Azure Synapse في هذا الجدول:

نوع بيانات IBM Netezza نوع بيانات لغة الاستعلامات المركبة Azure Synapse
صفيف غير مدعوم
Bigint Bigint
عنصر ثنائي كبير [(n[K| M|G])] nvarchar [(n|max)]
 كائن ثنائي كبير الحجم [(n[K| M|G])] nvarchar [(n|max)]
 byte [(n)] ثنائي [(n)]|متغير(max)
 byteint smallint
 حرف متغير [(n)] varchar [(n|max)]
الحرف المتفاوت [(n)] varchar [(n|max)]
 حرف [(n)] char [(n)]|varchar(max)
الحرف [(n)] char [(n)]|varchar(max)
 كائن كبير الأحرف [(n[K| M|G])] varchar [(n|max)
 clob [(n[K|M|G])] varchar [(n|max)
 مجموعة بيانات غير مدعوم 
 التاريخ التاريخ
 dec [(p[,s])] decimal [(p[,s])]
 decimal [(p[,s])] decimal [(p[,s])]
 دقة مزدوجة حر(53)
 حر(n) حر(n)
 graphic [(n)] char [(n)]|varchar(max)
 الفاصل الزمني غير مدعوم 
 json [(n)] nvarchar [(n|max)]
 Varchar طويلة nvarchar(max)
 متغير طويل nvarchar(max)
 mbb غير مدعوم 
 mbr غير مدعوم 
 رقم [((p|*)[,s])] عددي [(p[,s])]
 عددي [(p [,s])]  عددي [(p[,s])]
 period غير مدعوم 
 فعلي  فعلي
 smallint smallint
 st_geometry غير مدعوم 
 الوقت الوقت
 الوقت باستخدام المنطقة الزمنية datetimeoffset
 طابع زمني  التاريخ والوقت2
 الطابع الزمني باستخدام المنطقة الزمنية datetimeoffset
 varbyte متغير [(n|max)]
 VarChar[(n)]  VarChar[(n)]
 vargraphic [(n)] nvarchar [(n|max)]
 صفيف متغير غير مدعوم 
 xml غير مدعوم 
 xmltype غير مدعوم 

الملخص

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

لتقليل مهمة ترحيل التعليمات البرمجية لغة الاستعلامات المركبة الفعلية، اتبع هذه التوصيات:

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

  • فهم الاختلافات بين لغة الاستعلامات المركبة Netezza وAzure Synapse.

  • استخدم بيانات التعريف وسجلات الاستعلام من تنفيذ Netezza الحالي لتتمكن من تقييم تأثير الاختلافات والتخطيط لنهج للتخفيف.

  • قم بأتمتة العملية كلما أمكن لتقليل الأخطاء والمخاطر والوقت للترحيل.

  • ضع في اعتبارك استخدام شركاء وخدمات Microsoft المتخصصة لتتمكن من تبسيط عملية الترحيل.

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

لمعرفة المزيد حول أدوات Microsoft وأدوات الغير، راجع المقالة التالية في هذه السلسلة: أدوات ترحيل مستودع بيانات Netezza إلى Azure Synapse Analytics.