Bagikan melalui


Pelajari cara menyediakan penyewa baru dan mendaftarkannya di katalog

Berlaku untuk:Azure SQL Database

Dalam tutorial ini, Anda belajar cara menyediakan dan katalog pola SaaS. Anda juga mempelajari cara penerapannya di aplikasi database-per-tenant Wingtip Tickets SaaS. Anda membuat dan menginisialisasi database penyewa baru dan mendaftarkannya di katalog penyewa aplikasi. Katalog adalah database yang mempertahankan pemetaan antara banyak penyewa aplikasi SaaS dan data mereka. Katalog memainkan peran penting dalam mengarahkan permintaan aplikasi dan manajemen ke database yang benar.

Dalam tutorial ini, Anda akan mempelajari cara:

  • Menyediakan satu penyewa baru.
  • Menyediakan batch penyewa tambahan.

Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut ini diselesaikan:

Pengenalan pola katalog SaaS

Dalam aplikasi SaaS multitenant yang didukung database, penting untuk mengetahui di mana informasi untuk setiap penyewa disimpan. Dalam pola katalog SaaS, database katalog digunakan untuk menahan pemetaan antara setiap penyewa dan database tempat data mereka disimpan. Pola ini berlaku setiap kali data penyewa didistribusikan di beberapa database.

Setiap penyewa diidentifikasi oleh kunci dalam katalog, yang dipetakan ke lokasi database mereka. Di aplikasi Tiket Wingtip, kuncinya terbentuk dari hash nama penyewa. Skema ini memungkinkan aplikasi untuk membangun kunci dari nama penyewa yang termasuk dalam URL aplikasi. Skema kunci penyewa lainnya dapat digunakan.

Katalog memungkinkan nama atau lokasi database diubah dengan dampak minimal pada aplikasi. Dalam model database multitenant, kemampuan ini juga mengakomodasi pemindahan penyewa antar database. Katalog juga dapat digunakan untuk menunjukkan apakah penyewa atau database offline untuk pemeliharaan atau tindakan lainnya. Kemampuan ini dieksplorasi dalam Tutorial Pulihkan penyewa tunggal.

Katalog juga dapat menyimpan metadata penyewa atau database tambahan, seperti versi skema, paket layanan, atau SLA yang ditawarkan kepada penyewa. Katalog dapat menyimpan informasi lain yang memungkinkan manajemen aplikasi, dukungan pelanggan, atau Azure DevOps.

Di luar aplikasi SaaS, katalog dapat mengaktifkan alat database. Dalam sampel database-per-penyewa Wingtip Tickets SaaS, katalog digunakan untuk mengaktifkan kueri lintas penyewa, yang dieksplorasi dalam Tutorial pelaporan Ad hoc. Manajemen pekerjaan lintas database dieksplorasi dalam tutorial Manajemen Skema dan Analitik penyewa.

Dalam contoh SaaS Tiket Wingtip, katalog diimplementasikan dengan menggunakan fitur Manajemen Shard dari perpustakaan klien Elastic Database (EDCL). EDCL tersedia di Java dan .NET Framework. EDCL memungkinkan aplikasi untuk membuat, mengelola, dan menggunakan peta pecahan yang didukung database.

Peta shard berisi daftar pecahan (database) dan pemetaan antara kunci (penyewa) dan pecahan. Fungsi EDCL digunakan selama penyediaan penyewa untuk membuat entri dalam peta shard. Mereka digunakan pada waktu proses oleh aplikasi untuk menyambungkan ke database yang benar. EDCL menyimpan informasi koneksi untuk meminimalkan lalu lintas ke database katalog dan mempercepat aplikasi.

Penting

Data pemetaan dapat diakses dalam database katalog, tetapi jangan mengeditnya. Edit data pemetaan dengan menggunakan API Elastic Database Client Library saja. Secara langsung memanipulasi data pemetaan berisiko merusak katalog dan tidak didukung.

Pengantar pola penyediaan SaaS

Saat Anda menambahkan penyewa baru di aplikasi SaaS yang menggunakan model database penyewa tunggal, Anda harus menyediakan database penyewa baru. Database harus dibuat di lokasi dan tingkat layanan yang sesuai. Ini juga harus diinisialisasi dengan skema dan data referensi yang sesuai. Dan itu harus terdaftar dalam katalog di bawah kunci penyewa yang sesuai.

Pendekatan yang berbeda untuk penyediaan database dapat digunakan. Anda dapat menjalankan skrip SQL, menerapkan bacpac, atau menyalin database template.

Penyediaan database perlu menjadi bagian dari strategi manajemen skema Anda. Anda harus memastikan bahwa database baru disediakan dengan skema terbaru. Persyaratan ini dieksplorasi dalam Tutorial manajemen Skema.

Aplikasi database-per-penyewa Tiket Wingtip menyediakan penyewa baru dengan menyalin database template bernama basetenantdb, yang disebarkan di server katalog. Penyediaan dapat diintegrasikan ke dalam aplikasi sebagai bagian dari pengalaman pendaftaran. Ini juga dapat didukung secara offline dengan menggunakan skrip. Tutorial ini mengeksplorasi penyediaan dengan menggunakan PowerShell.

