Привет!
У WordPress есть фича "
MultiSite", позволяющая на одной кодовой базе запускать множество разных сайтов. На этой фиче работает в частности блогхостинг wordpress.com (вот тут
есть видео с рассказом о том, как он устроен).
На каждый сайт создается свой набор таблиц с идентичной структурой, отличающихся префиксами в названиях, и это все живет в одной БД. Есть шаманские способы сделать разные БД, но by design оно работает именно так.
Кто нибудь понимает, почему они выбрали такую архитектуру?
Почему не хранить все в одной базе, используя партиционирование / шардинг? Вроде самый очевидный вариант. Да, он подразумевает, что нельзя изменить схему для отдельного сайта, но вроде она и так не меняется, это, кажется, одна из основ "пуленепробиваемости" WP.
Почему не создавать новую базу под каждый сайт? Так, кажется, и гибче (можно умно распределять сайты по серверам, можно давать менять схему), и безопаснее. Какие могу возникнуть проблемы при экстремально большом (сотни тысяч) количестве БД? Репликация?
Как бы вы построили такую систему? Можно два сценария:
1) схема и набор возможностей фиксированы и неизменны,
2) можно ставить сторонние плагины, которые в том числе могут изменять схему.
Спасибо!