Saya ingat dari podcast stackoverflow bahwa Fog Creek menggunakan database per pelanggan untuk Fogbugz . Saya berasumsi itu berarti server Fogbugz On Demand memiliki 10s dari ribuan database.
Kami baru mulai mengembangkan aplikasi web dan memiliki masalah yang sama untuk dipecahkan (banyak pelanggan dengan data mereka sendiri yang terisolasi).
Masalah apa yang harus saya harapkan dengan menggunakan database per pelanggan? Bagaimana saya bisa menyelesaikannya?
Pikiran Awal Saya
Keuntungan dari basis data per pelanggan
- Skema basis data yang lebih sederhana
- Pencadangan yang lebih sederhana - Anda dapat membuat cadangan setiap pelanggan tanpa benar-benar berdampak pada pelanggan lain.
- Memudahkan untuk mengekspor data pelanggan yang diberikan.
- Kinerja cache yang lebih baik - penulisan ke salah satu tabel yang lebih aktif hanya berdampak pada satu pelanggan yang melakukan penulisan.
- Lebih mudah untuk mengukur lintas perangkat keras. Misalnya, ketika kita perlu beralih dari 1 ke 2 server, kami hanya memindahkan setengah pelanggan kami ke server baru.
Kekurangan
- Bisakah MySQL mengatasi 5.000 database? Akankah kinerja payah?
- Perubahan pada skema mungkin sulit untuk ditiru di semua basis data. Kami benar-benar harus memiliki rencana otomatis untuk ini, seperti membuat versi skema dan skrip yang mengerti cara mengambil database dari satu versi ke versi lain.
- Melakukan sesuatu yang umum bagi semua pelanggan kami mungkin canggung atau tidak mungkin
- Mirip dengan di atas, tetapi analitik apa pun yang ingin kami lakukan di semua pelanggan kami mungkin tidak mungkin. Bagaimana seharusnya kita melacak penggunaan di semua pelanggan misalnya?
USE CompanyData;