Знание шардирования
Шардирование — это разделение таблицы или базы на независимые части (шарды), обычно по user_id или дате. Это позволяет масштабировать систему горизонтально.
Шардирование применяется, когда объём данных выходит за рамки возможностей одной машины. Данные делятся между несколькими независимыми хранилищами (шардами), и приложение направляет запросы в нужный шард.
Способы:
По user_id % N — равномерное распределение по числу шардов.
По дате — логическое деление по времени.
Плюсы:
масштабируемость;
снижение нагрузки на одну БД;
возможность распараллеливания.
Минусы:
сложность обработки глобальных запросов;
необходимость маршрутизации на уровне приложения;
поддержание уникальности ID.
Для последнего часто используют UUID или Snowflake.