Доброго времени года!
Вопрос скорее теоретический, чем практический.. но лучше один раз спросить, чем выразительно промолчать и «сесть в лужу» (чтобы охладить пылающую пятую точку :D ) в будущем. Вводные данные будут скорее похожи на «сферического коня в вакууме», чем реальностью. Но это делается для того, чтобы лучше (и чётче) описать вопрос. Итак, мы имеем:
- Веб-сервис (тематику возьмём для примера — рецепты еды)
- Пользователи из разных уголков Земли (США, РФ, Европа, СНГ)
- Ожидаемая нагрузка, например, +1500 активных уников в месяц
- VDS на Debian/Ubuntu x64 в облаке (например, тариф DO за $20/mo)
- Python 3.5+
- PostgreSQL 9.6+
- Веб фреймворк берём Django или Flask (другие можно тоже рассмотреть, но в них у меня опыта мало)
Суть:
как оптимальнее всего организовать БД для веб-сервиса на Django/Flask, чтобы быть готовым к постоянно увеличивающийся (но не равномерной) нагрузке на базу данных, в результате постоянных CRUD действий?
Встретил на просторах гугла совет по разделению каждой из таблиц БД на разные сервера. То есть, таблица
ingredients
на vds1.digitalocean.com, таблица
recipes
на vds2.digitalocean.com, таблица
users
на vds3.digitalocean.com и так далее. Тем самым мы можем увидеть, где растёт нагрузка (растут ли кол-во регистрации или добавление рецептов или поиск по ингредиентам или ...) и масштабировать именно этот сервер, а остальные вообще не трогать.
Так вот, рабочий ли это вариант? Если «рабочий», то как организовать такую схему работы БД на Django/Flask (модули)? Может быть есть более лучшие и элегантные варианты решения данной проблемы?
Буду рад толковым комментариям и ссылкам по этой теме! Спасибо.