Azure Synapse Analytics'te sunucusuz SQL havuzunu kullanarak göl veritabanlarına erişme

Azure Synapse Analytics çalışma alanı, Spark veri gölü üzerinde iki tür veritabanı oluşturmanıza olanak tanır:

  • Apache Spark not defterlerini , veritabanı şablonlarını veya Microsoft Dataverse'i (daha önce Common Data Service) kullanarak göl verilerinin üzerinde tablolar tanımlayabildiğiniz Lake veritabanları. Bu tablolar sunucusuz SQL havuzu kullanılarak T-SQL (Transact-SQL) dili kullanılarak sorgulanabilir.
  • Sunucusuz SQL havuzlarını kullanarak doğrudan kendi veritabanlarınızı ve tablolarınızı tanımlayabileceğiniz SQL veritabanları. Nesneleri tanımlamak ve tabloların üstüne ek SQL görünümleri, yordamlar ve satır içi tablo-değer işlevleri eklemek için T-SQL CREATE DATABASE, CREATE EXTERNAL TABLE kullanabilirsiniz.

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

Bu makale, Azure Synapse Analytics'teki sunucusuz sql havuzundaki göl veritabanlarına odaklanır.

Azure Synapse Analytics, Spark veya veritabanı tasarımcısını kullanarak göl veritabanları ve tabloları oluşturmanıza ve ardından sunucusuz SQL havuzunu kullanarak göl veritabanlarındaki verileri analiz etmenizi sağlar. Apache Spark havuzlarında, veritabanı şablonlarında veya Dataverse'de oluşturulan göl veritabanları ve tablolar (parquet veya CSV destekli), sunucusuz SQL havuzu altyapısıyla sorgulama için otomatik olarak kullanılabilir. Değiştirilen göl veritabanları ve tabloları, bir süre sonra sunucusuz SQL havuzunda kullanılabilir. Spark'ta veya Veritabanında tasarlanan değişiklikler sunucusuz olarak görünene kadar bir gecikme olacaktır.

Göl veritabanını yönetme

Spark tarafından oluşturulan göl veritabanlarını yönetmek için Apache Spark havuzlarını veya Veritabanı tasarımcısını kullanabilirsiniz. Örneğin, Spark havuzu işi aracılığıyla bir göl veritabanı oluşturun veya silin. Sunucusuz SQL havuzunu kullanarak göl veritabanı veya göl veritabanlarındaki nesneleri oluşturamazsınız.

Spark default veritabanı sunucusuz SQL havuzu bağlamında adlı defaultbir göl veritabanı olarak kullanılabilir.

Dekont

Sunucusuz SQL havuzunda aynı ada sahip bir göl ve SQL veritabanı oluşturamazsınız.

Göl veritabanlarındaki tablolar sunucusuz SQL havuzundan değiştirilemez. Bir göl veritabanını değiştirmek için Veritabanı tasarımcısını veya Apache Spark havuzlarını kullanın. Sunucusuz SQL havuzu, Transact-SQL komutlarını kullanarak bir göl veritabanında aşağıdaki değişiklikleri yapmanızı sağlar:

  • Bir göl veritabanında görünümleri, yordamları, satır içi tablo değeri işlevlerini ekleme, değiştirme ve bırakma.
  • Veritabanı kapsamlı Microsoft Entra kullanıcılarını ekleme ve kaldırma.
  • db_datareader rolüne Microsoft Entra veritabanı kullanıcılarını ekleyin veya kaldırın. db_datareader rolündeki Microsoft Entra veritabanı kullanıcıları göl veritabanındaki tüm tabloları okuma iznine sahiptir, ancak diğer veritabanlarındaki verileri okuyamaz.

Güvenlik modeli

Göl veritabanları ve tabloları iki düzeyde güvenli hale getirilmiştir:

  • Microsoft Entra kullanıcılarına aşağıdakilerden birini atayarak temel alınan depolama katmanı:
    • Azure rol tabanlı erişim denetimi (Azure RBAC)
    • Azure öznitelik tabanlı erişim denetimi (Azure ABAC) rolü
    • ACL izinleri
  • Bir Microsoft Entra kullanıcısı tanımlayabileceğiniz ve göl verilerine başvuran tablolardan SELECT verilerine SQL izinleri verebileceğiniz SQL katmanı.

Göl güvenlik modeli

Göl veritabanı dosyalarına erişim, depolama katmanındaki göl izinleri kullanılarak denetlenmektedir. Yalnızca Microsoft Entra kullanıcıları göl veritabanlarındaki tabloları kullanabilir ve göldeki verilere kendi kimliklerini kullanarak erişebilir.