Penyediaan skrip menyalin database basetenantdb untuk membuat database penyewa baru dalam kumpulan elastis. Database penyewa dibuat di server penyewa yang dipetakan ke alias DNS newtenant. Alias ini mempertahankan referensi ke server yang digunakan untuk menyediakan penyewa baru dan diperbarui untuk menunjuk ke server penyewa pemulihan dalam tutorial pemulihan bencana (DR menggunakan georestore, DR menggunakan georeplikasi). Skrip kemudian menginisialisasi database dengan informasi khusus penyewa dan mendaftarkannya di peta shard katalog. Database penyewa diberikan nama berdasarkan nama penyewa. Skema penamaan ini bukan bagian penting dari pola. Katalog memetakan kunci penyewa ke nama database, sehingga konvensi penamaan apa pun dapat digunakan.

Mendapatkan Database SaaS Tiket Wingtip Per skrip aplikasi Penyewa

Skrip Multi-penyewa Wingtip Tickets SaaS dan kode sumber aplikasi Database tersedia di repo GitHub WingtipTicketsSaaS-DbPerPenyewa. Lihat panduan umum untuk langkah-langkah mengunduh dan membuka blokir skrip Wingtip Ticket SaaS.

Penyediaan dan katalog detail penelusuran

Untuk memahami bagaimana aplikasi Tiket Wingtip menerapkan penyediaan penyewa baru, tambahkan breakpoint dan ikuti alur kerja saat Anda menyediakan penyewa.

  1. Dalam PowerShell ISE, buka ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1 dan atur parameter berikut:

    • $TenantName = nama tempat baru (misalnya, Bushwillow Blues).
    • $VenueType = salah satu jenis tempat yang telah ditentukan: blues, klasikmusic, menari, jazz, judo, balap motor, serbaguna, opera, rockmusik, sepak bola.
    • $DemoScenario = 1, Penyediaan penyewa tunggal.
  2. Untuk menambahkan breakpoint, letakkan kursor Anda di mana saja di baris yang bertuliskan Penyewa Baru '. Kemudian tekan F9.

    Screenshot shows a script with New-Tenant highlighted for adding a breakpoint.

  3. Tekan F5 untuk menjalankan skrip.

  4. Setelah eksekusi skrip berhenti di titik henti, tekanF11 untuk melangkah ke kode.

    Debugging

Lacak eksekusi skrip dengan menggunakan opsi menu Debug. Tekan F10 dan F11 untuk melangkahi atau masuk ke fungsi yang disebut. Untuk informasi selengkapnya tentang men-debug skrip PowerShell, lihat Tips bekerja dengan dan men-debug skrip PowerShell.

Anda tidak perlu secara eksplisit mengikuti alur kerja ini. Ini menjelaskan cara men-debug skrip.

  • Impor modul CatalogAndDatabaseManagement.psm1. Ini menyediakan katalog dan abstraksi tingkat penyewa atas fungsi Manajemen Shard. Modul ini merangkum sebagian besar pola katalog dan layak untuk dijelajahi.

  • Impor modul SubscriptionManagement.psm1. Ini berisi fungsi untuk masuk ke Azure dan memilih langganan Azure yang ingin Anda kerjakan.

  • Dapatkan detail konfigurasi. Masuki Get-Configuration dengan menggunakan F11, dan lihat bagaimana konfigurasi aplikasi ditentukan. Nama sumber daya dan nilai khusus aplikasi lainnya ditentukan di sini. Jangan ubah nilai-nilai ini sampai Anda terbiasa dengan skrip.

  • Dapatkan objek katalog. Masuki Get-Catalog, yang menyusun dan mengembalikan objek katalog yang digunakan dalam skrip tingkat lebih tinggi. Fungsi ini menggunakan fungsi Shard Management yang diimpor dari AzureShardManagement.psm1. Objek katalog terdiri dari elemen-elemen berikut:

    • $catalogServerFullyQualifiedName dibangun menggunakan batang standar ditambah nama pengguna Anda: catalog-<user>.database.windows .net.
    • $catalogDatabaseName diambil dari konfigurasi: tenantcatalog.
    • $shardMapManager ini diinisialisasi dari database katalog.
    • $shardMap ini diinisialisasi dari peta pecahan tenantcatalog dalam database katalog. Objek katalog disusun dan dikembalikan. Ini digunakan dalam skrip tingkat yang lebih tinggi.
  • Hitung kunci penyewa baru. Fungsi hash digunakan untuk membuat kunci penyewa dari nama penyewa.

  • Periksa apakah kunci penyewa sudah ada. Katalog diperiksa untuk memastikan kunci tersedia.

  • Database penyewa diprovisikan dengan New-TenantDatabase. Gunakan F11 untuk masuk ke bagaimana database disediakan dengan menggunakan Templat Azure Resource Manager.

    Nama database dibangun dari nama penyewa untuk memperjelas shard mana yang termasuk penyewa mana. Anda juga bisa menggunakan konvensi penamaan database lainnya. Templat Azure Resource Manager membuat database penyewa dengan menyalin database templat (baseTenantDB) di server katalog. Sebagai alternatif, Anda dapat membuat database dan menginisialisasinya dengan mengimpor bacpac. Atau Anda dapat menjalankan skrip inisialisasi dari lokasi terkenal.

    Template Azure Resource Manager ada di folder ...\Learning Modules\Common\: tenantdatabasecopytemplate.json

  • Database penyewa diinisialisasi lebih lanjut. Nama venue (penyewa) dan jenis venue ditambahkan. Anda juga dapat melakukan inisialisasi lain di sini.

  • Database penyewa didaftarkan dalam katalog. Ini terdaftar di Add-TenantDatabaseToCatalog dengan menggunakan kunci penyewa. Gunakan F11 untuk masuk ke detail:

    • Database katalog ditambahkan ke peta shard (daftar database yang diketahui).
    • Pemetaan yang menautkan nilai kunci ke pecahan dibuat.
    • Metadata tambahan tentang penyewa (nama tempat) ditambahkan ke tabel Penyewa dalam katalog. Tabel Penyewa bukan bagian dari skema Manajemen Shard, dan tidak diinstal oleh EDCL. Tabel ini menggambarkan bagaimana database katalog dapat diperluas untuk mendukung data spesifik aplikasi tambahan.

