الإبلاغ عبر قواعد بيانات السحابة المتدرج (معاينة)

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

Query across shards

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

للبدء السريع، راجع إعداد التقارير عبر قواعد بيانات السحابة الموسعة.

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

المتطلبات الأساسية

نظرة عامة

هذه العبارات إنشاء تمثيل بيانات التعريف الخاصة بك طبقة البيانات المقسمة في قاعدة بيانات الاستعلام مرنة.

  1. إنشاء مفتاح رئيسي
  2. إنشاء بيانات اعتماد على نطاق قاعدة البيانات
  3. إنشاء مصدر بيانات خارجي
  4. إنشاء جدول خارجي

1.1 إنشاء قاعدة بيانات نطاق المفتاح الرئيسي وبيانات الاعتماد

يتم استخدام بيانات الاعتماد بواسطة الاستعلام المرن للاتصال بقواعد البيانات عن بُعد.

CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE DATABASE SCOPED CREDENTIAL [<credential_name>]  WITH IDENTITY = '<username>',  
SECRET = '<password>';

ملاحظة

تأكد من أن "<اسم المستخدم>" لا يتضمن أي لاحقة "@servername".

1.2 إنشاء مصادر بيانات خارجية

بناء الجملة:

<External_Data_Source> ::=
    CREATE EXTERNAL DATA SOURCE <data_source_name> WITH
        (TYPE = SHARD_MAP_MANAGER,
                   LOCATION = '<fully_qualified_server_name>',
        DATABASE_NAME = ‘<shardmap_database_name>',
        CREDENTIAL = <credential_name>,
        SHARD_MAP_NAME = ‘<shardmapname>’
               ) [;]

مثال

CREATE EXTERNAL DATA SOURCE MyExtSrc
WITH
(
    TYPE=SHARD_MAP_MANAGER,
    LOCATION='myserver.database.windows.net',
    DATABASE_NAME='ShardMapDatabase',
    CREDENTIAL= SMMUser,
    SHARD_MAP_NAME='ShardMap'
);

استرداد قائمة مصادر البيانات الخارجية الحالية:

select * from sys.external_data_sources;

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

1.3 إنشاء جداول خارجية

بناء الجملة:

CREATE EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name  
    ( { <column_definition> } [ ,...n ])
    { WITH ( <sharded_external_table_options> ) }
) [;]  

<sharded_external_table_options> ::=
  DATA_SOURCE = <External_Data_Source>,
  [ SCHEMA_NAME = N'nonescaped_schema_name',]
  [ OBJECT_NAME = N'nonescaped_object_name',]
  DISTRIBUTION = SHARDED(<sharding_column_name>) | REPLICATED |ROUND_ROBIN

مثال

CREATE EXTERNAL TABLE [dbo].[order_line](
     [ol_o_id] int NOT NULL,
     [ol_d_id] tinyint NOT NULL,
     [ol_w_id] int NOT NULL,
     [ol_number] tinyint NOT NULL,
     [ol_i_id] int NOT NULL,
     [ol_delivery_d] datetime NOT NULL,
     [ol_amount] smallmoney NOT NULL,
     [ol_supply_w_id] int NOT NULL,
     [ol_quantity] smallint NOT NULL,
      [ol_dist_info] char(24) NOT NULL
)

WITH
(
    DATA_SOURCE = MyExtSrc,
     SCHEMA_NAME = 'orders',
     OBJECT_NAME = 'order_details',
    DISTRIBUTION=SHARDED(ol_w_id)
);

استرداد قائمة الجداول الخارجية من قاعدة البيانات الحالية:

SELECT * from sys.external_tables;

إنشاء جداول خارجية:

DROP EXTERNAL TABLE [ database_name . [ schema_name ] . | schema_name. ] table_name[;]

الملاحظات

تحدد عبارة DATA_SOURCE مصدر البيانات الخارجي (مخطط جزء) الذي يتم استخدامه للجدول الخارجي.

تعيِّن عبارات اسم_المخطط (SCHEMA_NAME) واسم_العنصر (OBJECT_NAME) تعريف الجدول الخارجي إلى جدول في مخطط مختلف. إذا تم حذفه، فمن المفترض أن يكون مخطط الكائن البعيد "dbo" ويفترض أن يكون اسمه مطابقاً لاسم الجدول الخارجي الذي يتم تحديده. وهذا مفيد إذا تم بالفعل أخذ اسم الجدول البعيد في قاعدة البيانات حيث تريد إنشاء الجدول الخارجي. على سبيل المثال، تريد تحديد جدول خارجي للحصول على عرض إجمالي لطرق عرض الكتالوج أو طرق عرض الإدارة الديناميكية (DMVs) على طبقة البيانات التي تم قياسها. نظرا لوجود طرق عرض الكتالوج وDMVs محليا بالفعل، لا يمكنك استخدام أسمائهم لتعريف الجدول الخارجي. بدلاً من ذلك، استخدم اسماً مختلفاً واستخدم اسم طريقة عرض الكتالوج أو اسم طريقة عرض الإدارة الديناميكية (DMV) في عبارات اسم_المخطط (SCHEMA_NAME) و/أو اسم_العنصر (OBJECT_NAME). (انظر المثال أدناه.)

