مشاركة عبر


الوصول إلى قواعد بيانات المستودع باستخدام تجمع SQL بلا خادم

تتيح لك مساحة عمل Azure Synapse Analytics إنشاء نوعين من قواعد البيانات أعلى مستودع بيانات Spark:

  • قواعد بيانات مستودع حيث يمكنك تعريف الجداول أعلى بيانات المستودع باستخدام دفاتر ملاحظات Apache Spark أو قوالب قاعدة البيانات أو Microsoft Dataverse (Common Data Service سابقًا). يمكن الاستعلام عن هذه الجداول باستخدام لغة T-SQL (Transact-SQL) باستخدام تجمع SQL بلا خادم.
  • قواعد بيانات SQL حيث يمكنك تحديد قواعد البيانات والجداول الخاصة بك مباشرة باستخدام تجمع SQL بلا خادم. يمكنك استخدام T-SQL CREATE DATABASE وCREATE EXTERNAL TABLE لتعريف العناصر وإضافة طرق عرض SQL وإجراءات ووظائف قيمة الجدول المضمنة أعلى الجداول.

رسم تخطيطي يوضح قواعد بيانات Lake وSQL التي أُنشئت أعلى ملفات Data Lake.

تركز هذه المقالة على قواعد بيانات المستودع في تجمع SQL بلا خادم في Azure Synapse Analytics.

يسمح لك Azure Synapse Analytics بإنشاء قواعد بيانات وجداول مستودع باستخدام Spark أو مصمم قاعدة البيانات، ثم تحليل البيانات في قواعد بيانات المستودع باستخدام تجمع SQL بلا خادم. تتوفر قواعد بيانات البحيرة والجداول (باركيه أو CSV المدعومة) التي تم إنشاؤها على تجمعات Apache Spark أو قوالب قاعدة بيانات البحيرة أو Dataverse تلقائيا للاستعلام باستخدام محرك تجمع SQL بلا خادم. تتوفر قواعد بيانات البحيرة والجداول التي تم تعديلها في تجمع SQL بلا خادم بعد مرور بعض الوقت. هناك تأخير حتى تظهر التغييرات التي تم إجراؤها في Spark أو مصمم قاعدة البيانات بلا خادم.

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

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

تتوفر قاعدة بيانات Spark default في سياق تجمع SQL بلا خادم كقاعدة بيانات مستودع تسمى default.

إشعار

لا يمكنك إنشاء بحيرة وقاعدة بيانات SQL في تجمع SQL بلا خادم بنفس الاسم.

لا يمكن تعديل الجداول في قواعد بيانات المستودع من تجمع SQL بلا خادم. استخدم مصمم قاعدة البيانات أو تجمعات Apache Spark لتعديل قاعدة بيانات بحيرة. يتيح لك تجمع SQL بلا خادم إجراء التغييرات التالية في قاعدة بيانات المستودع باستخدام أوامر T-SQL:

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

نموذج الأمان

يتم تأمين قواعد بيانات المستودع والجداول على مستويين:

  • طبقة التخزين الأساسية عن طريق تعيين لمستخدمي Microsoft Entra أحد الإجراءات التالية:
    • التحكم في الوصول المستند إلى الدور في Azure (Azure RBAC)
    • دور مراقبة الوصول القائم على السمات الخاصة بـ Azure (Azure ABAC)
    • أذونات قائمة التحكم بالوصول (ACL)
  • طبقة SQL حيث يمكنك تعريف مستخدم Microsoft Entra ومنح أذونات SQL للبيانات SELECT من الجداول التي تشير إلى بيانات المستودع.

نموذج أمان المستودع

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

يمكنك منح حق الوصول إلى البيانات الأساسية المستخدمة للجداول الخارجية إلى أساس أمان، مثل: مستخدم أو تطبيق Microsoft Entra مع كيان خدمة معين أو مجموعة أمان. للوصول إلى البيانات، امنح كلا الإذنين التاليين:

  • امنح الإذن read (R) على الملفات (مثل ملفات البيانات الأساسية للجدول).
  • امنح الإذن execute (X) على المجلد حيث يتم تخزين الملفات وعلى كل مجلد أصل يصل إلى الجذر. يمكنك قراءة المزيد حول هذه الأذونات على قوائم التحكم بالوصول (ACLs).

على سبيل المثال، في https://<storage-name>.dfs.core.windows.net/<fs>/synapse/workspaces/<synapse_ws>/warehouse/mytestdb.db/myparquettable/، تحتاج كيانات الأمان إلى:

  • execute (X) أذونات على كافة المجلدات بدءًا من <fs> إلى myparquettable.
  • أذونات read (R) على myparquettable وملفات داخل هذا المجلد، لتتمكن من قراءة جدول في قاعدة بيانات (متزامنة أو أصلية).

إذا كان أساس الأمان يتطلب القدرة على إنشاء كائنات أو إسقاط كائنات في قاعدة بيانات، يلزم توفر أذونات إضافية write (W) على المجلدات والملفات في مجلد المستودع . تعديل الكائنات في قاعدة بيانات غير ممكن من تجمع SQL بلا خادم، فقط من تجمعات Spark أو مصمم قاعدة البيانات.

نموذج أمان SQL

