Azure Synapse Analytics'te ayrılmış SQL havuzları için kullanıcı tanımlı şemalar

Bu makale, ayrılmış SQL havuzunda çözüm geliştirmek için T-SQL kullanıcı tanımlı şemaları kullanmaya yönelik birkaç ipucu sağlamaya odaklanmaktadır.

Uygulama sınırları için şemalar

Geleneksel veri ambarları genellikle iş yüküne, etki alanına veya güvenliğe göre uygulama sınırları oluşturmak için ayrı veritabanları kullanır.

Örneğin, geleneksel bir SQL Server veri ambarı hazırlama veritabanı, veri ambarı veritabanı ve bazı veri reyonu veritabanları içerebilir. Bu topolojide her veritabanı, mimaride bir iş yükü ve güvenlik sınırı olarak çalışır.

Buna karşılık, ayrılmış bir SQL havuzu veri ambarı iş yükünün tamamını tek bir veritabanında çalıştırır. Veritabanları arası birleştirmelere izin verilmez. Ayrılmış SQL havuzu, ambar tarafından kullanılan tüm tabloların tek bir veritabanında depolanmasını bekler.

Not

SQL havuzu herhangi bir türde çapraz veritabanı sorgularını desteklemez. Sonuç olarak, bu desenden yararlanan veri ambarı uygulamalarının düzeltilmesi gerekir.

Öneriler

Aşağıda, kullanıcı tanımlı şemaları kullanarak iş yüklerini, güvenlik, etki alanı ve işlevsel sınırları birleştirmeye yönelik öneriler yer almaktadır:

  • Veri ambarı iş yükünüzün tamamını çalıştırmak için ayrılmış sql havuzundaki bir veritabanını kullanın.
  • Ayrılmış bir SQL havuzu veritabanı kullanmak için mevcut veri ambarı ortamınızı birleştirin.
  • Daha önce veritabanları kullanılarak uygulanan sınırı sağlamak için kullanıcı tanımlı şemalardan yararlanın.

Kullanıcı tanımlı şemalar daha önce kullanılmadıysa temiz bir sayfanız olur. Ayrılmış SQL havuzu veritabanında kullanıcı tanımlı şemalarınız için temel olarak eski veritabanı adını kullanın.

Şemalar zaten kullanılmışsa birkaç seçeneğiniz vardır:

  • Eski şema adlarını kaldırın ve yeni bir başlangıç başlatın.
  • Eski şema adlarını, eski şema adını tablo adında önceden bekleterek koruyun.
  • Eski şema yapısını yeniden oluşturmak için ek bir şemada tablo üzerinde görünümler uygulayarak eski şema adlarını koruyun.

Not

İlk inceleme seçeneğinde 3 en çekici seçenek gibi görünebilir. Bununla birlikte, şeytan ayrıntıdadır. Görünümler ayrılmış SQL havuzunda salt okunur durumdadır. Herhangi bir veri veya tablo değişikliğinin temel tabloda gerçekleştirilmesi gerekir. 3. seçenek, sisteminize bir görünüm katmanı da ekler. Zaten mimarinizde görünümler kullanıyorsanız, bunu biraz daha düşünmek isteyebilirsiniz.

Örnekler:

Veritabanı adlarına göre kullanıcı tanımlı şemalar uygulayın:

CREATE SCHEMA [stg]; -- stg previously database name for staging database
GO
CREATE SCHEMA [edw]; -- edw previously database name for the data warehouse
GO
CREATE TABLE [stg].[customer] -- create staging tables in the stg schema
(       CustKey BIGINT NOT NULL
,       ...
);
GO
CREATE TABLE [edw].[customer] -- create data warehouse tables in the edw schema
(       CustKey BIGINT NOT NULL
,       ...
);

Eski şema adlarını tablo adında önceden bekleterek saklayın. İş yükü sınırı için şemaları kullanın:

CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- edw defines the data warehouse boundary
GO
CREATE TABLE [stg].[dim_customer] --pre-pend the old schema name to the table and create in the staging boundary
(       CustKey BIGINT NOT NULL
,       ...
);
GO
CREATE TABLE [edw].[dim_customer] --pre-pend the old schema name to the table and create in the data warehouse boundary
(       CustKey BIGINT NOT NULL
,       ...
);

Görünümleri kullanarak eski şema adlarını koruyun:

CREATE SCHEMA [stg]; -- stg defines the staging boundary
GO
CREATE SCHEMA [edw]; -- stg defines the data warehouse boundary
GO
CREATE SCHEMA [dim]; -- edw defines the legacy schema name boundary
GO
CREATE TABLE [stg].[customer] -- create the base staging tables in the staging boundary
(       CustKey    BIGINT NOT NULL
,       ...
)
GO
CREATE TABLE [edw].[customer] -- create the base data warehouse tables in the data warehouse boundary
(       CustKey    BIGINT NOT NULL
,       ...
)
GO
CREATE VIEW [dim].[customer] -- create a view in the legacy schema name boundary for presentation consistency purposes only
AS
SELECT  CustKey
,       ...
FROM    [edw].customer
;

Not

Şema stratejisindeki herhangi bir değişiklik için veritabanı için güvenlik modelinin gözden geçirilmesi gerekir. Çoğu durumda, şema düzeyinde izinler atayarak güvenlik modelini basitleştirebilirsiniz. Daha ayrıntılı izinler gerekiyorsa veritabanı rollerini kullanabilirsiniz.

Sonraki adımlar

Daha fazla geliştirme ipucu için bkz. geliştirmeye genel bakış.