Yandex / Яндекс - 5
Актуальность: 1 кв 2026
Задача: Есть два сервера PostgreSQL: sql/general
Заголовок раздела «Задача: Есть два сервера PostgreSQL: sql/general»- PROD - OLTP-сервер;
- STATS - сервер для долгих аналитических запросов.
Задача: На текущем сервере в базе prod есть большая (10 Tb) таблица вида: sql/general
Заголовок раздела «Задача: На текущем сервере в базе prod есть большая (10 Tb) таблица вида: sql/general»CREATE TABLE profiles (id SERIAL,data JSONB)В таблице могут быть «дырки», то есть некоторые id могут быть пропущены.
Нужно написать программу для копирования таблицы profiles с PROD на STATS.
Задача: Для работы с базами данных предполагается использовать следующие интерфейсы: go/interfaces
Заголовок раздела «Задача: Для работы с базами данных предполагается использовать следующие интерфейсы: go/interfaces»type Row []interface{}
type Database interface { // Реализация интерфейса Database умеет переустанавливать подключения. // Вызов SaveRows идемпотентен. io.Closer GetMaxID(ctx context.Context) (uint64, error) LoadRows(ctx context.Context, minID, maxID uint64) ([]Row, error) // [minID, maxID) SaveRows(ctx context.Context, rows []Row) error}
func Connect(ctx context.Context, dbname string) (Database, error)// CopyTable// Если full = false, то продолжить переливку данных с места прошлой ошибки.// Если full = true, то перелить все данные.func CopyTable(fromName string, toName string, full bool) error { // код реализации}