Вопрос проверяет понимание горизонтального масштабирования баз данных и проблем, которые решает шардирование.
Шардирование (sharding) — это техника горизонтального масштабирования баз данных, при которой данные разбиваются на несколько независимых частей (шардов), каждая из которых хранится на отдельном сервере. Каждый шард содержит подмножество данных и работает как самостоятельная база данных.
Основная проблема — это ограничения одного сервера базы данных. Когда объем данных и количество запросов растут, один сервер перестает справляться: увеличивается время ответа, падает пропускная способность, а стоимость вертикального масштабирования (улучшение железа) становится непомерной. Шардирование позволяет распределить нагрузку между несколькими серверами, обеспечивая горизонтальное масштабирование.
Рассмотрим простой пример шардирования по идентификатору пользователя. Допустим, у нас есть два шарда: первый хранит пользователей с ID от 1 до 1000, второй — с ID от 1001 до 2000.
// Функция для определения шарда по ID пользователя
function getShardId(userId) {
if (userId <= 1000) return 'shard1';
else return 'shard2';
}
// Пример запроса к базе данных
const userId = 1234;
const shardId = getShardId(userId);
const userData = await db.query(`SELECT * FROM users WHERE id = ${userId}`, { shard: shardId });Вывод: Шардирование применяется, когда вертикальное масштабирование становится неэффективным или слишком дорогим, и требуется распределить нагрузку на множество серверов для обеспечения производительности и отказоустойчивости.
Frontend developer
Ментор по Frontend
Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства
Записаться на консультацию