Параметр из URL для подключения к БД

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
rus72ru
Сообщения: 27
Зарегистрирован: 2013.12.06, 14:03

Параметр из URL для подключения к БД

Сообщение rus72ru »

Идея такая:
Будет основной домен site.com
Пользователь создает свою компанию
После этого система автоматически создает
-поддомен с уникальным именем компании например company.site.com
-базу данных для компании с именем {компания}_bd, пароль секретный ключ в таблице с компаниями


Вопросы:
1. Может есть более простая подобная схема работы, при том что здесь придется работать с двумя базами одновременно.
2. Как правильно? то есть где, вытягивать имя компании из поддомена(необходим для работы с базой данной)
rus72ru
Сообщения: 27
Зарегистрирован: 2013.12.06, 14:03

Re: Параметр из URL для подключения к БД

Сообщение rus72ru »

Как сделать еще одно подключения к БД используя логоин и пароль из другой БД?
Аватара пользователя
maleks
Сообщения: 1985
Зарегистрирован: 2012.12.26, 12:56

Re: Параметр из URL для подключения к БД

Сообщение maleks »

еще один компонент БД объявить и его настроить и дальше его использовать.
Yii2 universal module sceleton - for basic and advanced templates
mozart
Сообщения: 15
Зарегистрирован: 2012.02.20, 20:32

Re: Параметр из URL для подключения к БД

Сообщение mozart »

Не создавайте много баз данных, это потом невозможно будет поддерживать. Идентифицируйте компанию по домену, а все данные привязывайте к компании.
Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Параметр из URL для подключения к БД

Сообщение MetaDriver »

mozart писал(а):Не создавайте много баз данных, это потом невозможно будет поддерживать. Идентифицируйте компанию по домену, а все данные привязывайте к компании.
Разумно. Если имя субдомена сделать префиксом для таблиц юзера (хозяина поддомена), то путаницы с адресацией таблиц не будет.
rus72ru
Сообщения: 27
Зарегистрирован: 2013.12.06, 14:03

Re: Параметр из URL для подключения к БД

Сообщение rus72ru »

MetaDriver писал(а):
mozart писал(а):Не создавайте много баз данных, это потом невозможно будет поддерживать. Идентифицируйте компанию по домену, а все данные привязывайте к компании.
Разумно. Если имя субдомена сделать префиксом для таблиц юзера (хозяина поддомена), то путаницы с адресацией таблиц не будет.


А если компаний будет 100, 1000, 10 000 - не повлечет проблем?
mozart
Сообщения: 15
Зарегистрирован: 2012.02.20, 20:32

Re: Параметр из URL для подключения к БД

Сообщение mozart »

Какие проблемы вы имеете в виду? Простите, программист всегда сможет "колено себе прострелить без проблем" :)
rus72ru
Сообщения: 27
Зарегистрирован: 2013.12.06, 14:03

Re: Параметр из URL для подключения к БД

Сообщение rus72ru »

Нагрузка на одну БД от большого количества компаний?
Если допустим 1000 компаний
То в БД будет минимум 7 000 таблиц (то есть 7 таблиц для каждой компании, их скорей всего будет немного больше)
Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Параметр из URL для подключения к БД

Сообщение MetaDriver »

