В этой статье кратко разберем один из способов оптимизации баз данных, через шардирование и партиционирование. С ростом проекта, растет и база данных. Чем больше проект, тем больше доход. В какой-то момент запросы RPS (количество запросов в секунду) к базе данных возрастают, нагрузка растет, что с этим делать? Но, данный способ больше относиться к теории, так как на сегодняшний день, есть более оптимальные методы решения, на примере той же репликации.
Рекомендуем так же, ознакомиться с этими статьями:
Партицирования "вертикальный шардинг" - разбитие таблицы базы данных на несколько, по какому либо принципу. Самый простой пример, у вас база данных ваших пользователей, которую надо разбить (см. картинку ниже). Что нам это дает: прирост в 3-4 раза, просто в исполнении, один сервер.
Партицирования "горизонтальный шардинг" - тоже самое, только таблички лежат в разных базах на других инстансах (это виртуальная машина, которая запускается и работает в облаке). Что нам это дает: сложнее первого варианта, разные сервера.
* Единственное отличие горизонтального масштабирования от вертикального в том, что горизонтальное масштабирование будет разносить данные по разным инстансам.
* Партицирование применяется на одном инстансе — это тот же самый инстанс базы, где у вас лежала бы большая толстая таблица, но мы ее раздробили на мелкие части.
Хорошая статья об этом более подробно есть на Хабр. Описывать тоже самое не будем, так как там есть пример на базе данных PostgreSQL. Если есть интерес использования данной технологии, изучайте. Но обычно этот вопрос остается на уровне теории при собеседовании.
Источник: http://linuxsql.ru