Оценка объёма хранения

Базовый System Design
≈ 3 мин чтения

Хранилище растёт от количества данных, их размера и времени

Для оценки объёма хранения обычно достаточно трёх вопросов: сколько объектов появляется, сколько весит один объект и как долго данные сохраняются. После этого базовая формула становится почти механической.

storage = objects × average_object_size × retention

Например, если сервис ежедневно создаёт 2 миллиона объектов по 2 KB, то за день появляется около 4 GB новых данных. За год — примерно 1.46 TB сырых данных.

2,000,000 objects/day × 2 KB ≈ 4 GB/day
4 GB/day × 365 days ≈ 1.46 TB/year

Сначала считай полезные данные

На первом проходе лучше начать с того, что действительно создаёт продукт: тексты, сообщения, изображения, события, документы и другие сущности. Так получается понятная базовая цифра, с которой легко работать дальше.

Если объект состоит из нескольких частей, их можно сложить. Например, для сообщения отдельно оценить текст и метаданные, а для загружаемого медиа — сам файл и небольшой набор описательных полей.

Не все данные живут одинаково долго

Срок хранения сильно меняет итоговый объём. Логи могут храниться несколько недель, пользовательские сообщения — годами, а временные результаты обработки удаляться через несколько часов. Поэтому один общий retention для всей системы часто вводит в заблуждение.

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

Сырые данные — не вся фактическая ёмкость

Реальная система почти всегда требует больше места, чем сумма полезных объектов. Место занимают служебные данные, индексы, версии, резервные копии и дополнительные копии для устойчивости. На этом этапе не нужно детально проектировать механизм хранения — достаточно понимать, что raw storage и необходимая физическая ёмкость отличаются.

raw_data = 2 TB
storage_overhead_factor = 2.5
planned_capacity ≈ 5 TB

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

Проверь горизонт планирования

Фраза «нам нужно 5 TB» мало полезна без срока. 5 TB через месяц и 5 TB через пять лет — это совершенно разные темпы роста. Поэтому хорошая оценка отвечает не только на вопрос о размере, но и на вопрос к какому моменту он будет достигнут.

Для первого расчёта не пытайся учесть каждый байт. Сначала получи порядок величин для полезных данных, а затем отдельным коэффициентом добавь то, что действительно существенно для выбранного способа хранения.