B
Backend Notes 🧠 👨‍💻
@backend_architecture1.8K подп.
4.8Kпросмотров
10 июля 2023 г.
📷 ФотоScore: 5.2K
🔥 Шардирование БД Шардирование (sharding) - это подход к хранению данных, при котором данные разбиваются на более мелкие части, называемые шардами. Каждый шард использует одну и ту же схему, хотя фактические данные в каждом шарде уникальны для шарда. Шард может быть размещен на разных физических/виртуальных машинах. ⚙️ На первой картинке показано как данные размещаются в шарды на основе идентификаторов пользователей, с использованием хеш-функции: user_id % 4. Допустим, мы хотим вставить новую запись со значением user_id = 123, эта запись попадет в шард №3, так как 123 % 4 = 3. 🗝️ Ключ шардирования определяет, как данные должны быть распределены между шардами. В данном примере, ключ шардирования - user_id. Однако, ключ может быть и составным. Ключ шардирования позволяет эффективно извлекать и изменять данные, направляя запросы к нужному шарду. В идеале ключ шардирования должен равномерно распределять данные по шардам. ‼️ Если запрос не содержит ключ шардирования для определения шарда => придется обходить все шарды - это долгий и ресурсоемкий запрос. ⬇️ Возможные проблемы шардирования ⬇️ 1️⃣ Resharding данных: resharding данных необходим, когда шард переполняется из-за быстрого роста, удаляется или добавляется новый шард. 📌 Например, Сonsistent hashing (хеш-кольцо, перераспределение данных происходит между соседями), широко используется для решения этой проблемы. 2️⃣ Проблема знаменитостей: чрезмерный доступ к определенному шарду может привести к перегрузке сервера. Представьте, что данные популярных блогеров попадают в один и тот же шард => перегруженность операциями чтения. 📌 Чтобы решить эту проблему, нам может понадобиться выделить шард для каждой знаменитости. 3️⃣ JOIN и денормализация. После того, как база данных была разделена на несколько шардов, трудно выполнять операции соединения (JOIN) между шардами. 📌 Распространенным обходным путем является денормализация базы данных, чтобы запросы можно было выполнять в одном шарде. ⬇️ А как бы вы решили эти проблемы? ⬇️ #database #sharding
4.8K
просмотров
2036
символов
Нет
эмодзи
Да
медиа

Другие посты @backend_architecture

Все посты канала →
🔥 Шардирование БД Шардирование (sharding) - это подход к хр — @backend_architecture | PostSniper