تصميم Azure Synapse SQL
توضح هذه المقالة مكونات هندسة Synapse SQL. كما يشرح كيف يجمع Azure Synapse SQL بين قدرات معالجة الاستعلام الموزعة وAzure Storage لتحقيق أداء عال وقابلية التوسع.
مكونات بنية SQL Synapse
يستخدم Synapse SQL بنية توسيع لتوزيع المعالجة الحسابية للبيانات عبر عقد متعددة. الحساب منفصل عن التخزين، مما يمكّنك من قياس الحساب بشكل مستقل عن البيانات الموجودة في نظامك.
بالنسبة إلى تجمع SQL المخصص، فإن وحدة القياس هي عبارة عن تجريد لقدرة الحوسبة المعروفة باسم وحدة مستودع البيانات.
بالنسبة لتجمع SQL بلا خادم، نظراً لكونه بلا خادم، يتم إجراء القياس تلقائياً لاستيعاب متطلبات موارد الاستعلام. نظراً لأن الهيكل يتغير بمرور الوقت عن طريق إضافة العقد أو عمليات تجاوز الفشل، فإنه يتكيف مع التغييرات ويتأكد من أن الاستعلام الخاص بك يحتوي على موارد كافية وينتهي بنجاح. على سبيل المثال، تعرض الصورة التالية تجمع SQL بلا خادم باستخدام أربع عقد حساب لتنفيذ استعلام.
يستخدم Synapse SQL بنية مستندة إلى العقدة. تتصل التطبيقات وتصدر أوامر T-SQL إلى عقدة التحكم، وهي نقطة الدخول الوحيدة لـ Synapse SQL.
تستخدم عقدة Azure Synapse SQL Control محرك استعلام موزع لتحسين الاستعلامات للمعالجة المتوازية، ثم تمرر العمليات إلى حساب العقد للقيام بعملها بالتوازي.
تستخدم عقدة التحكم في تجمع SQL بلا خادم محرك معالجة الاستعلام الموزع (DQP) لتحسين وتنظيم التنفيذ الموزع لاستعلام المستخدم عن طريق تقسيمه إلى استعلامات أصغر سيتم تنفيذها على عقد الحساب. يسمى كل استعلام صغير بالمهمة ويمثل وحدة تنفيذ موزعة. يقرأ الملف (الملفات) من التخزين، وينضم إلى النتائج من المهام الأخرى، أو المجموعات، أو يطلب البيانات المسترجعة من المهام الأخرى.
تقوم عقد الحساب بتخزين جميع بيانات المستخدم في Azure Storage وتشغيل الاستعلامات المتوازية. خدمة حركة البيانات (DMS) هي خدمة داخلية على مستوى النظام تنقل البيانات عبر العقد حسب الضرورة لتشغيل الاستعلامات في نفس الوقت وإرجاع نتائج دقيقة.
مع التخزين والحساب المنفصلين، عند استخدام Synapse SQL يمكن للمرء الاستفادة من الحجم المستقل لقوة الحوسبة بغض النظر عن احتياجات التخزين الخاصة بك. بالنسبة إلى مجموعة SQL التي بلا خادم، يتم إجراء تحجيم تجمع SQL تلقائياً، بينما بالنسبة لتجمع SQL المخصص، يمكن للمرء:
- يمكنك زيادة قوة الحوسبة أو تقليصها، ضمن مجموعة SQL مخصصة، دون نقل البيانات.
- أوقف سعة الحوسبة مؤقتاً مع ترك البيانات سليمة، لذلك تدفع فقط مقابل التخزين.
- استئناف القدرة الحسابية خلال ساعات العمل.
تخزين Azure
يستخدم Synapse SQL Azure Storage للحفاظ على أمان بيانات المستخدم. نظرا لأنه يتم تخزين بياناتك وإدارتها بواسطة Azure Storage، فهناك رسوم منفصلة لاستهلاك التخزين الخاص بك.
يتيح لك تجمع SQL بلا خادم الاستعلام عن ملفات مستودع البيانات الخاصة بك، بينما يسمح لك تجمع SQL المخصص بالاستعلام عن البيانات واستيعابها من ملفات مستودع البيانات الخاصة بك. عند إدخال البيانات في تجمع SQL المخصص، يتم تقسيم البيانات إلى توزيعات لتحسين أداء النظام. يمكنك اختيار نمط التقسيم المراد استخدامه لتوزيع البيانات عند تحديد الجدول. يتم دعم أنماط التجزئة هذه:
- التجزئة
- الترتيب الدوري
- النسخ المتماثل
عقدة التحكم
عقدة التحكم هي دماغ البنية. إنها الواجهة الأمامية التي تتفاعل مع جميع التطبيقات والاتصالات.
في Synapse SQL، يعمل محرك الاستعلام الموزع على عقدة التحكم لتحسين وتنسيق الاستعلامات المتوازية. عند إرسال استعلام T-SQL إلى تجمع SQL مخصص، تقوم عقدة التحكم بتحويله إلى استعلامات تعمل مقابل كل توزيع على التوازي.
في تجمع SQL بلا خادم، يعمل محرك DQP على عقدة التحكم لتحسين وتنسيق التنفيذ الموزع لاستعلام المستخدم عن طريق تقسيمه إلى استعلامات أصغر سيتم تنفيذها على عقد الحساب. كما يقوم بتعيين مجموعات من الملفات لتتم معالجتها بواسطة كل عقدة.
عقد الحساب
توفر العقد الحاسوبية القدرة الحسابية.
في تجمع SQL المخصص، يتم تعيين التوزيعات لحساب العقد للمعالجة. أثناء الدفع مقابل المزيد من موارد الحوسبة، يقوم التجمع بإعادة تعيين التوزيعات إلى عقد الحساب المتاحة. يتراوح عدد عقد الحساب من 1 إلى 60، ويتم تحديده حسب مستوى الخدمة لتجمع SQL المخصص. تحتوي كل عقدة حساب على معرف عقدة يكون مرئياً في عروض النظام. يمكنك رؤية معرف العقدة الحسابية من خلال البحث عن العمود node_id في عروض النظام التي تبدأ أسماؤها بـ sys.pdw_nodes. للحصول على قائمة بطرق عرض النظام هذه، راجع طرق عرض نظام Synapse SQL.
في تجمع SQL بلا خادم، يتم تعيين مهمة ومجموعة من الملفات لكل عقدة حساب لتنفيذ المهمة عليها. المهمة عبارة عن وحدة تنفيذ استعلام موزعة، وهي في الواقع جزء من الاستعلام المقدم من المستخدم. القياس التلقائي ساري المفعول للتأكد من استخدام عدد كافٍ من عقد الحوسبة لتنفيذ استعلام المستخدم.
خدمة حركة البيانات
خدمة نقل البيانات (DMS) هي تقنية نقل البيانات في تجمع SQL مخصص ينسق حركة البيانات بين عقد الحوسبة. تتطلب بعض الاستعلامات تحريك البيانات للتأكد من أن الاستعلامات المتوازية تُرجع نتائج دقيقة. عندما تكون حركة البيانات مطلوبة، يضمن DMS وصول البيانات الصحيحة إلى الموقع الصحيح.
التوزيعات
التوزيع هو الوحدة الأساسية للتخزين والمعالجة للاستعلامات المتوازية التي تعمل على البيانات الموزعة في تجمع SQL المخصص. عندما يقوم تجمع SQL المخصص بتشغيل استعلام، يتم تقسيم العمل إلى 60 استعلاماً أصغر تعمل بالتوازي.
يعمل كل من الاستعلامات الستين الأصغر على أحد توزيعات البيانات. تدير كل عقدة حساب واحدة أو أكثر من التوزيعات الستين. يحتوي تجمع SQL المخصص الذي يحتوي على الحد الأقصى من موارد الحوسبة على توزيع واحد لكل عقدة حسابية. يحتوي تجمع SQL المخصص مع الحد الأدنى من موارد الحوسبة على جميع التوزيعات على عقدة حساب واحدة.
الجداول الموزعة باستخدام نمط التجزئة
يمكن أن يقدم جدول التجزئة الموزع أعلى أداء استعلام لعمليات الصلات والتجميعات في الجداول الكبيرة.
لتقسيم البيانات إلى جدول موزع تجزئة، يستخدم تجمع SQL المخصص وظيفة تجزئة لتعيين كل صف بشكل حاسم لتوزيع واحد. في تعريف الجدول، يتم تعيين أحد الأعمدة كعمود التوزيع. تستخدم وظيفة التجزئة القيم الموجودة في عمود التوزيع لتعيين كل سجل إلى توزيع.
يوضح الرسم البياني التالي كيف يتم تخزين جدول كامل (غير موزع) كجدول موزع تجزئة.
- كل صف ينتمي إلى توزيع واحد.
- تقوم خوارزمية التجزئة الحتمية بتعيين كل صف لتوزيع واحد.
- يختلف عدد صفوف الجدول لكل توزيع كما هو موضح في أحجام الجداول المختلفة.
هناك اعتبارات للأداء من أجل تحديد «عمود التوزيع»؛ مثل: التمايز، وانحراف البيانات، وأنواع الاستعلامات التي يتم تشغيلها على النظام.
الجداول الموزعة باستخدام نمط الترتيب الدوري
الجدول المستدير هو أبسط جدول لإنشاء وتقديم أداء سريع عند استخدامه كجدول مرحلي للأحمال.
يقوم توزيع جدول الترتيب الدوري بتوزيع البيانات بالتساوي عبر الجدول؛ ولكن دون المزيد من التحسينات. يتم أولاً اختيار التوزيع عشوائيًا، ثم يتم تعيين المخازن المؤقتة للسجلات إلى التوزيعات بشكل تسلسلي. من السريع تحميل البيانات في جدول الترتيب الدوري، ولكن غالبا ما يكون أداء الاستعلام أفضل مع جداول التجزئة الموزعة. تتطلب الصلات في جداول الترتيب الدوري إعادة ترتيب البيانات، ما يستغرق وقتا إضافيا.
الجداول المنسوخة بشكل متماثل
يوفر الجدول المنسوخ بشكل متماثل أداء أسرع لاستعلام الجداول الصغيرة.
يقوم الجدول الذي يتم نسخه بشكل متماثل بالتخزين المؤقت لنسخة كاملة من الجدول على كل عقدة محوسبة. لذلك، فإن نسخ الجدول يزيل الحاجة إلى نقل البيانات بين عقد الحساب قبل الصلة أو التجميع. من الأفضل استخدام الجداول المكررة مع الجداول الصغيرة. مطلوب تخزين إضافي وهناك حمل إضافي يتم تكبده عند كتابة البيانات، ما يجعل الجداول الكبيرة غير عملية.
يوضح الرسم التخطيطي أدناه جدولاً منسوخاً تم تخزينه مؤقتاً في التوزيع الأول على كل عقدة حسابية.
الخطوات التالية
الآن بعد أن تعرفت قليلاً على Synapse SQL، تعرَّف على كيفية إنشاء تجمع SQL مخصص بسرعة وتحميل عينة من البيانات. أو ابدأ في استخدام تجمع SQL بلا خادم. إذا كنت جديدا على Azure، فقد تجد مسرد Azure مفيدا أثناء مواجهة مصطلحات جديدة.