نظرة عامة على استعلام مرن لقاعدة بيانات Azure SQL (معاينة)

ينطبق على: قاعدة بيانات Azure SQL

تتيح لك ميزة الاستعلام المرن (في وضع المعاينة) تشغيل استعلام Transact-SQL يمتد عبر قواعد بيانات متعددة في قاعدة بيانات Azure SQL. كما تتيح إجراء استعلامات عبر قاعدة بيانات للوصول إلى الجداول البعيدة، وتوصيل Microsoft وأدوات الجهات الخارجية (Excel وPower BI وTableau وغيرها) للاستعلام عبر مستويات البيانات باستخدام قواعد بيانات متعددة. باستخدام هذه الميزة، يمكنك توسيع نطاق الاستعلامات إلى مستويات بيانات كبيرة وتصور النتائج في تقارير المعلومات المهنية (BI).

سبب استخدام الاستعلامات المرنة

قاعدة بيانات Azure SQL

الاستعلام عبر قواعد البيانات في قاعدة بيانات Azure SQL تمامًا في T-SQL. يسمح هذا بالاستعلام للقراءة فقط عن قواعد البيانات البعيدة ويوفر خيارًا لعملاء SQL Server الحاليين لترحيل التطبيقات باستخدام أسماء من ثلاثة وأربعة أجزاء أو خادم مرتبط بقاعدة بيانات SQL.

متوفر في جميع مستويات الخدمة

يتم دعم الاستعلام المرن في جميع مستويات الخدمة في Azure SQL Database. راجع قسم قيود المعاينة أدناه حول قيود الأداء لمستويات الخدمة الأقل.

نقل المعلمات إلى قواعد البيانات البعيدة

يمكن للاستعلامات المرنة الآن نقل معلمات SQL إلى قواعد البيانات البعيدة للتنفيذ.

تنفيذ الإجراء المخزّن

نفِّذ استدعاءات الإجراءات المخزنة عن بُعد أو الدوال البعيدة باستخدام sp_execute _remote.

المرونة

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

سيناريوهات الاستعلام المرن

يتمثل الهدف من ذلك في تسهيل سيناريوهات الاستعلام حيث تقدم قواعد بيانات متعددة صفوف في نتيجة إجمالية واحدة. يمكن أن يتكون الاستعلام إما من قبل المستخدم أو التطبيق بشكل مباشر، أو بشكل غير مباشر من خلال الأدوات المتصلة بقاعدة البيانات. هذا مفيد بشكل خاص عند إنشاء التقارير، باستخدام تقارير المعلومات المهنية التجارية أو أدوات تكامل البيانات، أو أي تطبيق لا يمكن تغييره. باستخدام استعلام مرن، يمكنك الاستعلام عبر العديد من قواعد البيانات باستخدام تجربة الاتصال SQL Server المألوفة في أدوات مثل Excel أو Power BI أو Tableau أو Cognos. يسمح الاستعلام المرن بالوصول السهل إلى مجموعة كاملة من قواعد البيانات من خلال الاستعلامات الصادرة عن SQL Server Management Studio أو Visual Studio، ويسهل الاستعلام عبر قاعدة البيانات من Entity Framework أو بيئات ORM الأخرى. يوضح الشكل 1 سيناريو يعتمد تطبيق السحابة الحالي فيه (الذي يستخدم مكتبة عميل قاعدة البيانات المرنة) على مستوى بيانات موسع، ويتم استخدام استعلام مرن لإعداد تقارير عبر قواعد البيانات.

الشكل 1 استعلام مرن يُستخدم في مستوى البيانات الموسع

Elastic query used on scaled-out data tier

تتميز سيناريوهات العميل للاستعلام المرن بالمخططات التالية:

  • التقسيم العمودي - استعلامات عبر قاعدة البيانات (المخطط 1): يتم تقسيم البيانات عموديًا بين عدد من قواعد البيانات في مستوى البيانات. عادةً ما توجد مجموعات مختلفة من الجداول على قواعد بيانات مختلفة. وهذا يعني أن المخطط مختلف في قواعد بيانات مختلفة. على سبيل المثال، جميع جداول المخزون موجودة في قاعدة بيانات واحدة بينما جميع الجداول المتعلقة بالمحاسبة موجودة في قاعدة بيانات ثانية. تتطلب حالات الاستخدام الشائعة التي تحتوي على هذا المخطط قاعدة بيانات للاستعلام عبر التقارير أو لتجميعها عبر الجداول في العديد من قواعد البيانات.
  • التقسيم الأفقي - التجزئة (المخطط 2): يتم تقسيم البيانات أفقيًا لتوزيع الصفوف عبر مستوى بيانات موسع. يكون المخطط متطابقًا في جميع قواعد البيانات المشاركة باستخدام هذا النهج. ويُسمى هذا النهج أيضًا «التجزئة». يمكن إجراء التجزئة وإدارتها باستخدام (1) مكتبات أدوات قاعدة البيانات المرنة أو (2) التجزئة الذاتية. يتم استخدام استعلام مرن للاستعلام عن التقارير أو تجميعها عبر العديد من القطع المجزئة. عادةً ما تكون القطع المجزئة عبارة عن قواعد البيانات داخل مجموعة مرنة. يمكنك التفكير في الاستعلام المرن كطريقة فعالة للاستعلام عن جميع قواعد البيانات الخاصة بالمجموعة المرنة في وقت واحد، ما دامت قواعد البيانات تشترك في المخطط العام.

