Стратегии шардирования: range, hash, consistent hashing. Hotspot, even distribution, минимальный rebalancing.
Шардирование — горизонтальное разбиение данных на N независимых баз (шардов). Когда одна машина не тянет нагрузку или объём, шардинг позволяет масштабироваться линейно. Главный вопрос: как маппить ключи на шарды.
Три базовых стратегии. Trade-off — между равномерностью распределения, range query эффективностью и стоимостью добавления шарда.
Range sharding — ключи разбиты по диапазонам (A-F → Shard 1, G-M → Shard 2). Плюс: range queries работают эффективно (SELECT WHERE created_at BETWEEN ...). Минус: skew-данные (timestamps, autoincrement) убивают равномерность — все свежие записи в один шард.
Hash sharding — hash(key) % N определяет шард. Идеально равномерное распределение, неважно какие ключи. Цена: range queries требуют scatter-gather по всем шардам. Дефолт для KV-доступа.
Consistent hashing — ключи и шарды размещаются на «кольце» хешей. Каждый ключ идёт на следующий по часовой стрелке шард. При добавлении шарда двигается только ~1/N ключей, не все. Применяется в DynamoDB, Cassandra, Redis Cluster.