مشاركة عبر


استراتيجيات تحميل البيانات لتجمع SQL مخصص في Azure Synapse Analytics

تستخدم تجمعات SQL المخصصة لـ SMP التقليدية عملية استخراج وتحويل وتحميل (ETL) لتحميل البيانات. يستخدم Synapse SQL، داخل Azure Synapse Analytics، بنية معالجة الاستعلامات الموزعة التي تستفيد من قابلية التوسع ومرونة لموارد الحوسبة والتخزين.

استخدام عملية استخراج وتحميل وتحويل (ELT) يستخدم قدرات معالجة الاستعلام الموزعة المضمنة ويزيل الموارد اللازمة لتحويل البيانات قبل التحميل.

بينما تدعم تجمعات SQL المخصصة العديد من أساليب التحميل، بما في ذلك خيارات SQL Server الشائعة مثل bcp وSqlBulkCopy API، فإن أسرع طريقة وأكثرها قابلية للتوسع لتحميل البيانات هي من خلال جداول PolyBase الخارجية وعبارة COPY.

باستخدام PolyBase وعبارةCOPY، يمكنك الوصول إلى البيانات الخارجية المخزنة في تخزين Azure Blob أو Azure Data Lake Store عبر لغة T-SQL. للحصول على أكبر قدر من المرونة عند التحميل، نوصي باستخدام عبارة COPY.

ما هو ELT؟

الاستخراج والتحميل والتحويل (ELT) هي عملية يتم من خلالها استخراج البيانات من نظام المصدر، وتحميلها في تجمع SQL مخصص، ثم تحويلها بعد ذلك.

الخطوات الأساسية لتنفيذ ELT هي:

  1. استخراج البيانات المصدر في ملفات نصية.
  2. وضع البيانات في موقع تخزين Azure Blob أو Azure Data Lake Store.
  3. تحضير البيانات للتحميل.
  4. تحميل البيانات في جداول التقسيم المرحلي باستخدام PolyBase أو الأمر COPY.
  5. تحويل البيانات.
  6. إدراج البيانات في جداول إنتاج «Production tables».

للحصول على برنامج تعليمي حول التحميل، راجع تحميل البيانات من تخزين Azure blob.

1. استخراج بيانات المصدر في ملفات نصية

يعتمد إخراج البيانات من نظام المصدر الخاص بك على موقع التخزين. يتمثل الهدف في نقل البيانات إلى النصوص المحددة المدعومة أو ملفات CSV.

تنسيقات الملفات المعتمدة

باستخدام PolyBase وعبارة COPY، يمكنك تحميل البيانات من النصوص المحددة أو ملفات CSV بترميز UTF-8 وUTF-16. بالإضافة إلى النصوص المحددة أو ملفات CSV، يتم تحميلها من تنسيقات ملفات Hadoop مثل ORC وParquet. يمكن لـ PolyBase وعبارة COPY أيضًا تحميل البيانات من ملفات Gzip وSnappy المضغوطة.

تنسيق ASCII الموسع وتنسيق العرض الثابت والتنسيقات المتداخلة مثل WinZip أو XML غير مدعومة. إن كنت تقوم بالتصدير من SQL Server، فإنه يمكنك استخدام أداة سطر أوامر bcp لتصدير البيانات إلى ملفات نصية محددة.

2. ضع البيانات في موقع تخزين Azure Blob أو Azure Data Lake Store

لنقل البيانات إلى تخزين Azure، يمكنك نقلها إلى موقع تخزين Azure Blob أو Azure Data Lake Store Gen2. في أي من الموقعين، يجب تخزين البيانات في ملفات نصية. يمكن تحميل PolyBase وعبارة COPY من أي من الموقعين.