ملاحظة

يعمل الاستعلام المرن بشكل أفضل لإعداد التقارير عن السيناريوهات التي يجري خلالها معظم عمليات المعالجة (التصفية والتجميع) على جانب المصدر الخارجي. إلا أنه غير مناسب لعمليات ETL حيث يتم نقل كمية كبيرة من البيانات من قاعدة (قواعد) البيانات البعيدة. بالنسبة إلى أحمال عمل التقارير الكثيرة أو سيناريوهات تخزين البيانات مع استعلامات أكثر تعقيدًا، ضع في اعتبارك أيضًا استخدام Azure Synapse Analytics.

التقسيم العمودي - الاستعلامات عبر قاعدة البيانات

لبدء الترميز، راجع البدء في الاستعلام عبر قاعدة البيانات (التقسيم العمودي).

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

هام

يجب أن تحصل على إذن «تغيير أي مصدر بيانات خارجي». تم إدراج هذا الإذن مع إذن «تغيير قاعدة بيانات». يجب الحصول على أذونات «تغيير مصدر البيانات الخارجي» للإشارة إلى مصدر البيانات الأساسي.

البيانات المرجعية: يُستخدم المخطط لإدارة البيانات المرجعية. في الشكل أدناه، يتم الاحتفاظ بجدولين (T1 وT2) بهما بيانات مرجعية في قاعدة بيانات مخصصة. يمكنك الآن باستخدام استعلام مرن الوصول إلى الجدولين T1 وT2 عن بعد من قواعد البيانات الأخرى، كما هو موضح في الشكل. استخدم المخطط 1 إذا كانت الجداول المرجعية صغيرة أو بعيدة الاستعلامات في جدول مرجعي لها دالات تقييم انتقائية.

الشكل 2 التقسيم العمودي - استخدام استعلام مرن للاستعلام عن البيانات المرجعية

Vertical partitioning - Using elastic query to query reference data

الاستعلام عبر قاعدة البيانات: تتيح الاستعلامات المرنة حالات الاستخدام التي تتطلب الاستعلام عبر عدة قواعد بيانات في قاعدة بيانات SQL. يوضح الشكل 3 أربع قواعد بيانات مختلفة: إدارة علاقات العملاء، والمخزون، والموارد البشرية، والمنتجات. تحتاج الاستعلامات التي يتم إجراؤها في إحدى قواعد البيانات أيضًا إلى الوصول إلى قاعدة بيانات واحدة أو جميع قواعد البيانات الأخرى. باستخدام استعلام مرن، يمكنك تكوين قاعدة البيانات لهذه الحالة عن طريق تشغيل بعض عبارات DDL بسيطة على كل من قواعد البيانات الأربعة. بعد هذا التكوين لمرة واحدة، يكون الوصول إلى جدول بعيد عملية بسيطة مثل الإشارة إلى جدول محلي من استعلامات T-SQL أو من أدوات BI. يوصى بهذا الأسلوب إذا لم تعيد الاستعلامات البعيدة نتائج كبيرة.

الشكل 3 التقسيم العمودي - استخدام استعلام مرن للاستعلام عن البيانات المرجعية

Vertical partitioning - Using elastic query to query across various databases

تعمل الخطوات التالية على تكوين استعلامات قاعدة البيانات المرنة لسيناريوهات التقسيم العمودي التي تتطلب الوصول إلى جدول موجود في قواعد البيانات البعيدة في قاعدة بيانات SQL بنفس المخطط:

بعد تشغيل عبارات DDL، يمكنك الوصول إلى الجدول البعيد «mytable» كما لو كان جدولاً محليًا. تفتح قاعدة بيانات Azure SQL تلقائيًا اتصالاً بقاعدة البيانات البعيدة وتعالج طلبك على قاعدة البيانات البعيدة وتعيد النتائج.

التقسيم الأفقي - التجزئة

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

الشكل 4 التقسيم الأفقي - استخدام استعلام مرن للإبلاغ عن مستويات البيانات المجزأة

Horizontal partitioning - Using elastic query for reporting over sharded data tiers

ملاحظة

