Шардирование и партиционирование. Разница и применение в Go.

Ответ

Партиционирование - логическая таблица разбита на партиции внутри одной СУБД. Шардирование - данные на разных серверах (разные инстансы БД). В Go при шардировании приложение выбирает шард по ключу (user_id, hash(id) % N) и обращается к нужному *sql.DB. Транзакции и JOIN между шардами в приложении не поддерживаются - делают в коде или избегают. Партиционирование прозрачно для приложения - один DSN.

shard := db.shards[userID%len(db.shards)]
return shard.QueryContext(ctx, "SELECT ... WHERE user_id = $1", userID)
🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.