Bagikan melalui


Penyediaan dan katalog penyewa baru dalam aplikasi SaaS menggunakan Microsoft Azure SQL Database Azure SQL multi-penyewa yang pecahan

Berlaku untuk: Azure SQL Database

Artikel ini mencakup penyediaan dan katalog penyewa baru, dalam model atau pola database dengan sharded multi-penyewa.

Artikel ini memiliki dua bagian utama:

  • Diskusi konseptual tentang penyediaan dan katalog penyewa baru.

  • Tutorial yang menyoroti kode skrip PowerShell yang menyelesaikan penyediaan dan pembuatan katalog.

    • Tutorial menggunakan aplikasi Wingtip Tickets SaaS, disesuaikan dengan pola database pecahan multi-penyewa.

Pola database

Bagian ini, ditambah beberapa lagi yang mengikuti, membahas konsep pola database pecahan multi-penyewa.

Dalam model pecahan multi-penyewa ini, skema tabel di dalam setiap database menyertakan kunci penyewa di kunci utama tabel yang menyimpan data penyewa. Kunci penyewa memungkinkan setiap database individual untuk menyimpan 0, 1, atau banyak penyewa. Penggunaan database pecahan memudahkan sistem aplikasi untuk mendukung sejumlah besar penyewa. Semua data untuk satu penyewa disimpan dalam satu database. Sejumlah besar penyewa didistribusikan di banyak database yang pecahan. Database katalog menyimpan pemetaan setiap penyewa ke databasenya.

Isolasi versus biaya lebih rendah

Penyewa yang memiliki database semua untuk dirinya sendiri menikmati manfaat isolasi. Penyewa dapat memulihkan database ke tanggal sebelumnya tanpa dibatasi oleh dampak pada penyewa lain. Performa database dapat disetel untuk dioptimalkan untuk satu penyewa, sekali lagi tanpa harus berkompromi dengan penyewa lain. Masalahnya adalah bahwa isolasi biaya lebih dari biaya untuk berbagi database dengan penyewa lain.

Ketika penyewa baru disediakan, penyewa dapat berbagi database dengan penyewa lain, atau dapat ditempatkan ke dalam database barunya sendiri. Nantinya Anda dapat mengubah pikiran Anda dan memindahkan database ke situasi lain.

Database dengan beberapa penyewa dan penyewa tunggal dicampur dalam aplikasi SaaS yang sama, untuk mengoptimalkan biaya atau isolasi untuk setiap penyewa.

Aplikasi database multi-penyewa yang dipecah dengan katalog penyewa

Pola katalog penyewa

Ketika Anda memiliki dua database atau lebih yang masing-masing berisi setidaknya satu penyewa, aplikasi harus memiliki cara untuk menemukan database mana yang menyimpan penyewa minat saat ini. Database katalog menyimpan pemetaan ini.

Kunci penyewa

Untuk setiap penyewa, aplikasi Wingtip dapat memperoleh kunci unik, yaitu kunci penyewa. Aplikasi ini mengekstrak nama penyewa dari URL halaman web. Aplikasi ini hashes nama untuk mendapatkan kunci. Aplikasi ini menggunakan kunci untuk mengakses katalog. Katalog merujuk silang informasi tentang database tempat penyewa disimpan. Aplikasi ini menggunakan info database untuk menyambungkan. Skema kunci penyewa lainnya dapat digunakan.

Menggunakan katalog memungkinkan nama atau lokasi database penyewa diubah setelah penyediaan tanpa mengganggu aplikasi. Dalam model database multi-penyewa, katalog mengakomodasi pemindahan penyewa antar database.

Metadata penyewa di luar lokasi

Katalog juga dapat menunjukkan apakah penyewa offline untuk pemeliharaan atau tindakan lainnya. Dan katalog dapat diperluas untuk menyimpan penyewa tambahan atau metadata database, seperti item berikut:

  • Tingkat layanan atau edisi database.
  • Versi skema database.
  • Nama penyewa dan SLA-nya (perjanjian tingkat layanan).
  • Informasi untuk memungkinkan manajemen aplikasi, dukungan pelanggan, atau proses devops.

Katalog juga dapat digunakan untuk mengaktifkan pelaporan lintas penyewa, manajemen skema, dan ekstrak data untuk tujuan analitik.

Meningkatkan pustaka klien Elastic Database

Di Wingtip, katalog diimplementasikan dalam database tenantcatalog. Tenantcatalog dibuat menggunakan fitur Manajemen Shard dari Elastic Database Client Library (EDCL). Pustaka memungkinkan aplikasi untuk membuat, mengelola, dan menggunakan peta shard yang disimpan dalam database. Peta shard merujuk silang kunci penyewa dengan pecahannya, yang berarti databasenya yang pecahan.

