Bagikan melalui


Skema yang ditentukan pengguna untuk kumpulan SQL khusus di Azure Synapse Analytics

Artikel ini berfokus pada penyediaan beberapa tips untuk menggunakan skema T-SQL yang ditentukan pengguna untuk mengembangkan solusi dalam kumpulan SQL khusus.

Skema untuk batas aplikasi

Gudang data tradisional sering menggunakan database terpisah untuk membuat batasan aplikasi berdasarkan beban kerja, domain, atau keamanan.

Sebagai contoh, gudang data SQL Server tradisional mungkin menyertakan penahapan database, database gudang data, dan beberapa database data mart. Dalam topologi ini, setiap database beroperasi sebagai beban kerja dan batas keamanan dalam arsitektur.

Sebaliknya, kumpulan SQL khusus menjalankan seluruh beban kerja gudang data dalam satu database. Gabungan lintas database tidak diizinkan. Kumpulan SQL khusus mengharapkan semua tabel yang digunakan oleh gudang disimpan dalam satu database.

Catatan

Kumpulan SQL tidak mendukung kueri database silang dalam bentuk apa pun. Akibatnya, implementasi gudang data yang memanfaatkan pola ini perlu direvisi.

Rekomendasi

Berikut ini adalah rekomendasi untuk menggabungkan beban kerja, keamanan, domain, dan batasan fungsional dengan menggunakan skema yang ditentukan pengguna:

  • Gunakan satu database dalam kumpulan SQL khusus untuk menjalankan seluruh beban kerja gudang data Anda.
  • Konsolidasikan lingkungan gudang data Anda yang ada untuk menggunakan satu database kumpulan SQL khusus.
  • Manfaatkan skema yang ditentukan pengguna untuk menyediakan batas yang sebelumnya diterapkan menggunakan database.

Jika skema yang ditentukan pengguna belum pernah digunakan sebelumnya, maka Anda memiliki catatan yang bersih. Gunakan nama database lama sebagai dasar untuk skema yang ditentukan pengguna dalam database kumpulan SQL khusus.

Jika skema telah digunakan, maka Anda memiliki beberapa opsi:

  • Hapus nama skema warisan dan mulailah dari awal.
  • Pertahankan nama skema lama dengan menunda nama skema lama ke nama tabel.
  • Pertahankan nama skema warisan dengan mengimplementasikan tampilan atas tabel dalam skema tambahan untuk membuat kembali struktur skema lama.

Catatan

Pada pemeriksaan pertama, opsi 3 mungkin tampak seperti opsi yang paling menarik. Namun, kekurangan terlihat dalam detailnya. Tampilan hanya dapat dibaca di kumpulan SQL khusus. Setiap modifikasi data atau tabel perlu dilakukan terhadap tabel dasar. Opsi 3 juga memperkenalkan lapisan tampilan ke dalam sistem Anda. Anda mungkin ingin pertimbangan tambahan jika Anda sudah menggunakan tampilan dalam arsitektur Anda.

Contoh:

Menerapkan skema yang ditentukan pengguna berdasarkan nama database:

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
,       ...
);

Pertahankan nama skema warisan dengan menundanya hingga ke nama tabel. Gunakan skema untuk batas beban kerja:

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
,       ...
);

Pertahankan nama skema warisan menggunakan tampilan:

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
;

Catatan

Setiap perubahan dalam strategi skema perlu ditinjau dari model keamanan untuk database. Dalam banyak kasus, Anda mungkin dapat menyederhanakan model keamanan dengan menetapkan izin di tingkat skema. Jika diperlukan lebih banyak izin terperinci, maka Anda dapat menggunakan peran database.

Langkah berikutnya

Untuk tips pengembangan selengkapnya, buka gambaran pengembangan.