Я пам’ятаю з подкастів stackoverflow, що Fog Creek використовує базу даних для клієнта для Fogbugz . Я припускаю, що означає, що сервери Fogbugz On Demand мають 10 тисяч тисяч баз даних.
Ми тільки починаємо розробляти веб-додаток і маємо подібну проблему вирішити (багато клієнтів з власними ізольованими даними).
Які проблеми слід очікувати при використанні бази даних на кожного клієнта? Як я можу їх вирішити?
Мої початкові думки
Переваги бази даних на одного клієнта
- Простіша база даних
- Простіші резервні копії - ви можете створювати резервні копії кожного клієнта по черзі, не впливаючи на інших клієнтів.
- Полегшує експорт даних клієнтів.
- Краща ефективність кешу - запис у одну з більш активних таблиць впливає лише на одного клієнта, який виконував запис.
- Легше масштабувати обладнання. Наприклад, коли нам потрібно перейти від 1 до 2 серверів, ми просто переміщаємо половину наших клієнтів на новий сервер.
Недоліки
- Чи може MySQL впоратися з 5000 базами даних? Хіба продуктивність смокче?
- Зміни схеми можуть бути важкими для копіювання у всіх базах даних. Ми дійсно мали б мати автоматизований план для цього, наприклад, версію схеми та сценарію, який розуміє, як перенести базу даних з однієї версії в іншу.
- Робити що-небудь спільне для всіх наших клієнтів може бути незручно або неможливо
- Подібно до вище, але будь-яка аналітика, яку ми хочемо виконати для всіх наших клієнтів, може бути неможливою. Як нам, наприклад, відстежувати використання всіх клієнтів?
USE CompanyData;