Kami sedang membangun platform web yang menggabungkan beberapa layanan, masing-masing dengan data dasarnya sendiri. Layanan ini sedang dibangun secara independen mengikuti prinsip Arsitektur Berorientasi Layanan , tetapi mereka bertransaksi terhadap data yang berpotensi terkait. Kami sedang mempertimbangkan apakah layanan ini harus berbagi satu basis data besar atau masing-masing memiliki basis data sendiri. (Kami berencana untuk menggunakan SQL Server 2008 Enterprise pada cluster Windows 2008.)
Beberapa keuntungan untuk setiap pendekatan yang telah kami pertimbangkan meliputi:
Database tunggal
- Menghubungkan data dari berbagai layanan dapat diikat bersama oleh batasan kunci asing
- Ekstrak analitik lebih mudah ditulis dan dieksekusi lebih cepat
- Jika terjadi bencana, mengembalikan platform ke kondisi yang konsisten lebih mudah
- Untuk data yang direferensikan oleh beberapa layanan, data yang di-cache oleh satu layanan kemungkinan akan digunakan segera setelah oleh layanan lain
- Administrasi dan pemantauan lebih sederhana dan lebih murah di muka
Banyak Database
- Pekerjaan pemeliharaan, masalah perangkat keras, pelanggaran keamanan dan sebagainya tidak selalu berdampak pada seluruh platform
- Dengan asumsi setiap basis data berada pada perangkat keras terpisah, meningkatkan beberapa mesin menghasilkan lebih banyak manfaat kinerja daripada meningkatkan satu besar
Dari perspektif operasional, apakah lebih menguntungkan bahwa setiap layanan dalam platform ini mendapatkan basis datanya sendiri, atau bahwa mereka semua masuk dalam database yang sama? Faktor kunci apa yang menginformasikan jawaban untuk pertanyaan ini?