Saya sarankan Anda membaca Arsitektur Data Multi-Tenant , kertas putih yang membahas opsi yang Anda miliki, dan pro dan kontra. Untuk meringkas, ini memberikan tiga opsi:
- pisahkan DB
- skema terpisah
- skema bersama
Anda sekarang berada pada tahap DB terpisah, yang menawarkan pemisahan terbaik (isolasi antara penyewa), tetapi merupakan yang paling sulit untuk dikelola. Ketika Anda tumbuh menjadi ratusan penyewa, Anda akan menyadari bahwa logistik untuk mengelola 100-an DB jauh dari mudah. Pikirkan backup-restore (lokasi file yang dicadangkan, pekerjaan, jadwal dll). Pikirkan bagaimana Anda akan memantau dan mengelola alokasi file, ruang disk yang digunakan, dan pertumbuhan basis data di ratusan DB. Pikirkan skenario skenario High-Availability / Disaster-Recoverability Anda dalam waktu dekat dengan 1000 tenant? 1000 mirrored DBs, 1000 sesi pengiriman log? Pikirkan bagaimana jika dalam 6 bulan tim dev Anda mendatangi Anda dan berkata "Saya tahu bagaimana memberikan fitur yang luar biasa ini kepada produk kami, kami akan menggunakan Replikasi Transaksional!", Apa yang akan Anda katakan? "tentu, izinkan saya menyiapkan 500 penerbit,"! Bukan tidak mungkin untuk mengelola ratusan DB, tetapi jika Anda berencana untuk melakukannya, Anda lebih baik memoles keterampilan PowerShell Anda dan berhenti menggunakan alat manajemen UI sekarang .
Selain itu, Anda perlu mempertimbangkan bahwa banyak (ratusan) DB memiliki dampak yang terukur terhadap kinerja dan biaya:
- ruang disk fisik kurang efisien digunakan (setiap database harus memiliki beberapa kamar kosong, Anda akan memiliki ruangan cadangan dikalikan dengan jumlah DBs)
- Tidak ada cara Anda dapat membuat disk log khusus untuk tugas-tugas intensif, Anda harus memindahkan semua LDF ke satu (atau lebih) penyimpanan SSD
- menulis log akan kurang efisien pada komit yang sering karena mereka tersebar di banyak catatan blok log individu vs. agregat menjadi satu (Anda akan mendapatkan blok log yang kurang dimanfaatkan). Lihat Apa itu LSN: Nomor Urutan Log untuk memahami apa yang saya bicarakan.
DB yang terpisah datang dengan beberapa keuntungan meskipun karena isolasi, keuntungan utama adalah backup / restore independen.
Skenario seperti milik Anda adalah kandidat sempurna untuk database SQL Azure . Tidak ada administrasi ruang disk, tidak perlu menyediakan HA / DR, tumbuh hingga ratusan / ribuan DB, dll.