Ответ
Шардирование — это горизонтальное разделение данных между разными серверами (шардами), где каждый шард хранит свою часть данных. Увеличивает пропускную способность.
Репликация — это копирование одних и тех же данных на несколько серверов (реплик). Повышает отказоустойчивость и читающую производительность.
Пример шардирования в Go:
func getShard(userID string) int {
hash := fnv.New32a()
hash.Write([]byte(userID))
return int(hash.Sum32() % 10) // 10 шардов
}
Пример репликации:
func writeToAllReplicas(data []byte) {
for _, replica := range replicas {
replica.Write(data) // пишем во все реплики
}
}
Ключевое отличие: шардирование распределяет нагрузку, репликация дублирует данные.