Подборка на тему данных

Можно утверждать, что на рынке сформировались ожидания от системных аналитиков, которые тяготеют в сторону экспертизы в области архитектуры решений. И особенно часто востребовано понимание оптимизации работы с данными. Это замечено в том числе по требованиям, заявляемым в вакансиях.

В этой связи подготовил полезную подборку материалов. Лаконично, только база плюс ссылки на более подробную информацию.

Существует два популярных способа горизонтального масштабирования баз данных (БД). Это: секционирование и шардирование. Оба они реализуются посредством разделения больших объёмов данных на более мелкие, хотя с некоторыми отличиями.

Секционирование, или партицирование — это разделение одной таблицы БД на отдельные физические части (секции, партиции). Такое разделение выполняется построчно, а отнесение строк к той или иной секции выполняется на основе значения выбранного поля (или группы полей).

Шардирование — это разделение данных по нескольким серверам (шардам). Каждый шард представляет собой независимую базу данных, хранящую только часть данных.

Наиболее типичный случай это разделения данных по шардам на основе значения выбранного поля (или группы полней), называемого ключом шардирования. Пример: в качестве ключа шардирования можно выбрать ID клиента и реализовать хранение всех данных о клиенте (счета, банковские продукты и пр.) централизованно на одном шарде.

В контексте IT слово "кэш", как правило, обозначает метод временного хранения данных для быстрого повторного доступа к ним. Кэш позволяет сократить задержки и увеличить производительность различных компонентов компьютерной системы.

В зависимости от того, о каком компоненте системы идёт речь, можно выделить несколько основных типов кэша.

  • аппаратный кэш;
  • программный кэш;
  • веб-кэш;
  • DNS-кэш.

Если сосредоточиться на более прикладных вопросах, которые обычно интересуют системных аналитиков в части кэширования, то стоит рассмотреть два термина: стратегии кэширования и политики очистки кэша.

  • стратегии кэширования — обеспечивают эффективное использование ресурсов путём оптимизации чтения и записи данных;
  • политики очистки кэша — определяют правила управления памятью кэша и в зависимости от цели эти политики можно разделить на две категории: политики вытеснения и политики инвалидации.

Также рекомендую взять шпаргалку от Алекса Сюя на тему масштабирования уровня данных. На ней наглядно представлены вопросы репликации, шардирования, распределённого кэша и CQRS.