تحدد جملة التوزيع توزيع البيانات المستخدم لهذا الجدول. يستخدم معالج الاستعلام المعلومات المتوفرة في جملة التوزيع لإنشاء خطط الاستعلام الأكثر فعالية.

  1. SHARDED يعني تقسيم البيانات أفقيا عبر قواعد البيانات. مفتاح التقسيم لتوزيع البيانات هو المعلمة <sharding_column_name>.
  2. REPLICATED يعني أن نسخاً متطابقة من الجدول موجودة على كل قاعدة بيانات. تقع على عاتقك مسؤولية التأكد من أن النسخ المتماثلة متطابقة عبر قواعد البيانات.
  3. تعني ROUND_ROBIN أن الجدول مقسم أفقياً باستخدام طريقة توزيع تعتمد على التطبيق.

مرجع مستوى البيانات: يشير الجدول الخارجي DDL إلى مصدر بيانات خارجي. يحدد مصدر البيانات الخارجي مخطط قطعة يوفر الجدول الخارجي مع المعلومات الضرورية لتحديد موقع جميع قواعد البيانات في مستوى البيانات.

اعتبارات الأمان

يحصل المستخدمون الذين لديهم حق الوصول إلى الجدول الخارجي تلقائياً على حق الوصول إلى الجداول الأساسية عن بُعد بموجب بيانات الاعتماد الواردة في تعريف مصدر البيانات الخارجي. تجنب رفع الامتيازات غير المرغوب فيه من خلال بيانات اعتماد مصدر البيانات الخارجي. استخدم GRANT أو REVOKE لجدول خارجي كما لو كان جدولا عاديا.

بمجرد تحديد مصدر البيانات الخارجي والجداول الخارجية، يمكنك الآن استخدام T-SQL الكاملة عبر الجداول الخارجية.

مثال: الاستعلام عن قواعد بيانات مقسمة أفقيا

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

    select  
         w_id as warehouse,
         o_c_id as customer,
         count(*) as cnt_orderline,
         max(ol_quantity) as max_quantity,
         avg(ol_amount) as avg_amount,
         min(ol_delivery_d) as min_deliv_date
    from warehouse
    join orders
    on w_id = o_w_id
    join order_line
    on o_id = ol_o_id and o_w_id = ol_w_id
    where w_id > 100 and w_id < 200
    group by w_id, o_c_id

الإجراء المخزن لتنفيذ T-SQL عن بُعد: sp_execute_remote

يقدم الاستعلام المرن أيضاً إجراء مخزناً يوفر وصولاً مباشراً إلى التقسيمات. يُطلق على الإجراء المخزن اسم sp_execute _remote ويمكن استخدامه لتنفيذ الإجراءات المخزنة عن بُعد أو رمز Transact-SQL على قواعد البيانات البعيدة. يتطلب إدخال المعلمات التالية:

  • اسم مصدر البيانات (nvarchar): اسم مصدر البيانات الخارجي من النوع RDBMS.
  • الاستعلام (nvarchar): الاستعلام T-SQL ليتم تنفيذه على كل قطعة.
  • تصريح المعلمة (nvarchar) - اختياري: سلسلة مع تعريفات نوع البيانات للمعلمات المستخدمة في معلمة الاستعلام (مثل sp_executesql).
  • قائمة قيم المعلمات - اختياري: قائمة بقيم المعلمات مفصولة بفاصلة (مثل sp_executesql).

إن sp_execute_remote يستخدم مصدر البيانات الخارجي المقدم في معلمات الاستدعاء لتنفيذ عبارة Transact-SQL المقدمة على قواعد البيانات البعيدة. يستخدم بيانات اعتماد مصدر البيانات الخارجي للاتصال بقاعدة بيانات إدارة shardmap وقواعد البيانات البعيدة.

مثال:

    EXEC sp_execute_remote
        N'MyExtSrc',
        N'select count(w_id) as foo from warehouse'

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

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

أفضل الممارسات

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

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