Satu-satunya masalah adalah bahwa sebenarnya tidak ada cara yang nyaman untuk menegakkan hubungan ini. Anda bisa menggunakan satu kapal pemicu, atau menyimpan tabel master di setiap database contoh dan cukup memaparkan semuanya sebagai metadata ke master, mungkin menggunakan tampilan.
Kelemahan terbesar, saya pikir, ada hubungannya dengan menjaga data akurat dan disinkronkan, dalam setidaknya tiga skenario di atas kepala saya (semuanya masih bisa menjadi masalah bahkan jika Anda menggunakan pemicu):
- transaksi lintas-basis data yang tidak terkoordinasi dengan benar - misalnya satu transaksi menambahkan baris baru untuk dikuasai, melepaskan identitas ke transaksi lain, dan kemudian transaksi pertama dibatalkan.
- pemulihan dari kegagalan basis data tunggal - database lumpuh, Anda harus mengembalikan ke titik waktu, yang mungkin sebelum transaksi sukses lainnya di database lain selesai. Ini bisa berarti jika database instance harus kembali ke waktu sebelumnya, itu adalah baris yang tidak diharapkan master; jika master harus kembali, mungkin semua database instance akan memiliki nilai yang tidak ada di master.
- konsistensi cadangan secara umum - jika Anda memerlukan pemulihan bencana, Anda akan mengalami kesulitan menjaga semua cadangan lengkap dan mencatat secara konsisten sesuai dengan waktu. Cuplikan sistem file tidak membantu dengan ini, dan bahkan Grup yang Tersedia tidak menjamin konsistensi transaksional pangkalan data untuk database dalam satu Grup Ketersediaan. Jika Anda memiliki bencana dan perlu mengembalikan database Anda ke sistem baru, tidak ada cara untuk memastikan mereka akan konsisten secara transaksi.
Semua yang dikatakan, saya selalu dan akan selalu menjadi penggemar memisahkan penyewa ke dalam database mereka sendiri, dan saya mengakui ada risiko yang terkait dengan database pusat - tetapi itu perlu.
(Sebagai tambahan, Anda harus menggunakan nama untuk database Anda selain master / contoh. master
Di SQL Server pasti memiliki makna yang eksplisit, dan bahkan membaca kata-kata saya sendiri di atas mereka bisa ambigu. Sama untuk instance
. Dalam kehidupan sebelumnya saya menjalankan multi sistem -tenant dan kami disebut pusat database Control
dan basis data penyewa, well Tenants
,.)