Параметр из URL для подключения к БД
Параметр из URL для подключения к БД
Идея такая:
Будет основной домен site.com
Пользователь создает свою компанию
После этого система автоматически создает
-поддомен с уникальным именем компании например company.site.com
-базу данных для компании с именем {компания}_bd, пароль секретный ключ в таблице с компаниями
Вопросы:
1. Может есть более простая подобная схема работы, при том что здесь придется работать с двумя базами одновременно.
2. Как правильно? то есть где, вытягивать имя компании из поддомена(необходим для работы с базой данной)
Будет основной домен site.com
Пользователь создает свою компанию
После этого система автоматически создает
-поддомен с уникальным именем компании например company.site.com
-базу данных для компании с именем {компания}_bd, пароль секретный ключ в таблице с компаниями
Вопросы:
1. Может есть более простая подобная схема работы, при том что здесь придется работать с двумя базами одновременно.
2. Как правильно? то есть где, вытягивать имя компании из поддомена(необходим для работы с базой данной)
Re: Параметр из URL для подключения к БД
Как сделать еще одно подключения к БД используя логоин и пароль из другой БД?
Re: Параметр из URL для подключения к БД
еще один компонент БД объявить и его настроить и дальше его использовать.
Yii2 universal module sceleton - for basic and advanced templates
Re: Параметр из URL для подключения к БД
Не создавайте много баз данных, это потом невозможно будет поддерживать. Идентифицируйте компанию по домену, а все данные привязывайте к компании.
- MetaDriver
- Сообщения: 43
- Зарегистрирован: 2014.04.21, 20:53
- Откуда: Казань
Re: Параметр из URL для подключения к БД
Разумно. Если имя субдомена сделать префиксом для таблиц юзера (хозяина поддомена), то путаницы с адресацией таблиц не будет.mozart писал(а):Не создавайте много баз данных, это потом невозможно будет поддерживать. Идентифицируйте компанию по домену, а все данные привязывайте к компании.
Re: Параметр из URL для подключения к БД
MetaDriver писал(а):Разумно. Если имя субдомена сделать префиксом для таблиц юзера (хозяина поддомена), то путаницы с адресацией таблиц не будет.mozart писал(а):Не создавайте много баз данных, это потом невозможно будет поддерживать. Идентифицируйте компанию по домену, а все данные привязывайте к компании.
А если компаний будет 100, 1000, 10 000 - не повлечет проблем?
Re: Параметр из URL для подключения к БД
Какие проблемы вы имеете в виду? Простите, программист всегда сможет "колено себе прострелить без проблем"
Re: Параметр из URL для подключения к БД
Нагрузка на одну БД от большого количества компаний?
Если допустим 1000 компаний
То в БД будет минимум 7 000 таблиц (то есть 7 таблиц для каждой компании, их скорей всего будет немного больше)
Если допустим 1000 компаний
То в БД будет минимум 7 000 таблиц (то есть 7 таблиц для каждой компании, их скорей всего будет немного больше)
- MetaDriver
- Сообщения: 43
- Зарегистрирован: 2014.04.21, 20:53
- Откуда: Казань
Re: Параметр из URL для подключения к БД
Ну давайте порассуждаем так:rus72ru писал(а):Нагрузка на одну БД от большого количества компаний?
Если допустим 1000 компаний
То в БД будет минимум 7 000 таблиц (то есть 7 таблиц для каждой компании, их скорей всего будет немного больше)
Вот есть движок файловой системы (СУБД), под ней есть папки (базы данных) в каждой папке файлы (таблицы). Управляет всей кухней СУБД. И какая для неё разница распределены таблицы по папкам или все сложены в одну папку? Их в обоих случаях одинаковое количество.
Почему я согласился с коллегой? В случае "все таблицы в одной базе" у нас не возникает проблем с отдельными паролями для каждой базы (ибо база одна), мы просто ограничиваем доступ юзерам по префиксам к таблицам. Т.е. упрощения я вижу в том, что:
.1. Не нужно для каждого юзера создавать компонент БД и его настраивать. Достаточно прописать доступ к строго определённому набору таблиц {company}_[table-names] // где table-names - имена таблиц из "стандартного комплекта юзера".
.2. При администрировании лично у Вас тоже будет меньше проблем с просмотром и администрированием таблиц - они все в едином списке, т.е. Вам не нужно прыгать по разным базам и притом вводить для каждой базы отдельный пароль (оно вам нада? просто представьте...).
Как то так.
В каком случае имеет смысл заводить отдельные базы для юзеров? -- если вы собираетесь предоставить юзеру возможность самому определять набор таблиц в его базе и потом самому (юзеру) их админить. В остальных случаях я б не стал - гемору явно больше...
// эт всё, конечно же имха на основе имеющейся информации, возможно есть неизвестные мне тонкости в вашей задачке, существенным образом влияющие на архитектурную логику. Так что решать всё равно Вам в итоге..
Re: Параметр из URL для подключения к БД
Да это все так, если вопрос о разных серверах не заводить(БД на разные сервера)
Re: Параметр из URL для подключения к БД
Про колено было верно подмечено. На кой вам 7000 тысяч таблиц? Храните данный в таблицах по нужде, а данные цепляйте на company_id
- MetaDriver
- Сообщения: 43
- Зарегистрирован: 2014.04.21, 20:53
- Откуда: Казань
Re: Параметр из URL для подключения к БД
А Вы пока не заводите. Вот если проект выстрелит - тогда и будете решать проблемы с маршрутизацией доступа на несколько серверов. Но у вас к тому времени будет уже гораздо больше ресурсов, нежели сейчас. А пока не актуально.rus72ru писал(а):Да это все так, если вопрос о разных серверах не заводить (БД на разные сервера)
- MetaDriver
- Сообщения: 43
- Зарегистрирован: 2014.04.21, 20:53
- Откуда: Казань
Re: Параметр из URL для подключения к БД
Я чисто для развлекухи обдумал этот вариант, пришёл к выводу что он тоже неоправданно усложняет задачку. А есть ли смысл напрягаться если проект ещё не начал кормить ?mozart писал(а):Про колено было верно подмечено. На кой вам 7000 тысяч таблиц? Храните данный в таблицах по нужде, а данные цепляйте на company_id
Вот когда будет тышша реальных компаний-юзеров, которые ещё и денег дают, тогда и оптимизировать.
Re: Параметр из URL для подключения к БД
По-моему мой вариант стандартен, нормальная форма базы данных. Куда его усложнять-то еще сильнее?MetaDriver писал(а):Я чисто для развлекухи обдумал этот вариант, пришёл к выводу что он тоже неоправданно усложняет задачку. А есть ли смысл напрягаться если проект ещё не начал кормить ?mozart писал(а):Про колено было верно подмечено. На кой вам 7000 тысяч таблиц? Храните данный в таблицах по нужде, а данные цепляйте на company_id
Вот когда будет тышша реальных компаний-юзеров, которые ещё и денег дают, тогда и оптимизировать.
- MetaDriver
- Сообщения: 43
- Зарегистрирован: 2014.04.21, 20:53
- Откуда: Казань
Re: Параметр из URL для подключения к БД
"Стандартные" решения зачастую бывают тормозными. Это как раз тот случай. Выигрыш в количестве таблиц обернётся проигрышем в скорости доступа, линейно нарастающим при увеличении числа компаний-юзеров.mozart писал(а): По-моему мой вариант стандартен, нормальная форма базы данных. Куда его усложнять-то еще сильнее?
// Надо объяснять почему?
Re: Параметр из URL для подключения к БД
если делаете через ar, проблем не будет, интерфейсы пишите, а уже там mongo или redis или ..