يمكن أن تكون قاعدة بيانات الاستعلام المرن (العُقدة الرئيسية) قاعدة بيانات منفصلة، أو يمكن أن تكون نفس قاعدة البيانات التي تستضيف خريطة التجزئة. مهما كان التكوين الذي تختاره، تأكد من أن مستوى الخدمة وحجم الحساب لقاعدة البيانات هذه مرتفعان بما يكفي للتعامل مع المقدار المتوقع من طلبات تسجيل الدخول/الاستعلام.

تعمل الخطوات التالية على تكوين استعلامات قاعدة البيانات المرنة لسيناريوهات التقسيم الأفقي التي تتطلب الوصول إلى مجموعة من الجداول الموجودة (عادةً) على عدة قواعد بيانات بعيدة في قاعدة بيانات SQL:

بعد تنفيذ هذه الخطوات، يمكنك الوصول إلى جدول مقسم أفقيًا «mytable» كما لو كان جدولًا محليًّا. تفتح قاعدة بيانات Azure SQL تلقائيًا اتصالات متوازية متعددة لقواعد البيانات البعيدة حيث يتم تخزين الجداول فعليًا، وتعالج الطلبات في قواعد البيانات البعيدة، وتعيد النتائج. يمكن العثور على مزيد من المعلومات حول الخطوات المطلوبة لسيناريو التقسيم الأفقي في الاستعلام المرن للتقسيم الأفقي.

لبدء الترميز، راجع البدء في الاستعلام المرن للتقسيم الأفقي (التجزئة).

هام

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

استعلام T-SQL

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

الاتصال للأدوات

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

هام

يتم دعم الاستعلامات المرنة فقط عند الاتصال بمصادقة Microsoft SQL Server.

Cost

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

قيود المعاينة

  • لا يستغرق تشغيل استعلامك المرن الأول إلا دقائق قليلة في حالة الموارد الصغيرة ومع طبقة الخدمة Standard وGeneral Purpose. هذا الوقت ضروري لتحميل وظيفة الاستعلام المرن؛ كما يتحسن أداء التحميل مع مستويات الخدمة الأعلى وأحجام الحساب.
  • البرمجة النصية لمصادر البيانات الخارجية أو الجداول الخارجية من SSMS أو SSDT غير مدعومة بعد.
  • لا يدعم استيراد/ تصدير SQL Database حتى الآن مصادر البيانات الخارجية والجداول الخارجية. إذا كنت بحاجة إلى استخدام استيراد/ تصدير، فضع هذه الكائنات قبل التصدير ثم أعِد إنشاءها بعد الاستيراد.
  • لا يدعم الاستعلام المرن حاليًا سوى الوصول للقراءة فقط إلى الجداول الخارجية. ومع ذلك؛ يمكنك استخدام دوال Transact-SQL الكاملة في قاعدة البيانات؛ حيث يتم تعريف الجدول الخارجي. يمكن أن يكون هذا مفيداً، على سبيل المثال، لاستمرار النتائج المؤقتة باستخدام، على سبيل المثال، اختر <column_list> INTO <local_table>، أو لتعريف الإجراءات المخزنة في قاعدة بيانات الاستعلام المرن التي تشير إلى الجداول الخارجية.
  • باستثناء nvarchar(max)، لا يتم دعم أنواع LOB (بما في ذلك الأنواع المكانية) في تعريفات الجدول الخارجي. كحل بديل، يمكنك إنشاء طريقة عرض على قاعدة البيانات البعيدة التي تنقل نوع LOB إلى nvarchar(max)، وتحديد الجدول الخارجي عبر طريقة العرض بدلاً من الجدول الأساسي ثم تحويله مرة أخرى إلى نوع LOB الأصلي في الاستعلامات.
  • تعمل أعمدة نوع بيانات nvarchar(max) في مجموعة النتائج على تعطيل تقنيات التجميع المتقدمة المستخدمة في تنفيذ الاستعلام المرن وقد تؤثر على أداء الاستعلام لترتيب المقدار، أو حتى أمرين من الحجم في حالات الاستخدام غير المتعارف عليها حيث يتم نقل كمية كبيرة من البيانات غير المجمعة نتيجة للاستعلام.
  • إحصاءات العمود عبر الجداول الخارجية غير مدعومة حاليًا. يتم دعم إحصائيات الجدول، ولكن يجب إنشاؤها يدويًا.
  • المؤشرات غير مدعومة للجداول الخارجية في Azure SQL Database.
  • يعمل الاستعلام المرن مع قاعدة بيانات azure SQL فقط. لا يمكنك استخدامه للاستعلام عن مثيل SQL Server.

مشاركة التعقيبات

يرجى مشاركة التعقيبات على تجربتك مع الاستعلامات المرنة معنا أدناه، أو في منتديات MSDN، أو على Stack Overflow. نحن مهتمون بمعرفة جميع أنواع التعقيبات حول الخدمة (العيوب، أو الأخطاء، أو ثغرات في الميزات).

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