📗 Книгу "Web scalability for startup engineers" советуют как более лёгкую, в сравнение с Клеппманом.
Встретил её совсем недавно.
Давайте по ней изучим Шардирование. Сделал перевод начала раздела стараясь выразить суть и уложится в формат поста телеграмма.
Сценарий
📈 Возрастают нагрузки на 1 сервер с Базой Данных. Необходимо разделить данные по серверам.
Проблема
➡️ Для получения данных, нужно не опрашивать все сервера, а пойти на целевой - где эти данные находятся.
Решение
🔑 Использовать ключ шардирования - сущность, которая позволит определить целевой сервер.
Пример
📦 Онлайн магазин. Сервис изначально имел одну Базу Данных. Для горизонтального масштабирования необходимо распределить данные по серверам.
Необходимо понять, по какому признаку произвести распределение. Поскольку пользователи в магазине не взаимодействуют друг с другом, можно распределить по пользователям.
Тогда при необходимости обновления или получения данных о пользователе запрос пойдёт в определенный инстанс БД.
Пользователя можно идентифицировать по полю user_id - уникальному идентификатору пользователя. Такой id и будет называться ключом шардирования.
Алгоритм шардирования
⚙️ Осталось понять какой user_id к какому серверу будет отнесен. Для этого выбирается алгоритм маппинга/роутинга/маршрутизации/распределения.
Для простоты, у нас есть 2 сервера БД == 2 шарда. В качестве алгоритма будет определение чётности.
Его можно реализовать с помощью операции взятия остатка от деления: user_id % 2 => 1, 0
Получаем распределение данных по признаку "чётности".
Шардировать можно средствами самой БД. Или же создать дополнительный слой/сервис для маршрутизации.
#Books #Sharding
Встретил её совсем недавно.
Давайте по ней изучим Шардирование. Сделал перевод начала раздела стараясь выразить суть и уложится в формат поста телеграмма.
Сценарий
📈 Возрастают нагрузки на 1 сервер с Базой Данных. Необходимо разделить данные по серверам.
Проблема
➡️ Для получения данных, нужно не опрашивать все сервера, а пойти на целевой - где эти данные находятся.
Решение
🔑 Использовать ключ шардирования - сущность, которая позволит определить целевой сервер.
Пример
📦 Онлайн магазин. Сервис изначально имел одну Базу Данных. Для горизонтального масштабирования необходимо распределить данные по серверам.
Необходимо понять, по какому признаку произвести распределение. Поскольку пользователи в магазине не взаимодействуют друг с другом, можно распределить по пользователям.
Тогда при необходимости обновления или получения данных о пользователе запрос пойдёт в определенный инстанс БД.
Пользователя можно идентифицировать по полю user_id - уникальному идентификатору пользователя. Такой id и будет называться ключом шардирования.
Алгоритм шардирования
⚙️ Осталось понять какой user_id к какому серверу будет отнесен. Для этого выбирается алгоритм маппинга/роутинга/маршрутизации/распределения.
Для простоты, у нас есть 2 сервера БД == 2 шарда. В качестве алгоритма будет определение чётности.
Его можно реализовать с помощью операции взятия остатка от деления: user_id % 2 => 1, 0
Получаем распределение данных по признаку "чётности".
Шардировать можно средствами самой БД. Или же создать дополнительный слой/сервис для маршрутизации.
#Books #Sharding
👍3👏1
📖 Нужно больше шардирования!
⚡️Ребята с #faangtalk пригласили выступить со своей темой.
Поскольку последний контекст был про шардирование, решил про него глубже и шире рассказать.
📍Рассмотрим исторический контекст, алгоритмы шардирования, проблемы миграций данных.
Также посмотрим, как AliExpress внедрил свой велосипед для шардирования PostgreSQL баз данных для управления 8 ТБ данных.
🎦 Встретимся у них 20 февраля.
#Sharding
⚡️Ребята с #faangtalk пригласили выступить со своей темой.
Поскольку последний контекст был про шардирование, решил про него глубже и шире рассказать.
📍Рассмотрим исторический контекст, алгоритмы шардирования, проблемы миграций данных.
Также посмотрим, как AliExpress внедрил свой велосипед для шардирования PostgreSQL баз данных для управления 8 ТБ данных.
🎦 Встретимся у них 20 февраля.
#Sharding
🔥7👍1
🎬 Завтра встречаемся с ребятами из дружественного канала, где доложусь на тему Шардирования в System Design.
upd. Запись видео:
https://www.youtube.com/watch?v=xNBN7ZigRA0
#Sharding
upd. Запись видео:
https://www.youtube.com/watch?v=xNBN7ZigRA0
#Sharding
YouTube
#FaangTalk 52 - Шардирование. Масштабирование баз данных для highload систем
Канал с анонсами https://t.me/faangtalk_news
Чат по подготовке к интервью: https://t.me/faangtalk
В гостях - Владимир, автор канала https://t.me/system_design_world
Рассмотрим исторический контекст, алгоритмы шардирования, проблемы миграций данных.
Также…
Чат по подготовке к интервью: https://t.me/faangtalk
В гостях - Владимир, автор канала https://t.me/system_design_world
Рассмотрим исторический контекст, алгоритмы шардирования, проблемы миграций данных.
Также…
👍11