الأدوات والخدمات التي يمكنك استخدامها لنقل البيانات إلى Azure Storage:

  • تعمل خدمة Azure ExpressRoute على تحسين معدل نقل الشبكة وأدائها وإمكانية توقعها. ExpressRoute هي خدمة تقوم بتوجيه بياناتك عبر اتصال خاص مخصص إلى Azure. لا تقوم اتصالات ExpressRoute بتوجيه البيانات عبر الإنترنت العام. توفر الاتصالات مزيدًا من الموثوقية وسرعات أسرع وأوقات انتقال أقل وأمانًا أعلى من الاتصالات العادية عبر الإنترنت العام.
  • تنقل الأداة المساعدة AzCopy البيانات إلى Azure Storage عبر الإنترنت العام. يعمل هذا إذا كانت أحجام بياناتك أقل من 10 تيرابايت. لإجراء الأحمال بانتظام باستخدام AzCopy، اختبر سرعة الشبكة لمعرفة ما إذا كانت مقبولة.
  • يحتوي Azure Data Factory (ADF) على بوابة يمكنك تثبيته على الخادم المحلي. بعد ذلك، يمكنك إنشاء مسار لنقل البيانات من الخادم المحلي الخاص بك إلى Azure Storage. لكي تستخدم Data Factory مع تجمعات SQL المخصصة، راجع تحميل البيانات لتجمعات SQL المخصصة.

3. تحضير البيانات للتحميل

قد تحتاج إلى إعداد وتنظيف البيانات في حساب التخزين الخاص بك قبل تحميلها. يمكن إجراء تحضير البيانات أثناء وجود بياناتك في المصدر، أثناء تصدير البيانات إلى ملفات نصية، أو بعد أن تكون البيانات في Azure Storage. من الأسهل العمل مع البيانات في وقت مبكر من العملية قدر الإمكان.

تعريف الجداول

أولا، حدد الجداول التي تقوم بالتحميل إليها في تجمع SQL المخصص عند استخدام عبارة COPY.

إذا كنت تستخدم PolyBase، فأنت بحاجة إلى تعريف الجداول الخارجية في تجمع SQL المخصص قبل التحميل. يستخدم PolyBase جداول خارجية لتحديد البيانات والوصول إليها في Azure Storage. يشبه الجدول الخارجي طريقة عرض قاعدة البيانات. يحتوي الجدول الخارجي على مخطط الجدول ويشير إلى البيانات المخزنة خارج تجمع SQL المخصص.

يتضمن تعريف الجداول الخارجية تحديد مصدر البيانات وتنسيق الملفات النصية وتعريفات الجدول. المقالات المرجعية لبناء جملة T-SQL التي ستحتاج إليها هي:

استخدم تعيين نوع بيانات SQL التالي عند تحميل ملفات Parquet:

نوع Parquet نوع منطقي من Parquet (تعليق توضيحي) نوع بيانات SQL
منطقيه بت
BYTE_ARRAY ثنائي / varbinary
مزدوج طفا
طفا real
INT32 الباحث
INT64 لون كبير
INT96 التاريخ والوقت2
FIXED_LEN_BYTE_ARRAY binary
ثنائي UTF8 nvarchar
ثنائي STRING nvarchar
ثنائي ENUM nvarchar
ثنائي UUID معرف فريد
ثنائي DECIMAL عدد عشري
ثنائي JSON nvarchar(MAX)
ثنائي BSON varbinary(MAX)
FIXED_LEN_BYTE_ARRAY DECIMAL عدد عشري
BYTE_ARRAY INTERVAL varchar(MAX)
INT32 INT(8, true) لون صغير
INT32 INT(16, true) لون صغير
INT32 INT(32, true) الباحث
INT32 INT(8, false) لون صغير
INT32 INT(16, false) الباحث
INT32 INT(32, false) لون كبير
INT32 DATE date
INT32 DECIMAL عدد عشري
INT32 TIME (MILLIS) الوقت
INT64 INT(64, true) لون كبير
INT64 INT(64, false ) عشري (20,0)
INT64 DECIMAL عدد عشري
INT64 TIME (MILLIS) الوقت
INT64 TIMESTAMP (MILLIS) التاريخ والوقت2
نوع معقد LIST varchar(max)
نوع معقد MAP varchar(max)

هام

  • لا تدعم تجمعات SQL المخصصة حاليًا أنواع بيانات Parquet بدقة MICROS وNANOS.
  • قد تواجه الخطأ التالي إذا كانت الأنواع غير متطابقة بين Parquet وSQL أو إذا كان لديك أنواع بيانات Parquet غير معتمدة: HdfsBridge::recordReaderFillBuffer - Unexpected error encountered filling record reader buffer: ClassCastException:...
  • تحميل قيمة خارج نطاق 0-127 في عمود tinyint لتنسيق ملف Parquet وORC غير معتمد.