Fungsi EDCL dapat dipanggil dari aplikasi atau skrip PowerShell untuk membuat dan mengelola entri dalam peta shard. Nantinya fungsi EDCL dapat digunakan untuk menyambungkan ke database yang benar. EDCL menyimpan informasi koneksi untuk meminimalkan lalu lintas pada database katalog dan mempercepat proses penghubung.

Penting

Jangan edit data dalam database katalog melalui akses langsung! Pembaruan langsung tidak didukung karena tingginya risiko korupsi data. Sebagai gantinya, edit data pemetaan hanya dengan menggunakan API EDCL.

Penyediaan penyewa

Daftar periksa

Saat Anda ingin menyediakan penyewa baru ke dalam database bersama yang sudah ada, dari database bersama, Anda harus mengajukan pertanyaan berikut:

  • Apakah memiliki cukup ruang tersisa untuk penyewa baru?
  • Apakah memiliki tabel dengan data referensi yang diperlukan untuk penyewa baru, atau dapatkah data ditambahkan?
  • Apakah memiliki variasi skema dasar yang sesuai untuk penyewa baru?
  • Apakah di lokasi geografis yang sesuai dekat dengan penyewa baru?
  • Apakah pada tingkat layanan yang tepat untuk penyewa baru?

Ketika Anda ingin penyewa baru diisolasi dalam databasenya sendiri, Anda dapat membuatnya untuk memenuhi spesifikasi penyewa.

Setelah penyediaan selesai, Anda harus mendaftarkan penyewa dalam katalog. Akhirnya, pemetaan penyewa dapat ditambahkan untuk mereferensikan pecahan yang sesuai.

Database templat

Terapkan database dengan mengeksekusi skrip SQL, menyebarkan bacpac, atau menyalin database templat. Aplikasi Wingtip menyalin database templat untuk membuat database penyewa baru.

Seperti aplikasi apa pun, Wingtip akan berkembang dari waktu ke waktu. Kadang-kadang, Wingtip akan memerlukan perubahan pada database. Perubahan mungkin mencakup item berikut:

  • Skema baru atau berubah.
  • Data referensi baru atau yang diubah.
  • Tugas pemeliharaan database rutin untuk memastikan kinerja aplikasi yang optimal.

Dengan aplikasi SaaS, perubahan ini perlu diterapkan secara terkoordinasi di seluruh armada database penyewa yang berpotensi besar. Agar perubahan ini berada di database penyewa di masa depan, mereka perlu dimasukkan ke dalam proses penyediaan. Tantangan ini dieksplorasi lebih lanjut dalam tutorial manajemen skema.

Skrip

Skrip penyediaan penyewa dalam tutorial ini mendukung kedua skenario berikut:

  • Menyediakan penyewa ke dalam database yang sudah ada yang dibagikan dengan penyewa lain.
  • Menyediakan penyewa ke dalam database sendiri.

Data penyewa kemudian diinisialisasi dan terdaftar dalam peta shard katalog. Dalam contoh aplikasi, database yang berisi beberapa penyewa diberi nama generik, seperti penyewa1 atau penyewa2. Database yang berisi satu penyewa diberi nama penyewa. Konvensi penamaan spesifik yang digunakan dalam sampel bukanlah bagian penting dari pola, karena penggunaan katalog memungkinkan nama apa pun ditetapkan ke database.

Tutorial dimulai

Dalam tutorial ini, Anda akan mempelajari cara:

  • Menyediakan penyewa ke dalam database penyewa tunggal
  • Menyediakan penyewa ke dalam database penyewa tunggal
  • Menyediakan batch penyewa ke dalam database multi-penyewa dan penyewa tunggal
  • Mendaftarkan pemetaan database dan penyewa dalam katalog

Prasyarat

Untuk menyelesaikan tutorial ini, pastikan prasyarat berikut ini diselesaikan:

Menyediakan penyewa ke dalam database yang dibagikan dengan penyewa lain

Di bagian ini, Anda akan melihat daftar tindakan utama untuk penyediaan yang diambil oleh skrip PowerShell. Kemudian Anda menggunakan debugger ISE PowerShell untuk menelusuri skrip untuk melihat tindakan dalam kode.

Tindakan utama penyediaan