توفر مساحة عمل Azure Synapse نقطة نهاية T-SQL تتيح لك الاستعلام عن قاعدة بيانات المستودع باستخدام تجمع SQL بلا خادم. بالإضافة إلى الوصول إلى البيانات، تتيح لك واجهة SQL التحكم في من يمكنه الوصول إلى الجداول. تحتاج إلى تمكين المستخدم من الوصول إلى قواعد بيانات المستودع المشتركة باستخدام تجمع SQL بلا خادم. هناك نوعان من المستخدمين الذين يمكنهم الوصول إلى قواعد بيانات المستودع:

  • المسؤولون: تعيين دور مساحة عمل مسؤول Synapse SQL أو دور على مستوى الخادم sysadmin داخل تجمع SQL بلا خادم. يتمتع هذا الدور بالتحكم الكامل في جميع قواعد البيانات. سيكون لأدوار مسؤول Synapse ومسؤول Synapse SQL أيضًا كافة الأذونات فيما يتعلق بالعناصر المتزامنة في تجمع SQL بدون خادم بشكل افتراضي.
  • برامج قراءة مساحة العمل: امنح الأذونات على مستوى الخادم GRANT CONNECT ANY DATABASE و GRANT SELECT ALL USER SECURABLES على تجمع SQL بلا خادم لتسجيل دخول يمكن تسجيل الدخول من الوصول إلى أي قاعدة بيانات وقراءتها. قد يكون هذا اختياراً جيداً لتعيين وصول القارئ/غير المسؤول لمستخدم.
  • قارئات قاعدة البيانات: إنشاء مستخدمي قاعدة البيانات من معرف Microsoft Entra في قاعدة بيانات المستودع وإضافتهم إلى دور db_datareader ، ما يمكنهم من قراءة البيانات في قاعدة بيانات المستودع.

تعرف على المزيد حول تعيين التحكم في الوصول على قواعد البيانات المشتركة.

عناصر SQL المخصصة في قواعد بيانات المستودع

تسمح قواعد بيانات المستودع إنشاء عناصر T-SQL مخصصة، مثل المخططات والإجراءات وطرق العرض ووظائف قيمة الجدول المضمنة (iTVFs). لإنشاء عناصر SQL مخصصة، يجب عليك إنشاء مخطط حيث ستقوم بوضع العناصر. لا يمكن وضع كائنات SQL المخصصة في dbo المخطط لأنها محجوزة لجداول البحيرة المحددة في Spark أو مصمم قاعدة البيانات أو Dataverse.

هام

يجب إنشاء مخطط SQL مخصص حيث ستقوم بوضع عناصر SQL الخاصة بك. لا يمكن وضع كائنات SQL المخصصة في dbo المخطط. المخطط dbo محجوز لجداول المستودع التي تم إنشاؤها في الأصل في Spark أو مصمم قاعدة البيانات.

الأمثلة

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

في هذا المثال، نضيف مستخدم Microsoft Entra في قاعدة بيانات المستودع يمكنه قراءة البيانات عبر الجداول المشتركة. تتم إضافة المستخدمين في قاعدة بيانات المستودع عبر تجمع SQL بلا خادم. بعد ذلك، قم بتعيين المستخدم لدور db_datareader حتى يتمكن من قراءة البيانات.

CREATE USER [customuser@contoso.com] FROM EXTERNAL PROVIDER;
GO
ALTER ROLE db_datareader
ADD MEMBER [customuser@contoso.com];

إنشاء قارئ بيانات على مستوى مساحة العمل

تسجيل الدخول باستخدام أذونات GRANT CONNECT ANY DATABASE وGRANT SELECT ALL USER SECURABLES قادر على قراءة جميع الجداول باستخدام تجمع SQL بلا خادم، ولكن غير قادر على إنشاء قواعد بيانات SQL أو تعديل العناصر فيها.

CREATE LOGIN [wsdatareader@contoso.com] FROM EXTERNAL PROVIDER
GRANT CONNECT ANY DATABASE TO [wsdatareader@contoso.com]
GRANT SELECT ALL USER SECURABLES TO [wsdatareader@contoso.com]

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

إنشاء قاعدة بيانات Spark والاتصال بها باستخدام تجمع SQL بدون خادم

أولا، قم بإنشاء قاعدة بيانات Spark جديدة باسم mytestlakedb باستخدام مجموعة Spark التي قمت بإنشائها بالفعل في مساحة العمل الخاصة بك. يمكنك تحقيق ذلك، على سبيل المثال، باستخدام دفتر ملاحظات Spark C# مع عبارة .NET لـ Spark التالية:

spark.sql("CREATE DATABASE mytestlakedb")

بعد مهلة قصيرة، يمكنك رؤية قاعدة بيانات المستودع من تجمع SQL بلا خادم. على سبيل المثال، قم بتشغيل العبارة التالية من تجمع SQL بدون خادم.

SELECT * FROM sys.databases;

تحقق من mytestlakedb تضمين ذلك في النتائج.

إنشاء عناصر SQL المخصصة في قواعد بيانات المستودع

يوضح المثال التالي كيفية إنشاء طريقة عرض مخصصة وإجراء ودالة قيمة جدول مضمنة (iTVF) في المخطط reports:

CREATE SCHEMA reports
GO

CREATE OR ALTER VIEW reports.GreenReport
AS SELECT puYear, puMonth,
            fareAmount = SUM(fareAmount),
            tipAmount = SUM(tipAmount),
            mtaTax = SUM(mtaTax)
FROM dbo.green
GROUP BY puYear, puMonth
GO

CREATE OR ALTER PROCEDURE reports.GreenReportSummary
AS BEGIN
SELECT puYear, puMonth,
            fareAmount = SUM(fareAmount),
            tipAmount = SUM(tipAmount),
            mtaTax = SUM(mtaTax)
FROM dbo.green
GROUP BY puYear, puMonth
END
GO

CREATE OR ALTER FUNCTION reports.GreenDataReportMonthly(@year int)
RETURNS TABLE
RETURN ( SELECT puYear = @year, puMonth,
                fareAmount = SUM(fareAmount),
                tipAmount = SUM(tipAmount),
                mtaTax = SUM(mtaTax)
        FROM dbo.green
        WHERE puYear = @year
        GROUP BY puMonth )
GO