rus72ru писал(а):Нагрузка на одну БД от большого количества компаний?
Если допустим 1000 компаний
То в БД будет минимум 7 000 таблиц (то есть 7 таблиц для каждой компании, их скорей всего будет немного больше)
Ну давайте порассуждаем так:
Вот есть движок файловой системы (СУБД), под ней есть папки (базы данных) в каждой папке файлы (таблицы). Управляет всей кухней СУБД. И какая для неё разница распределены таблицы по папкам или все сложены в одну папку? Их в обоих случаях одинаковое количество.
Почему я согласился с коллегой? В случае "все таблицы в одной базе" у нас не возникает проблем с отдельными паролями для каждой базы (ибо база одна), мы просто ограничиваем доступ юзерам по префиксам к таблицам. Т.е. упрощения я вижу в том, что:
.1. Не нужно для каждого юзера создавать компонент БД и его настраивать. Достаточно прописать доступ к строго определённому набору таблиц {company}_[table-names] // где table-names - имена таблиц из "стандартного комплекта юзера".
.2. При администрировании лично у Вас тоже будет меньше проблем с просмотром и администрированием таблиц - они все в едином списке, т.е. Вам не нужно прыгать по разным базам и притом вводить для каждой базы отдельный пароль (оно вам нада? :) просто представьте...).
Как то так.
В каком случае имеет смысл заводить отдельные базы для юзеров? -- если вы собираетесь предоставить юзеру возможность самому определять набор таблиц в его базе и потом самому (юзеру) их админить. В остальных случаях я б не стал - гемору явно больше...
// эт всё, конечно же имха на основе имеющейся информации, возможно есть неизвестные мне тонкости в вашей задачке, существенным образом влияющие на архитектурную логику. Так что решать всё равно Вам в итоге..
rus72ru
Сообщения: 27
Зарегистрирован: 2013.12.06, 14:03

Re: Параметр из URL для подключения к БД

Сообщение rus72ru »

Да это все так, если вопрос о разных серверах не заводить(БД на разные сервера)
mozart
Сообщения: 15
Зарегистрирован: 2012.02.20, 20:32

Re: Параметр из URL для подключения к БД

Сообщение mozart »

Про колено было верно подмечено. На кой вам 7000 тысяч таблиц? Храните данный в таблицах по нужде, а данные цепляйте на company_id
Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Параметр из URL для подключения к БД

Сообщение MetaDriver »

rus72ru писал(а):Да это все так, если вопрос о разных серверах не заводить (БД на разные сервера)
А Вы пока не заводите. Вот если проект выстрелит - тогда и будете решать проблемы с маршрутизацией доступа на несколько серверов. Но у вас к тому времени будет уже гораздо больше ресурсов, нежели сейчас. А пока не актуально.
Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Параметр из URL для подключения к БД

Сообщение MetaDriver »

mozart писал(а):Про колено было верно подмечено. На кой вам 7000 тысяч таблиц? Храните данный в таблицах по нужде, а данные цепляйте на company_id
Я чисто для развлекухи обдумал этот вариант, пришёл к выводу что он тоже неоправданно усложняет задачку. А есть ли смысл напрягаться если проект ещё не начал кормить ? :) :)
Вот когда будет тышша реальных компаний-юзеров, которые ещё и денег дают, тогда и оптимизировать.
mozart
Сообщения: 15
Зарегистрирован: 2012.02.20, 20:32

Re: Параметр из URL для подключения к БД

Сообщение mozart »

MetaDriver писал(а):
mozart писал(а):Про колено было верно подмечено. На кой вам 7000 тысяч таблиц? Храните данный в таблицах по нужде, а данные цепляйте на company_id
Я чисто для развлекухи обдумал этот вариант, пришёл к выводу что он тоже неоправданно усложняет задачку. А есть ли смысл напрягаться если проект ещё не начал кормить ? :) :)
Вот когда будет тышша реальных компаний-юзеров, которые ещё и денег дают, тогда и оптимизировать.
По-моему мой вариант стандартен, нормальная форма базы данных. Куда его усложнять-то еще сильнее? :shock:
Аватара пользователя
MetaDriver
Сообщения: 43
Зарегистрирован: 2014.04.21, 20:53
Откуда: Казань

Re: Параметр из URL для подключения к БД

Сообщение MetaDriver »

mozart писал(а): По-моему мой вариант стандартен, нормальная форма базы данных. Куда его усложнять-то еще сильнее? :shock:
"Стандартные" решения зачастую бывают тормозными. Это как раз тот случай. :D Выигрыш в количестве таблиц обернётся проигрышем в скорости доступа, линейно нарастающим при увеличении числа компаний-юзеров.
// Надо объяснять почему?
lynicidn
Сообщения: 2222
Зарегистрирован: 2014.05.24, 15:12

Re: Параметр из URL для подключения к БД

Сообщение lynicidn »

если делаете через ar, проблем не будет, интерфейсы пишите, а уже там mongo или redis или ..
Ответить