Bagikan melalui


Mengakses database lake menggunakan kumpulan SQL tanpa server di Azure Synapse Analytics

Ruang kerja Azure Synapse Analytics memungkinkan Anda membuat dua jenis database di atas data lake Spark:

  • Database lake tempat Anda dapat menentukan tabel di atas data lake menggunakan buku catatan Apache Spark, templat database, atau Microsoft Dataverse (sebelumnya Common Data Service). Tabel ini akan tersedia untuk kueri menggunakan bahasa T-SQL (Transact-SQL) menggunakan kumpulan SQL tanpa server.
  • Database SQL tempat Anda dapat menentukan database dan tabel Anda sendiri secara langsung menggunakan kumpulan SQL tanpa server. Anda dapat menggunakan T-SQL CREATE DATABASE, CREATE EXTERNAL TABLE untuk menentukan objek dan menambahkan tampilan SQL tambahan, prosedur, dan fungsi nilai tabel sebaris di atas tabel.

Diagram that shows Lake and SQL databases that are created on top of Data Lake files.

Artikel ini berfokus pada database lake di kumpulan SQL tanpa server di Azure Synapse Analytics.

Azure Synapse Analytics memungkinkan Anda membuat tabel dan database lake menggunakan Spark atau perancang database, lalu menganalisis data di database lake menggunakan kumpulan SQL tanpa server. Tabel dan database lake (didukung Parket atau CSV) yang dibuat di kumpulan Apache Spark, templat database, atau Dataverse secara otomatis tersedia untuk proses kueri dengan mesin kumpulan SQL tanpa server. Tabel dan database lake yang dimodifikasi akan tersedia di kumpulan SQL tanpa server setelah beberapa waktu. Akan ada penundaan hingga perubahan dilakukan di Spark atau Database yang dirancang muncul tanpa server.

Mengelola database Lake

Untuk mengelola database lake yang dibuat Spark, Anda dapat menggunakan kumpulan Apache Spark atau Perancang database. Misalnya, buat atau hapus database Lake melalui pekerjaan kumpulan Spark. Anda tidak dapat membuat database lake atau objek di database lake menggunakan kumpulan SQL tanpa server.

Database default Spark tersedia dalam konteks kumpulan SQL tanpa server sebagai database lake yang disebut default.

Catatan

Anda tidak dapat membuat database lake dan SQL di kumpulan SQL tanpa server dengan nama yang sama.

Tabel di database lake tidak dapat dimodifikasi dari kumpulan SQL tanpa server. Gunakan Perancang database atau kumpulan Apache Spark untuk memodifikasi database Lake. Kumpulan SQL tanpa server memungkinkan Anda membuat perubahan berikut dalam database lake menggunakan perintah T-SQL:

  • Menambahkan, mengubah, dan menghilangkan tampilan, prosedur, fungsi nilai tabel sebaris di database lake.
  • Menambahkan dan menghapus pengguna Microsoft Entra dengan cakupan database.
  • Tambahkan atau hapus pengguna database Microsoft Entra ke peran db_datareader . Pengguna database Microsoft Entra dalam peran db_datareader memiliki izin untuk membaca semua tabel di database lake, tetapi tidak dapat membaca data dari database lain.

Model keamanan

Database dan tabel lake diamankan di dua tingkat:

  • Lapisan penyimpanan yang mendasar dengan menetapkan ke pengguna Microsoft Entra salah satu hal berikut ini:
    • Kontrol akses berbasis peran Azure (Azure RBAC)
    • Kontrol akses berbasis atribut Azure (Azure ABAC)
    • Izin ACL
  • Lapisan SQL tempat Anda dapat menentukan pengguna Microsoft Entra dan memberikan izin SQL ke data SELECT dari tabel yang merujuk data lake.

Model keamanan lake

Akses ke file database lake dikontrol menggunakan izin lake pada lapisan penyimpanan. Hanya pengguna Microsoft Entra yang dapat menggunakan tabel dalam database lake, dan mereka dapat mengakses data di lake menggunakan identitas mereka sendiri.

Anda dapat memberikan akses ke data dasar yang digunakan untuk tabel eksternal ke prinsip keamanan, seperti: pengguna, aplikasi Microsoft Entra dengan perwakilan layanan yang ditetapkan, atau grup keamanan. Untuk akses data, berikan keduanya izin berikut:

  • Berikan izin read (R) pada file (seperti file data dasar tabel).
  • Berikan izin execute (X) pada folder tempat file disimpan dan pada setiap folder induk hingga akar. Anda dapat membaca selengkapnya tentang izin ini di halaman Daftar Kontrol Akses (ACL).