للحصول على مثال لإنشاء عناصر خارجية، راجع إنشاء جداول خارجية.

تنسيق الملفات النصية

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

لتنسيق الملفات النصية:

  • إذا كانت بياناتك واردة من مصدر غير علائقي، فأنت بحاجة إلى تحويلها إلى صفوف وأعمدة. سواء كانت البيانات من مصدر علائقي أو غير علائقي، يجب تحويل البيانات لتتماشى مع تعريفات العمود للجدول الذي تخطط لتحميل البيانات فيه.
  • تنسيق البيانات في ملف نصي لمحاذاة الأعمدة وأنواع البيانات في جدول وجهة. تؤدي المحاذاة غير الصحيحة بين أنواع البيانات في الملفات النصية الخارجية وجدول تجمع SQL إلى رفض الصفوف في أثناء التحميل.
  • افصل الحقول في الملف النصي باستخدام فاصل. تأكد من استخدام حرف أو تسلسل أحرف غير موجود في بيانات المصدر. استخدم حرف النهاية الذي حددته باستخدام CREATE EXTERNAL FILE FORMAT.

4. تحميل البيانات باستخدام PolyBase أو عبارة COPY

من الأفضل تحميل البيانات في جدول مرحلي. تسمح لك جداول التدريج بمعالجة الأخطاء دون التدخل في جداول الإنتاج. يمنحك الجدول المرحلي أيضًا الفرصة لاستخدام بنية المعالجة المتوازية لتجمع SQL المخصص لتحويلات البيانات قبل إدراج البيانات في جداول الإنتاج.

الخيارات الخاصة بالتحميل

لتحميل البيانات، يمكنك استخدام أي من خيارات التحميل التالية:

  • عبارة COPY هي أداة التحميل الموصى بها لأنها تُمكنك من تحميل البيانات بسلاسة ومرونة. تحتوي العبارة على العديد من إمكانيات التحميل الإضافية التي لا يوفرها PolyBase. راجع البرنامج التعليمي لعبارة COPY لسيارة الأجرة في مدينة نيويورك للتشغيل من خلال نموذج البرنامج التعليمي.
  • يتطلب PolyBase باستخدام T-SQL منك تعريف عناصر البيانات الخارجية.
  • تعد PolyBase وعبارة COPY مع Azure Data Factory (ADF) أداة تنسيق أخرى. يحدد خط التدفق وجدولة الوظائف.
  • يعملPolyBase مع SSIS بشكل جيد عندما تكون بيانات المصدر في SQL Server. يعرّف SSIS المصدر إلى تعيينات الجدول الوجهة، وينظم أيضًا الحمل. إذا كان لديك بالفعل حزم SSIS، يمكنك تعديل الحزم للعمل مع وجهة مستودع البيانات الجديدة.
  • ينقل PolyBase مع Azure Databricks البيانات من جدول إلى إطار بيانات Databricks و/أو يكتب البيانات من إطار بيانات Databricks إلى جدول باستخدام PolyBase.

مراجعة البرامج التعليمية المتوفرة:

الخيارات الأخرى للتحميل

بالإضافة إلى PolyBase وعبارة COPY، يمكنك استخدام bcp أو واجهة برمجة تطبيقات SqlBulkCopy. bcp يتم تحميل الأداة المساعدة مباشرة إلى قاعدة البيانات دون المرور عبر تخزين Azure Blob، وهي مخصصة فقط للأحمال الصغيرة.

إشعار

أداء تحميل هذه الخيارات أبطأ من PolyBase وعبارة COPY.

5. تحويل البيانات

في أثناء وجود البيانات في الجدول المرحلي، قم بإجراء التحويلات التي يتطلبها حمل العمل الخاص بك. ثم انقل البيانات إلى جدول الإنتاج.

6. أدخل البيانات في جداول الإنتاج

تنقل عبارة INSERT INTO ... SELECT البيانات من الجدول المرحلي إلى الجدول الدائم.

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

حلول تحميل الشريك

العديد من شركائنا لديهم حلول تحميل. لمعرفة المزيد، راجع قائمة شركاء الحلول.

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