У меня есть приложение Rails/ActiveRecord, которое иногда выполняет некоторые тяжелые запросы только для чтения по сравнению с моделями приложения для ad-hoc администрирования/отчетности. В настоящее время я отправляю эти запросы в отдельную конечную точку базы данных для чтения-реплики с использованием драгоценного камня seamless_database_pool, поэтому эти запросы не добавляют нагрузку на основную базу данных. Однако эта настройка добавляет постоянную зависимость времени выполнения от реплики, уменьшая доступность моего приложения - всякий раз, когда реплика отправляется в автономный режим для обслуживания, весь сайт возвращает 503 ошибки на любой запрос, хотя большинство запросов никогда не запрашивает read-replica вообще ,ActiveRecord читает реплику для запросов к отчетности
Как подключиться к считываемой реплике для специальных запросов отчетов на моделях ActiveRecord, не влияя на доступность моего приложения? Есть ли другой блок-адаптер для баз данных, который явно обрабатывает этот прецедент?
Или, (еще лучше) можно ли выполнить это напрямую с помощью ActiveRecord? Я знаю, что можно подключиться к отдельной базе данных, позвонив #establish_connection
, чтобы направить конкретную модель в отдельную базу данных по всем всем действиям контроллера, но для моего варианта использования мне нужно подключиться к отдельной базе данных через все моделей, но только для конкретных действий контроллера.