Aracılığıyla paylaş


Synapse SQL içinde kullanıcı tanımlı şemalar

Aşağıdaki bölümlerde Synapse SQL içinde çözümler geliştirmek için T-SQL kullanıcı tanımlı şemaları kullanmaya yönelik çeşitli ipuçları bulabilirsiniz.

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

Geleneksel analiz mimarisi genellikle iş yüküne, etki alanına veya güvenliğe dayalı uygulama sınırları oluşturmak için ayrı veritabanları kullanır. Örneğin, geleneksel bir SQL Server analiz altyapısı bir hazırlama veritabanı, bir analiz veritabanı ve veri reyonu veritabanları içerebilir. Bu topolojide her veritabanı, mimaride bir iş yükü ve güvenlik sınırı olarak çalışır.

Bunun yerine Synapse SQL, analiz iş yükünün tamamını tek bir veritabanında çalıştırır. Veritabanları arası birleştirmelere izin verilmez. Synapse SQL, ambar tarafından kullanılan tüm tabloların tek veritabanında depolanmasını bekler.

Not

Ayrılmış SQL havuzları, herhangi bir türde çapraz veritabanı sorgularını desteklemez. Sonuç olarak, bu desenden yararlanan analiz uygulamalarının düzeltilmesi gerekir. Sunucusuz SQL havuzu veritabanları arası sorguları destekler.

Kullanıcı tanımlı şema önerileri

Kullanıcı tanımlı şemaları kullanarak iş yüklerini, güvenlik, etki alanı ve işlevsel sınırları birleştirmeye yönelik öneriler de dahildir:

  • Analiz iş yükünüzün tamamını çalıştırmak için tek bir veritabanı kullanın.
  • Bir veritabanı kullanmak için mevcut analiz 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. Synapse SQL 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ırma ve yeni bir başlangıç
  • Eski şema adlarını, eski şema adını tablo adında önceden bekleterek tutun
  • Eski şema yapısını yeniden oluşturan ek bir şemada tablo üzerinde görünümler uygulayarak eski şema adlarını koruyun.

Not

İlk incelemede, seçenek 3 en çekici seçim gibi görünebilir. Görünümler Synapse SQL'de 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. Mimarinizde zaten görünümleri kullanıyorsanız buna biraz daha fazla kafa yormak isteyebilirsiniz.

Örnekler

Veritabanı adlarına göre kullanıcı tanımlı şemalar uygulama.

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

Eski şema adlarını tablo adında önceden bekleterek tutun. İş 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 analytics 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 analytics 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 analytics 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 analytics tables in the analytics 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, veritabanı için güvenlik modelinin gözden geçirilmesini gerektirir. Çoğu durumda, şema düzeyinde izinler atayarak güvenlik modelini basitleştirebilirsiniz.

Daha ayrıntılı izinler gerekiyorsa veritabanı rollerini kullanabilirsiniz. Veritabanı rolleri hakkında daha fazla bilgi için Veritabanı rollerini ve kullanıcılarını yönetme makalesine bakın.

Sonraki adımlar

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