Глава про RAM и хранилище важна тем, что показывает не просто разные носители, а резкие ступени в цене задержки, объёме и долговечности данных.
В реальной работе это помогает осмысленно проектировать горячий и холодный пути: понимать, что держать в памяти, что переносить на SSD или HDD и как это меняет API, кэши и пользовательский опыт.
В интервью и архитектурных обсуждениях материал делает разговор о хранении конкретным: через хвостовые задержки, долговечность данных и инфраструктурный бюджет.
Практическая польза главы
Иерархия памяти
Помогает проектировать горячий и холодный пути с учётом реальной разницы в задержках и стоимости.
Размещение данных
Учит, что держать в RAM, что на SSD или HDD, и как это влияет на API и пользовательский опыт.
Стабильность под нагрузкой
Показывает, как избежать деградации при росте рабочего набора и давлении на кэш.
Компромиссы на интервью
Усиливает объяснение компромиссов между скоростью доступа, долговечностью и бюджетом инфраструктуры.
Источник
Random-access memory
Устройство RAM и ключевые свойства оперативной памяти.
RAM и — это не конкуренты, а разные ступени одной иерархии. RAM даёт минимальную для горячих данных, а SSD и HDD дают объём, цену и .
На практике решение почти всегда начинается с понимания и : насколько велик , какую роль играет , где система упирается в , а где — в .
Ниже мы будем смотреть на , , , , , , , и , потому что именно эти сигналы показывают, где заканчивается запас и начинается реальное узкое место.
RAM и хранилище: в чём разница
Как устроена RAM
- DRAM организована в матрицы ячеек, к которым обращается контроллер памяти.
- Доступ произвольный, но чтение в пределах одной строки обычно быстрее благодаря буферу строки.
- Память требует периодического обновления ячеек, поэтому часть времени уходит на фоновые операции.
- Процессор работает через кэши L1/L2/L3 и частично скрывает задержку доступа к RAM.
Как устроено хранилище
- Данные читаются и записываются блоками и страницами.
- У HDD к задержке добавляется механическое позиционирование, а SSD работает с NAND-страницами и блоками стирания.
- Производительность зависит от очередей ввода-вывода, уровня параллелизма и размера блока.
- Файловые системы и СУБД строят поверх этого журналы, индексы и стратегии компакции.
RAM
- Энергозависима: данные исчезают при отключении питания.
- Даёт минимальную задержку доступа и очень высокую скорость чтения и записи.
- Лучше всего подходит для горячих данных, индексов и кэшей.
- Заметно дороже хранилища в пересчёте на гигабайт.
Хранилище
- Не теряет данные при отключении питания.
- Доступ к данным на порядки медленнее, чем у RAM.
- Даёт гораздо большую доступную ёмкость.
- Хранение на гигабайт обходится заметно дешевле.
Динамическая визуализация: калькулятор объёма и уровней хранения
Упрощённый калькулятор показывает, как данные распределятся между RAM, SSD и HDD после учёта репликации и сжатия.
Дневной объём данных
600 ГБ/день
Срок хранения
30 дней
Репликация
x3
Сжатие
2.0x
Горячий слой данных
20%
Доля тёплого слоя на SSD
60%
Дополнительный объём индексов
35%
Результат калькулятора ёмкости
Общий объём данных
26.37 TB
RAM для горячего набора
3780 GB
Объём SSD
12.66 TB
Объём HDD
8.44 TB
Распределение по уровням хранения
Покрытие горячего слоя RAM-контуром: 70%
Оценка ежемесячной стоимости: $13781 (~$165372/год).
Источник
Solid-state drive
Базовые характеристики SSD и причины низкой задержки относительно HDD.
Динамическая визуализация: калькулятор задержек
Меняйте профиль нагрузки и смотрите, как доля попаданий в кэш, случайный ввод-вывод и глубина очереди меняют 95-й перцентиль (p95) для разных слоёв хранения.
Доля попаданий в кэш
85%
Случайный ввод-вывод
70%
Глубина очереди
16
Целевые операции ввода-вывода (IOPS)
50,000
Целевой уровень сервиса по 95-му перцентилю (p95)
15 ms
RAM
p95: 0.10 us
Только устройство: 0.10 us
Нагрузка: 0.20x
Укладывается в целевой уровень сервиса
NVMe SSD
p95: 46 us
Только устройство: 306 us
Нагрузка: 0.20x
Укладывается в целевой уровень сервиса
SATA SSD
p95: 313 us
Только устройство: 2.08 ms
Нагрузка: 0.71x
Укладывается в целевой уровень сервиса
HDD
p95: 1084.1 ms
Только устройство: 7227.2 ms
Нагрузка: 142.86x
Не укладывается в целевой уровень сервиса
Рекомендуемый основной слой: NVMe SSD
Текущие параметры укладываются в заданный целевой уровень сервиса при выбранном профиле кэш-хитов.
Где лучше подходит RAM, SSD и HDD
Выберите профиль нагрузки и баланс между производительностью и стоимостью. Калькулятор предложит, какой долей RAM, SSD и HDD разумно пользоваться.
Приоритет стоимости
45%
0 = сначала производительность, 100 = сначала стоимость
Годовой рост нагрузки
+35%
Целевой 99-й перцентиль (p99)
6 ms
Целевые IOPS
120,000
Рекомендуемая доля по уровням хранения
Прогноз по приёму данных: 540 ГБ/день -> общий объём контура: 23.73 ТБ
Риск: проверьте рост нагрузки и глубину очередей, чтобы не получить скрытую деградацию в пике.
Какой контур выбрать под эту нагрузку
- Держать агрессивный RAM-кэш для горячих ключей и индексов.
- Сделать SSD основным рабочим слоем для чтения и записи под целевой уровень сервиса.
- Холодный слой будет небольшим: здесь важнее задержка, чем цена хранения.
Источник
Hard disk drive
Механический диск и особенности случайного и последовательного доступа.
HDD и SSD: сравнение
Для API с большим числом ветвлений и транзакционных нагрузок случайный ввод-вывод почти всегда требует SSD. HDD остаётся ценным слоем для архивов, исторических выборок и долгого хранения, когда минимальная задержка не критична.
HDD
- Механические компоненты и вращающиеся пластины.
- Высокая задержка при случайном доступе из-за позиционирования головок.
- Большая ёмкость и низкая цена за ТБ.
- Подходит для холодных данных, бэкапов и архивов.
SSD
- Флеш-память без движущихся частей.
- Низкая задержка и высокий уровень операций ввода-вывода в секунду (IOPS) по сравнению с HDD.
- Сильно лучше подходит для случайного доступа.
- Ресурс записи ограничен, поэтому важны понятный жизненный цикл данных и мониторинг.
Частые ошибки
Держать весь набор данных только на SSD
Без многоуровневого хранения стоимость быстро растёт, а холодные данные продолжают занимать дорогой быстрый слой.
Игнорировать рабочий набор
Если горячий рабочий набор не помещается в RAM, 95-й и 99-й перцентили быстро деградируют.
Смотреть только на среднюю задержку
Для хранилища важны хвосты распределения: 95-й и 99-й перцентили (p95, p99) и поведение системы при росте очередей.
Не управлять жизненным циклом данных
Без автоматического перевода данных из RAM на SSD, а затем на HDD система теряет предсказуемость по цене и задержке.
Практические рекомендации
Многоуровневое хранение по профилю доступа
Горячие ключи и индексы держите в RAM, рабочий слой — на SSD, архив и длинный хвост — на HDD или в объектном хранилище.
Планирование ёмкости с запасом
Сразу учитывайте репликацию, сжатие, дополнительный объём индексов и годовой рост нагрузки.
Сначала целевой уровень сервиса, потом носитель
Сначала фиксируйте 99-й и 95-й перцентили (p99, p95) и целевое число операций ввода-вывода в секунду (IOPS), затем подбирайте RAM, SSD и HDD, и только потом оптимизируйте цену.
Наблюдаемость контура хранения
Следите за долей попаданий в кэш, глубиной очередей, задержкой вызова fsync и насыщением каждого слоя хранения.
Практический вывод
Выбор между RAM, SSD и HDD — это не бинарное решение, а проектирование многоуровневого контура хранения. Сначала фиксируйте целевой уровень сервиса и профиль нагрузки, затем планируйте объём, а уже после этого оптимизируйте стоимость через распределение данных по уровням хранения и понятный жизненный цикл.
Связанные главы
- Почему фундаментальные знания важны - поясняет, как ограничения памяти и дисков влияют на архитектурные решения.
- Structured Computer Organization (short summary) - даёт аппаратный контекст: иерархию памяти, шины и взаимодействие CPU с вводом-выводом.
- Операционная система: обзор - дополняет тему страничным кэшем, планированием ввода-вывода и влиянием ядра на задержку.
- Зачем разбираться в системах хранения - расширяет тему до выбора подходов к базам данных, репликации, индексов и стратегии хранения.
- Фреймворк выбора СУБД - помогает выбирать тип базы данных и стратегию хранения под конкретный профиль нагрузки.
- Performance Engineering в System Design - даёт практики профилирования задержки и пропускной способности и помогает искать узкие места в контуре ввода-вывода.
- CPU и GPU: обзор и различия - связывает выбор вычислительных ресурсов с пропускной способностью памяти и ценой перемещения данных.
