в го ( драйвер pgx)
Можно ли реализовать возможность слать READ запросы на один эндпоинт (реплика БД) а WRITE на другой (MAIN database).
Первое что пришло в голову - просто сделать 2 инстанса БД в сервисе и вызывать их явно для каждой операции. Но является ли это нормальной практикой? Или может что-то есть покруче на уровне API самой либы? Кто-то сталкивался с похожей задачей? Буду благодарен за советы)
Для подобных целей я обычно видел реализации двух репозиториев. Read и Write
что-то вроде этого? ``` type Repository struct { replica *sqlx.DB main *sqlx.DB } // foo реализует чтение func (r *Repository) foo() { r.replica.read(…) } // bar реализует запись func (r *Repository) bar() { r.main.write(…) } ```
Пока что на go руку не набил. Но обычно просто два разных интерфейса
В database/sql есть поддержка реплик
спасибо! я верил что там должно быть что-то похожее, пойду ознакамливаться)
Если базы на разных серверах с этим никаких проблем?
Обсуждают сегодня