Setelah penyediaan selesai, eksekusi kembali ke skrip Demo-ProvisionAndCatalog asli. Halaman Acara terbuka untuk penyewa baru di browser.

Events page

Menyediakan batch penyewa

Latihan ini menyediakan kumpulan 17 penyewa. Kami sarankan Anda menyediakan batch penyewa ini sebelum memulai tutorial database-per-penyewa Wingtip Tickets SaaS lainnya. Ada lebih dari sekadar beberapa database untuk dikerjakan.

  1. Dalam PowerShell ISE, buka ...\Learning Modules\ProvisionAndCatalog\Demo-ProvisionAndCatalog.ps1. Ubah parameter $DemoScenario menjadi 3:

    • $DemoScenario = 3, Sediakan sekumpulan penyewa.
  2. Tekan F5 untuk menjalankan skrip.

Skrip ini menyebarkan batch penyewa tambahan. Ini menggunakan Templat Azure Resource Manager yang mengontrol batch dan delegasi penyediaan setiap database ke templat yang ditautkan. Menggunakan templat dengan cara ini memungkinkan Azure Resource Manager untuk broker proses penyediaan untuk skrip Anda. Templat menyediakan database secara paralel dan menangani upaya ulang, jika diperlukan. Skripnya tidak bedut, jadi jika gagal atau berhenti karena alasan apa pun, jalankan lagi.

Verifikasi kumpulan penyewa yang berhasil disebarkan

  • Di portal Microsoft Azure, telusuri ke daftar server Anda dan buka server penyewa1. Pilih database SQL, dan verifikasi bahwa kumpulan 17 database tambahan sekarang ada dalam daftar.

    Database list

Pola penyediaan lainnya

Pola penyediaan lain yang tidak termasuk dalam tutorial ini:

Database pra-penyediaan: Pola pra-penyediaan mengeksploitasi fakta bahwa database dalam kumpulan elastis tidak menambahkan biaya tambahan. Penagihan adalah untuk kumpulan elastis, bukan database. Database menganggur tidak menggunakan sumber daya. Dengan melakukan pra-penyediaan database dalam kumpulan dan mengalokasikannya saat diperlukan, Anda dapat mengurangi waktu untuk menambahkan penyewa. Jumlah database yang telah disediakan sebelumnya dapat disesuaikan sesuai kebutuhan untuk menjaga penyangga tetap sesuai dengan tingkat penyediaan yang diantisipasi.

Penyediaan otomatis: Dalam pola penyediaan otomatis, layanan penyediaan menyediakan server, kumpulan, dan database secara otomatis, sesuai kebutuhan. Jika mau, Anda dapat menyertakan database pra-penyediaan dalam kumpulan elastis. Jika database dinonaktifkan dan dihapus, kesenjangan dalam kumpulan elastis dapat diisi oleh layanan penyediaan. Layanan semacam itu bisa sederhana atau kompleks, seperti menangani penyediaan di beberapa wilayah dan menyiapkan replikasi geografis untuk pemulihan bencana.

Dengan pola penyediaan otomatis, aplikasi atau skrip klien mengirimkan permintaan penyediaan ke antrean untuk diproses oleh layanan penyediaan. Kemudian polling layanan untuk menentukan penyelesaian. Jika pra-penyediaan digunakan, permintaan ditangani dengan cepat. Layanan ini menyediakan basis data pengganti di latar belakang.

Langkah berikutnya

Dalam tutorial ini, Anda akan mempelajari cara:

  • Menyediakan satu penyewa baru.
  • Menyediakan batch penyewa tambahan.
  • Masuki detail penyediaan penyewa dan daftarkan ke dalam katalog.

Coba Tutorial pemantauan performa.

Sumber daya tambahan