Хорошим примером будет shopify. Где у вас N количество пользователей (в этом случае каждый пользователь предполагает сайт). И у каждого пользователя будут свои записи в БД. Но схема БД будет одинаковой (одинаковые таблицы для каждого пользователя, products
, customers
, orders
и т.д.).
Итак, вопрос в том, что будет лучшим способом организовать такое решение? Храните все в одной БД, но в разных таблицах, или запускайте отдельную БД для каждого пользователя (но тогда возникнет вопрос с поддержкой, масштабируемостью и автоматизацией)
Мы можем использовать одну БД с общими таблицами, такими как products
, customers
, orders
и т.д. И у нас будут users
таблиц, где мы будем хранить записи о каждом сайте. В таблицах products
, customers
мы сгруппируем все записи по user_id
. Это одно из возможных решений. Но если у нас будет 1000 пользователей (сайтов), у каждого будет ~ 2 тыс. Продуктов и ~ 100 тыс. Клиентов, мы можем получить таблицы с миллионами записей, поэтому возникнут следующие вопросы:
Любые ссылки и т.д. Будет высоко ценится, спасибо!
Я рекомендую просматривать базы данных с помощью хорошо поддерживаемых решений с открытым исходным кодом. Имея это в виду, вот довольно простая схема, которую я нашел очень быстро, которая объясняет хорошее рабочее решение для этого с учетом масштабируемости.
Я написал сообщение в блоге о том, как с помощью этой методики я смог преобразовать большое однопользовательское приложение mysql в многопользовательское приложение в выходные дни. https://opensource.io/it/mysql-multi-tenant/