Misalnya, di https://<storage-name>.dfs.core.windows.net/<fs>/synapse/workspaces/<synapse_ws>/warehouse/mytestdb.db/myparquettable/, prinsipal keamanan memerlukan:

  • Izin execute (X) di semua folder mulai dari <fs> hingga myparquettable.
  • Izin read (R) di myparquettable and file di dalam folder tersebut, agar dapat membaca tabel di database (yang disinkronkan atau asli).

Jika prinsip keamanan memerlukan kemampuan untuk membuat objek atau menghilangkan objek dalam database, izin tambahan write (W) diperlukan pada folder dan file di warehouse folder. Memodifikasi objek dalam database tidak dimungkinkan dari kumpulan SQL tanpa server, hanya dari kumpulan Spark dan perancang database.

Model keamanan SQL

Ruang kerja Azure Synapse memberikan titik akhir T-SQL yang memungkinkan Anda mengkueri database lake menggunakan kumpulan SQL tanpa server. Selain akses data, antarmuka SQL memungkinkan Anda mengontrol siapa yang dapat mengakses tabel. Anda harus mengaktifkan pengguna untuk mengakses database Lake bersama menggunakan kumpulan SQL tanpa server. Ada dua jenis pengguna yang dapat mengakses database lake:

  • Administrator: Tetapkan peran ruang kerja Administrator SQL Synapse atau peran tingkat server sysadmin di dalam kumpulan SQL tanpa server. Peran ini memiliki kontrol penuh atas semua database. Peran Administrator Synapse dan Administrator SQL Synapse juga memiliki semua izin di objek yang disinkronkan di kumpulan SQL tanpa server secara default.
  • Pembaca ruang kerja: Berikan izin tingkat server GRANT CONNECT ANY DATABASE dan GRANT SELECT ALL USER SECURABLES pada kumpulan SQL tanpa server ke proses masuk yang akan memungkinkan proses masuk untuk mengakses serta membaca database apa pun. Ini mungkin pilihan yang baik untuk menetapkan akses pembaca/non-admin ke pengguna.
  • Pembaca database: Membuat pengguna database dari ID Microsoft Entra di database lake Anda dan menambahkannya ke peran db_datareader , yang akan memungkinkan mereka membaca data di database lake.

Pelajari selengkapnya tentang mengatur kontrol akses pada database bersama di sini.

Objek SQL kustom di database lake

Database lake mengizinkan pembuatan objek T-SQL kustom, seperti skema, prosedur, tampilan, dan fungsi nilai tabel sebaris (iTVFs). Untuk membuat objek SQL kustom, Anda HARUS membuat skema tempat Anda akan menempatkan objek. Objek SQL kustom tidak dapat ditempatkan dalam skema dbo karena dicadangkan untuk tabel lake yang ditentukan dalam Spark, perancang database, atau Dataverse.

Penting

Anda harus membuat skema SQL kustom tempat Anda akan menempatkan objek SQL Anda. Objek SQL kustom tidak dapat ditempatkan dalam skema dbo. Skema dbo ini dicadangkan untuk tabel lake yang awalnya dibuat di Spark atau perancang database.

Contoh

Membuat pembaca database SQL di database lake

Dalam contoh ini, kami menambahkan pengguna Microsoft Entra di database lake yang dapat membaca data melalui tabel bersama. Pengguna ditambahkan di database lake melalui kumpulan SQL tanpa server. Kemudian, tetapkan pengguna ke peran db_datareader sehingga mereka dapat membaca data.

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

Membuat pembaca data tingkat ruang kerja

Proses masuk dengan izin GRANT CONNECT ANY DATABASE dan GRANT SELECT ALL USER SECURABLES dapat membaca semua tabel menggunakan kumpulan SQL tanpa server, tetapi tidak dapat membuat database SQL atau memodifikasi objek di dalamnya.

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]

Skrip ini memungkinkan Anda membuat pengguna tanpa hak istimewa admin yang dapat membaca tabel apa pun di database Lake.

Membuat dan menghubungkan ke {i>database

Pertama-tama buat database Spark baru bernama mytestdb menggunakan kluster Spark yang telah Anda buat di ruang kerja Anda. Anda dapat mencapainya, misalnya, menggunakan Notebook Spark C# dengan pernyataan .NET untuk Spark berikut ini:

spark.sql("CREATE DATABASE mytestlakedb")

Setelah beberapa saat, Anda dapat melihat database lake dari kumpulan SQL tanpa server. Misalnya, jalankan pernyataan berikut dari kumpulan SQL tanpa server Anda.

SELECT * FROM sys.databases;

Verifikasi apakah mytestlakedb disertakan dalam hasil.

Membuat objek SQL kustom di database lake

Contoh berikut menunjukkan cara membuat tampilan, prosedur, dan fungsi nilai tabel sebaris (iTVF) kustom di skema 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

Langkah berikutnya