Как я могу переключить соединение с базой данных и поделиться им с моделью в Golang? (Ревель + Горм)

Я хочу настроить сегментирование базы данных, например https://github.com/thiagopradi/octopus в Revel + Gorm ( или любой другой ORM в Golang).

Я получу строку подключения к базе данных в фильтре безопасности (это был настраиваемый фильтр, добавленный после фильтра параметров revel). Теперь мне нужно переключить соединение с базой данных в следующем пользовательском фильтре с именем фильтр базы данных.

А также необходимо реализовать пул соединений БД при запуске приложения Revel.


person Kumar Siva    schedule 24.05.2016    source источник


Ответы (1)


Во-первых, подготовьте соединение с БД при инициализации (вызов только один раз):

db1, err := gorm.Open(dbdriver, dboption) //your main server
db2, err := gorm.Open(dbdriver, dboption) //your sharding 1
db3, err := gorm.Open(dbdriver, dboption) //your sharding 2

И в вашем фильтре db просто выберите между db1, db2 или db3, которые вы хотите использовать в своей модели. Это все.

Горм уже сделал бассейн для вас, так что вам не нужно заботиться.

person Apin    schedule 24.05.2016
comment
Я не знаю параметры базы данных осколка, такие как хост, имя базы данных, пока запрос не пройдет фильтр безопасности. Поэтому я не могу создать соединение с БД внутри инициализации - person Kumar Siva; 24.05.2016
comment
почему ты не знаешь? это приложение, которое вы будете создавать, нет? - person Apin; 25.05.2016
comment
Я получу информацию о пользовательской базе данных из другой службы (кластерной службы). Это будет получено в фильтре безопасности. - person Kumar Siva; 25.05.2016
comment
Но я считаю, что у вас есть список серверов БД, поэтому вы можете подключиться ко всем имеющимся у вас БД. И когда придет любой запрос, просто выберите, какую БД использовать. Я до сих пор не знаю, почему вы не знаете свою БД. - person Apin; 25.05.2016
comment
Список серверов БД поддерживается в другом сервисе. Один сервер db будет иметь 300 db. Допустим у нас есть 5 дб сервер значит нужно ли создавать 1500 горм.опен? Правильно ли это сделать? - person Kumar Siva; 26.05.2016