Dış tablolar için kullanılan temel alınan verilere bir güvenlik sorumlusuna erişim vekleyebilirsiniz; örneğin: kullanıcı, atanmış hizmet sorumlusuna sahip bir Microsoft Entra uygulaması veya bir güvenlik grubu. Veri erişimi için aşağıdaki izinlerin her ikisini de verin:

  • Dosyalar üzerinde izin verin read (R) (örneğin, tablonun temel veri dosyaları).
  • Dosyaların depolandığı klasörde ve köke kadar olan her üst klasörde izin verin execute (X) . Erişim denetim listeleri (ACL'ler) sayfasında bu izinler hakkında daha fazla bilgi edinebilirsiniz.

Örneğin, içinde https://<storage-name>.dfs.core.windows.net/<fs>/synapse/workspaces/<synapse_ws>/warehouse/mytestdb.db/myparquettable/güvenlik sorumluları şunları gerektirmektedir:

  • execute (X) ile başlayan <fs> myparquettabletüm klasörlerdeki izinler.
  • read (R) veritabanındaki bir tabloyu (eşitlenmiş veya özgün tablo) okuyabilmek için ve bu klasörün içindeki dosyalar üzerindeki myparquettable izinler.

Bir güvenlik sorumlusu veritabanında nesne oluşturma veya nesneleri bırakma özelliğini gerektiriyorsa, klasördeki klasörler ve dosyalar warehouse üzerinde ek write (W) izinler gerekir. Bir veritabanındaki nesneleri değiştirmek sunucusuz SQL havuzundan, yalnızca Spark havuzlarından veya veritabanı tasarımcısından mümkün değildir.

SQL güvenlik modeli

Azure Synapse çalışma alanı, sunucusuz SQL havuzunu kullanarak göl veritabanını sorgulamanızı sağlayan bir T-SQL uç noktası sağlar. SQL arabirimi, veri erişimine ek olarak tablolara kimlerin erişebileceğini denetlemenizi sağlar. Bir kullanıcının sunucusuz SQL havuzunu kullanarak paylaşılan göl veritabanlarına erişmesini etkinleştirmeniz gerekir. Göl veritabanlarına erişebilecek iki tür kullanıcı vardır:

  • Yönetici istrator'lar:Synapse SQL Yönetici istrator çalışma alanı rolü veya sunucusuz SQL havuzu içindeki sysadmin sunucu düzeyi rolü. Bu rol tüm veritabanları üzerinde tam denetime sahiptir. Synapse Yönetici istrator ve Synapse SQL Yönetici istrator rolleri de sunucusuz SQL havuzundaki tüm nesneler üzerinde varsayılan olarak tüm izinlere sahiptir.
  • Çalışma alanı okuyucuları: Sunucu düzeyinde izinler verin HERHANGİ Bİr VERITABANıNA BAĞLANIN ve SELECT SELECT ALL USER SECURABLES'ı sunucusuz SQL havuzunda oturum açmanın herhangi bir veritabanına erişmesini ve bunları okumasını sağlayacak bir oturum açma işlemine verin. Bu, kullanıcıya okuyucu/yönetici olmayan erişim atamak için iyi bir seçim olabilir.
  • Veritabanı okuyucuları: Göl veritabanınızda Microsoft Entra Id'den veritabanı kullanıcıları oluşturun ve bunları göl veritabanındaki verileri okumalarını sağlayacak db_datareader role ekleyin.

Paylaşılan veritabanlarında erişim denetimini ayarlama hakkında daha fazla bilgiyi burada bulabilirsiniz.

Göl veritabanlarındaki özel SQL nesneleri

Lake veritabanları şemalar, yordamlar, görünümler ve satır içi tablo değeri işlevleri (iTVFs) gibi özel T-SQL nesnelerinin oluşturulmasına olanak sağlar. Özel SQL nesneleri oluşturmak için, nesneleri yerleştireceğiniz bir şema oluşturmanız GEREKIR . Özel SQL nesneleri Spark, veritabanı tasarımcısı veya Dataverse'de dbo tanımlanan göl tabloları için ayrıldığından şemaya yerleştirilemez.

Önemli

SQL nesnelerinizi yerleştireceğiniz özel SQL şeması oluşturmanız gerekir. Özel SQL nesneleri şemaya dbo yerleştirilemez. Şema dbo , başlangıçta Spark veya veritabanı tasarımcısında oluşturulan göl tabloları için ayrılmıştır.

Örnekler

Göl veritabanında SQL veritabanı okuyucusu oluşturma

Bu örnekte, göl veritabanına paylaşılan tablolar aracılığıyla veri okuyabilen bir Microsoft Entra kullanıcısı ekliyoruz. Kullanıcılar, sunucusuz SQL havuzu aracılığıyla göl veritabanına eklenir. Ardından kullanıcıyı verileri okuyabilmesi için db_datareader rolüne atayın.

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

Çalışma alanı düzeyinde veri okuyucu oluşturma

ve GRANT SELECT ALL USER SECURABLES izinleri olan GRANT CONNECT ANY DATABASE bir oturum açma işlemi sunucusuz SQL havuzunu kullanarak tüm tabloları okuyabilir, ancak SQL veritabanları oluşturamaz veya içindeki nesneleri değiştiremez.

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]

Bu betik, Lake veritabanlarındaki herhangi bir tabloyu okuyabilen yönetici ayrıcalıkları olmayan kullanıcılar oluşturmanıza olanak tanır.

Sunucusuz SQL havuzu ile Spark veritabanı oluşturma ve bu veritabanına bağlanma

İlk olarak, çalışma alanınızda önceden oluşturduğunuz bir Spark kümesini kullanarak adlı mytestdb yeni bir Spark veritabanı oluşturun. Örneğin, Spark için aşağıdaki .NET deyimiyle bir Spark C# Not Defteri kullanarak bunu başarabilirsiniz:

spark.sql("CREATE DATABASE mytestlakedb")

Kısa bir gecikmeden sonra sunucusuz SQL havuzundan göl veritabanını görebilirsiniz. Örneğin, sunucusuz SQL havuzundan aşağıdaki deyimi çalıştırın.

SELECT * FROM sys.databases;

Sonuçlara dahil olduğunu mytestlakedb doğrulayın.

Lake veritabanında özel SQL nesneleri oluşturma

Aşağıdaki örnekte şemada özel görünüm, yordam ve satır içi tablo-değer işlevinin (iTVF) nasıl oluşturulacağı reports gösterilmektedir:

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

Sonraki adımlar