Mengelola skema dalam aplikasi SaaS menggunakan pola database per penyewa dengan Microsoft Azure SQL Database
Berlaku untuk: Azure SQL Database
Seiring aplikasi database berevolusi, perubahan pasti perlu dilakukan pada data referensi atau skema database. Pekerjaan pemeliharaan database juga perlu dilakukan secara berkala. Mengelola aplikasi yang menggunakan pola database per penyewa mengharuskan Anda menerapkan perubahan atau pekerjaan pemeliharaan ini di seluruh kumpulan database penyewa.
Tutorial ini mengeksplorasi dua skenario - menerapkan pembaruan data referensi untuk semua penyewa, dan membuat ulang indeks pada tabel yang berisi data referensi. Fitur Pekerjaan elastis ini digunakan untuk menjalankan tindakan tersebut di semua database penyewa, dan di database templat yang digunakan untuk membuat database penyewa baru.
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat agen pekerjaan
- Memicu pekerjaan T-SQL agar dijalankan di semua database penyewa
- Memperbarui data referensi di semua database penyewa
- Membuat indeks pada tabel di semua database penyewa
Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut ini diselesaikan:
- Aplikasi Database Wingtip Tickets SaaS Per Penyewa telah diterapkan. Untuk menerapkan dalam waktu kurang dari lima menit, lihat Menerapkan dan menjelajahi aplikasi Database Multi-penyewa Wingtip Tickets SaaS
- Azure PowerShell dipasang. Untuk detailnya, lihat Mulai menggunakan Azure PowerShell
- Versi terbaru SQL Server Management Studio (SSMS) telah dipasang. Mengunduh dan Memasang SSMS
Pengantar pola manajemen skema SaaS
Pola database per penyewa mengisolasi data penyewa secara efektif, tetapi menambah jumlah database yang perlu dikelola dan dipelihara. Pekerjaan Elastis memfasilitasi administrasi dan manajemen beberapa database. Fitur ini memungkinkan Anda menjalankan pekerjaan (skrip T-SQL) dengan aman dan andal pada sekelompok database penyewa. Pekerjaan dapat menerapkan perubahan data referensi umum dan skema di semua database penyewa dalam aplikasi. Pekerjaan Elastis juga dapat digunakan untuk memelihara database templat yang digunakan untuk membuat penyewa baru, guna memastikannya selalu memiliki data referensi dan skema terbaru.
Pekerjaan Elastis
Pada tahun 2024, pekerjaan elastis dirilis sebagai produk yang tersedia secara umum dengan fitur baru. Fitur terintegrasi Azure SQL Database, lihat pekerjaan database elastis.
Mendapatkan skrip aplikasi database Wingtip Tickets SaaS per penyewa
Skrip manajemen dan kode sumber aplikasi tersedia di repositori GitHub WingtipTicketsSaaS-DbPerTenant. Lihat panduan umum untuk langkah-langkah mengunduh dan membuka blokir skrip Wingtip Ticket SaaS.
Membuat database agen pekerjaan dan agen pekerjaan baru
Tutorial ini mengharuskan Anda menggunakan PowerShell untuk membuat agen pekerjaan dan database agen pekerjaan pendukungnya. Database agen pekerjaan menampung definisi pekerjaan, status pekerjaan, dan riwayat. Setelah agen pekerjaan dan database-nya dibuat, Anda dapat membuat dan memantau pekerjaan dengan segera.
- Di ISE PowerShell, buka …\Learning Modules\Schema Management\Demo-SchemaManagement.ps1.
- Tekan F5 untuk menjalankan skrip.
Skrip Demo-SchemaManagement.ps1 akan memanggil skrip Deploy-SchemaManagement.ps1 untuk membuat database bernama osagent di server katalog. Kemudian skrip ini akan membuat agen pekerjaan menggunakan database sebagai parameter.
Membuat pekerjaan untuk menyebarkan data referensi baru ke semua penyewa
Di aplikasi Wingtip Tickets, setiap database penyewa menyertakan serangkaian jenis tempat yang didukung. Setiap tempat memiliki jenis spesifik, yang mendefinisikan jenis peristiwa yang dapat diselenggarakan, dan menentukan gambar latar belakang yang digunakan dalam aplikasi. Agar aplikasi mendukung jenis peristiwa baru, data referensi ini harus diperbarui dan jenis tempat baru ditambahkan. Dalam latihan ini, Anda akan menerapkan pembaruan ke semua database penyewa untuk menambahkan dua jenis tempat tambahan: Motorcycle Racing dan Swimming Club.
Pertama, tinjau jenis tempat yang disertakan di setiap database penyewa. Sambungkan ke salah satu database penyewa di SQL Server Management Studio (SSMS), lalu periksa tabel VenueTypes. Anda juga dapat mengkueri tabel ini di editor Kueri di portal Microsoft Azure, yang diakses dari halaman database.
- Buka SSMS lalu sambungkan ke server penyewa: tenants1-dpt-<user>.database.windows.net
- Untuk mengonfirmasi bahwa Motorcycle Racing and Swimming Club saat ini tidak disertakan, telusuri ke database contosoconcerthall di server tenants1-dpt-<user> dan kueri tabel VenueTypes.
Sekarang mari kita buat pekerjaan untuk memperbarui tabel VenueTypes di semua database penyewa untuk menambahkan jenis tempat baru.
Untuk membuat pekerjaan baru, Anda menggunakan serangkaian prosedur tersimpan sistem pekerjaan yang dibuat di database jobagent ketika agen pekerjaan dibuat.
- Di SSMS, sambungkan ke server katalog: server catalog-dpt-<user>.database.windows.net
- Di SSMS, buka file …\Learning Modules\Schema Management\DeployReferenceData.sql
- Ubah pernyataan: SET @wtpUser = <user> dan ganti nilai User yang digunakan saat Anda menerapkan aplikasi Database Wingtip Tickets SaaS Per Penyewa
- Pastikan Anda tersambung ke database jobagent, lalu tekan F5 untuk menjalankan skrip
Amati elemen berikut di skrip DeployReferenceData.sql:
- sp_add_target_group membuat nama grup target DemoServerGroup.
- sp_add_target_group_member digunakan untuk menentukan kumpulan database target. Pertama, server tenants1-dpt-<user> ditambahkan. Jika server ditambahkan sebagai target, database di server tersebut akan disertakan pada saat pekerjaan dieksekusi. Kemudian database basetenantdb dan database adhocreporting (digunakan di tutorial selanjutnya) akan ditambahkan sebagai target.
- sp_add_job membuat pekerjaan bernama Referensi Penyebaran Data.
- sp_add_jobstep membuat langkah tugas yang berisi teks perintah T-SQL untuk memperbarui tabel referensi, VenueTypes.
- Tampilan yang tersisa dalam skrip menampilkan keberadaan objek dan memantau eksekusi pekerjaan. Gunakan kueri ini untuk meninjau nilai status di kolom siklus hidup untuk menentukan kapan pekerjaan diselesaikan di semua database target.
Setelah skrip selesai, Anda dapat memverifikasi bahwa data referensi telah diperbarui. Di SSMS, telusuri database contosoconcerthall di server tenants1-dpt-<user> dan lakukan kueri tabel VenueTypes. Periksa apakah Motorcycle Racing dan Swimming Club kini telah muncul.
Membuat pekerjaan untuk mengelola indeks tabel referensi
Latihan ini menggunakan pekerjaan untuk membuat kembali indeks pada kunci utama tabel referensi. Ini adalah operasi pemeliharaan database umum yang mungkin dilakukan setelah memuat data dalam jumlah besar.
Buat pekerjaan menggunakan prosedur tersimpan 'sistem' pekerjaan yang sama.
- Buka SSMS lalu sambungkan ke server catalog-dpt-<user>.database.windows.net
- Buka file …\Learning Modules\Schema Management\OnlineReindex.sql
- Klik kanan, pilih Koneksi, dan sambungkan ke server catalog-dpt-user.database.windows.net<>, jika belum tersambung
- Pastikan Anda tersambung ke database jobagent, lalu tekan F5 untuk menjalankan skrip
Amati elemen berikut dalam skrip OnlineReindex.sql ini:
- sp_add_job membuat pekerjaan baru yang disebut "Online Reindex PK__VenueTyp__265E44FD7FD4C885"
- sp_add_jobstep membuat langkah pekerjaan yang berisi teks perintah T-SQL untuk memperbarui indeks
- Tampilan yang tersisa dalam eksekusi pekerjaan monitor skrip. Gunakan kueri ini untuk meninjau nilai status di kolom siklus hidup untuk menentukan kapan pekerjaan telah berhasil diselesaikan di semua anggota grup target.
Langkah berikutnya
Dalam tutorial ini, Anda akan mempelajari cara:
- Membuat agen pekerjaan dijalankan di seluruh pekerjaan T-SQL di beberapa database
- Memperbarui data referensi di semua database penyewa
- Membuat indeks pada tabel di semua database penyewa
Selanjutnya, coba tutorial pelaporan Ad hoc untuk menjelajahi menjalankan kueri terdistribusi di seluruh database penyewa.