Berikut ini adalah elemen kunci dari alur kerja penyediaan yang Anda langkahi:

  • 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 belum terdaftar.

  • Menginisialisasi penyewa dalam database penyewa default:Database penyewa diperbarui untuk menambahkan informasi penyewa baru.

  • Mendaftarkan penyewa dalam katalog: Pemetaan antara kunci penyewa baru dan database penyewa1 yang ada ditambahkan ke katalog.

  • Menambahkan nama penyewa ke tabel ekstensi katalog:Nama tempat ditambahkan ke tabel Penyewa di katalog. Tambahan ini memperlihatkan bagaimana database katalog dapat diperluas untuk mendukung data spesifik aplikasi tambahan.

  • Halaman Acara Terbuka untuk penyewa baru: halaman acara Bushwillow Blues dibuka di browser.

    Cuplikan layar yang memperlihatkan halaman Acara untuk penyewa baru.

Langkah-langkah debugger

Untuk memahami bagaimana aplikasi Wingtip menerapkan penyediaan penyewa baru di database bersama, tambahkan titik henti dan hingga alur kerja:

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

    • $TenantName = Bushwillow Blues, nama tempat baru.
    • $VenueType = blues salah satu jenis tempat yang telah ditentukan: blues, klasikmusic, menari, jazz, judo, balap motor, serbaguna, opera, rockmusik, sepak bola (huruf kecil, tanpa spasi).
    • $DemoScenario = 1, untuk menyediakan penyewa dalam database bersama dengan penyewa lain.
  2. Tambahkan breakpoint dengan menempatkan kursor Anda di mana saja pada baris 38, baris yang berbunyi: New-Tenant `, lalu tekan F9 .

    Cuplikan layar yang menyorot garis yang menyertakan Penyewa Baru.

  3. Jalankan skrip dengan menekan F5.

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

    Cuplikan layar memperlihatkan ISE Windows PowerShell dengan menu Debug terbuka dan Langkah ke Dalam dipilih.

  5. Lacak eksekusi skrip menggunakan opsi menu Debug, F10 dan F11, untuk melangkahi atau ke fungsi yang dipanggil.

Untuk informasi selengkapnya tentang men-debug skrip PowerShell, lihat Tips bekerja dengan dan men-debug skrip PowerShell.

Menyediakan penyewa dalam databasenya sendiri

Tindakan utama penyediaan

Berikut ini adalah elemen kunci dari alur kerja yang Anda telusuri sambil menelusuri skrip:

  • 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 belum terdaftar.

  • Membuat database penyewa baru: Database dibuat dengan menyalin database basetenantdb menggunakan templat Azure Resource Manager. Nama database baru didasarkan pada nama penyewa.

  • Menambahkan database ke katalog: Database penyewa baru terdaftar sebagai shard dalam katalog.

  • Menginisialisasi penyewa dalam database penyewa default:Database penyewa diperbarui untuk menambahkan informasi penyewa baru.

  • Daftarkan penyewa di katalog: Pemetaan antara kunci penyewa baru dan database sequoiasoccer ditambahkan ke katalog.

  • Nama penyewa ditambahkan ke katalog: Nama tempat ditambahkan ke tabel ekstensi Penyewa di katalog.

  • Halaman Acara Terbuka untuk penyewa baru: halaman acara Sequoia Soccer dibuka di browser.

    events

Langkah-langkah debugger

Sekarang berjalan melalui proses skrip saat membuat penyewa dalam database sendiri:

  1. Masih di ...\Learning Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 untuk mengatur parameter berikut:

    • $TenantName = Sequoia Soccer, nama tempat baru.
    • $VenueType = sepakbola salah satu jenis tempat yang telah ditentukan: blues, klasikmusic, menari, jazz, judo, balap motor, serbaguna, opera, rockmusik, sepak bola (huruf kecil, tanpa spasi).
    • $DemoScenario = 2, untuk menyediakan penyewa ke dalam database sendiri.
  2. Tambahkan titik henti baru dengan menempatkan kursor Anda di mana saja pada baris 57, garis yang mengatakan: & $PSScriptRoot\New-TenantAndDatabase ', dan tekan F9.

    titik pemisah

  3. Jalankan skrip dengan menekan F5.

  4. Setelah eksekusi skrip berhenti di titik henti, tekanF11 untuk melangkah ke kode. Gunakan F10 dan F11 untuk melangkah dan melangkah ke fungsi untuk melacak eksekusi.

Menyediakan batch penyewa

Latihan ini menyediakan kumpulan 17 penyewa. Sebaiknya Anda menyediakan batch penyewa ini sebelum memulai tutorial Tiket Wingtip lainnya sehingga ada lebih banyak database untuk dikerjakan.

  1. Di PowerShell ISE, buka ...\Learning Modules\ProvisionTenants\Demo-ProvisionTenants.ps1 dan ubah parameter $DemoScenario ke 4:

    • $DemoScenario = 4, untuk menyediakan batch penyewa ke dalam database bersama.
  2. Tekan F5 untuk menjalankan skrip.

Memverifikasi kumpulan penyewa yang diterapkan

Pada tahap ini, Anda memiliki campuran penyewa yang diterapkan ke dalam database bersama dan penyewa yang diterapkan ke dalam database mereka sendiri. Portal Microsoft Azure dapat digunakan untuk memeriksa database yang dibuat. Di portal Microsoft Azure, buka server tenants1-mt-<USER> dengan menelusuri ke daftar server SQL. Daftar database SQL harus menyertakan database penyewa bersama1 dan database untuk penyewa yang ada dalam database mereka sendiri:

Cuplikan layar halaman Gambaran Umum server tenants1-mt-USER yang menyoroti database.

Meskipun portal Micrososft Azure memperlihatkan database penyewa, portal tersebut tidak memungkinkan Anda melihat penyewa di dalam database bersama. Daftar lengkap penyewa dapat dilihat di laman web Hub Acara di Wingtip, dan dengan menjelajahi katalog.

Menggunakan halaman hub acara Tiket Wingtip

Buka halaman Events Hub di browser (http:events.wingtip-mt.<USER>.trafficmanager.net)

Menggunakan database katalog

Daftar lengkap penyewa dan database terkait untuk masing-masing tersedia dalam katalog. Tampilan SQL disediakan yang bergabung dengan nama penyewa ke nama database. Tampilan dengan baik menunjukkan nilai memperluas metadata yang disimpan dalam katalog.

  • Tampilan SQL tersedia dalam database tenantcatalog.
  • Nama penyewa disimpan dalam tabel Penyewa.
  • Nama database disimpan dalam tabel Manajemen Shard.
  1. Di SQL Server Management Studio (Management Studio), sambungkan ke server penyewa di catalog-mt.<USER>.database.windows.net, dengan Login = developer, dan Kata Sandi = P@ssword1

    Dialog koneksi SQL Server Management Studio

  2. Di SQL Server Object Explorer Server Management Studio (SSMS), telusuri tampilan dalam database tenantcatalog.

  3. Klik kanan pada tampilan PenyewaExtended dan pilih Pilih 1000 Baris Teratas. Perhatikan pemetaan antara nama penyewa dan database untuk penyewa yang berbeda.

    Tampilan ExtendedTenants di SQL Server Management Studio

Pola penyediaan lainnya

Bagian ini membahas pola penyediaan menarik lainnya.

Database pra-penyediaan dalam kumpulan elastis

Pola pra-penyediaan mengeksploitasi fakta bahwa ketika menggunakan kumpulan elastis, penagihan adalah untuk kumpulan bukan database. Dengan demikian database dapat ditambahkan ke kumpulan elastis sebelum diperlukan tanpa menimbulkan biaya tambahan. Pra-visi ini secara signifikan mengurangi waktu yang diambil untuk menyediakan penyewa ke dalam database. Jumlah database yang telah disediakan sebelumnya dapat disesuaikan sesuai kebutuhan untuk menjaga penyangga tetap sesuai dengan tingkat penyediaan yang diantisipasi.

Pengadaan otomatis

Dalam pola penyediaan otomatis, layanan penyediaan yang berdedikasi biasa menyediakan server, kumpulan, dan database secara otomatis, sesuai kebutuhan. Otomatisasi ini mencakup pra-penyediaan database di kumpulan elastis. Dan jika database dinonaktifkan dan dihapus, celah yang dibuat di kumpulan elastis dapat diisi oleh layanan penyediaan seperti yang diinginkan.

Jenis layanan otomatis ini bisa sederhana atau kompleks. Misalnya, otomatisasi dapat menangani penyediaan di beberapa wilayah, dan dapat mengatur replikasi geografis untuk pemulihan bencana. Dengan pola penyediaan otomatis, aplikasi atau skrip klien akan mengirimkan permintaan penyediaan ke antrean untuk diproses oleh layanan penyediaan. Skrip kemudian akan melakukan jajak pendapat untuk mendeteksi penyelesaian. Jika pra-penyediaan digunakan, permintaan akan ditangani dengan cepat, sementara layanan latar belakang akan mengelola penyediaan database pengganti.

Sumber Daya Tambahan:

Langkah berikutnya

Dalam tutorial ini, Anda akan mempelajari cara:

  • Menyediakan satu penyewa baru ke dalam database multi-penyewa bersama dan databasenya sendiri
  • Menyediakan batch penyewa tambahan
  • Masuki detail penyediaan penyewa dan daftarkan ke dalam katalog.

Coba Tutorial pemantauan performa.