Pull to refresh

Comments 4

Да, приходилось и не раз использовать как минимум 2 базы данных.

В некоторых проектах я видел, да и сами такое писали: одну базу данных выделяли для хранения чувствительной информации о пользователях сайта. Доступ к такой БД имел только администратор сайта (у него отдельный вход в панель управления сайтом).

А информация из второй базы данных была частично доступна пользователям/посетителям сайта. Считайте, торчала в паблик.

Такое разделение делалось из соображений безопасности информации: через скулю максимум утечет только вторая БД, а первая будет нетронутой.

Обычно это делается не из-за этих детских страхов, а банально из-за репликации/балансировки - записи идут в мастер, а чтение делается со слейвов. Отсюда разные соединения для чтения и записи.

У меня в ларавеле есть 2 кеша: Редис и файловый и соответственно для быстрого доступа и понимания что есть что - есть два фасада: RCache и FCache

Если достаточно дорогой Eloquent не критичен, то можно просто завести себе условно DB2::class фасад и обращаться через него.

А чтобы такое сделать в сервис провайдере достаточно зарегистировать что-то типа:

$this->app->singleton(DB2::class, fn() => DB::driver('secondary'));

Ну и класс фасада сделать, который отдает self::class как ключ привязки

Как же скучно вы живете. 1, 2 бд на поект. Без усета репликации mysq, refis, dynamodb, datastore, elastic, spanner. Нехватает еще какой нить графовой на подобие neo4j.

Sign up to leave a comment.

Articles