Перейти к основному содержимому

Современные системы хранения данных

Всем

Зачем нужна классификация

В любой IT-системе данные лежат на разных уровнях — от кэша внутри процессора до распределённого объектного хранилища в облаке. У каждого уровня свой баланс скорости, объёма, стоимости и **долговечности.

CPU cache и RAM дают минимальную задержку и нужны для быстрых вычислений "здесь и сейчас". Локальные диски и сетевые массивы — для постоянного хранения на стороне организации. Облачные сервисы и managed-базы данных — для масштабирования, отказоустойчивости и эксплуатации без собственного ЦОД.

Ниже — пять основных групп, которые встречаются в современных архитектурах.


Первичное хранилище (Primary Storage)

Самый быстрый слой — память, к которой процессор обращается напрямую.

КомпонентСутьТипичное применение
CPU Cache (L1, L2, L3)Микроскопические буферы на кристалле процессораИнструкции и горячие данные текущего потока
DRAM (Dynamic RAM)Основная оперативная память ПК и серверовКод, стек, heap, буферы ОС
SRAM (Static RAM)Быстрее DRAM, дороже; часть кэша и регистровКэш процессора, буферы контроллеров
PMem / NVDIMM (Persistent Memory)Байт-адресуемая память с сохранением после отключения питанияУскорение БД, большие in-memory кэши с persistence
Связь с железом ПК

Подробнее про роли CPU и RAM в настольном компьютере — в статье Аппаратное обеспечение. Классификация RAM, ROM, SRAM, DRAM и бытовых накопителей — в главе для новичка. Когда RAM не хватает, ОС использует swap — часть данных выгружается на диск (глоссарий).

Ключевой признак: данные здесь volatile (кроме PMem) — при обесточивании содержимое DRAM теряется.

Коды исправления ошибок (ECC)

В DRAM из‑за всплесков напряжения и космических частиц иногда портится бит. На десктопах это редко заметно; на серверах с большими объёмами RAM — статистически неизбежно.

МеханизмСутьГде встречается
ParityОдин контрольный бит на слово — обнаружение одиночной ошибкиСтарые модули, часть embedded
ECC (Error-Correcting Code)Дополнительные биты по алгоритму Хэмминга — исправление 1 бита, обнаружение 2Серверная RAM (DDR4/5 ECC), некоторые workstation

К кодовому слову из m бит данных добавляют r контрольных бит; при чтении контроллер проверяет допустимость комбинации. Интервал Хэмминга между кодовыми словами задаёт, сколько ошибок можно обнаружить или исправить: для исправления d однобитовых ошибок нужен интервал не меньше 2d + 1.

На HDD и SSD ECC встроен на уровне сектора (вместе с преамбулой и служебными полями) — контроллер диска прозрачно восстанавливает или помечает bad block. Это другой слой, чем ECC в RAM, но идея та же: избыточность для надёжности.

ECC в ПК vs сервер

Обычный ноутбук с "non-ECC" RAM полагается на редкость сбоев. Сервер с терабайтами памяти и критичными БД — ECC и логирование corrected errors в BMC.


Локальное хранилище (Local Storage)

Физические носители, подключённые к одному компьютеру или серверу.

ТипТехнологияКогда уместен
HDDМагнитные пластины, механикаАрхив, медиатека, холодные копии — большой объём за меньшие деньги
SSDФлэш-память (NAND)ОС, приложения, рабочие проекты — высокие IOPS и низкая latency
USB-накопительФлэш в переносном корпусеПеренос файлов, загрузочные флешки
SD-картаКомпактная флэш-памятьКамеры, одноплатники, мобильные устройства
Оптический дискCD / DVD / Blu-rayДолговременный архив, дистрибутивы (реже в 2020-х)
Магнитная лентаЛенточные накопители (LTO)Корпоративный backup и архив — дёшево за ТБ, медленный random access

Сравнение HDD и SSD в контексте сборки ПК — в разделе Постоянные носители статьи про аппаратное обеспечение.

Компромиссы иерархии памяти

Классическая пирамида (регистры → кэш → RAM → SSD → HDD → лента) отражает три оси одновременно:

ОсьВверх пирамиды (к CPU)Вниз пирамиды
Скорость / latencyВышеНиже (механика, сеть)
Стоимость за ГБДорожеДешевле
ОбъёмМеньшеБольше

Процессоры за десятилетия ускорились сильнее дисков: random seek на HDD остаётся порядка миллисекунд, тогда как кэш — наносекунды. Поэтому последовательное чтение с одного цилиндра HDD даёт высокую мегабайтную скорость, а случайные мелкие запросы — узкое место. SSD снимает механику, но дороже за ТБ; лента — почти бесплатна за объём, но без random access.

Подробнее про кэш и locality — Память и накопители для новичка.

RAID — массивы дисков

RAID (Redundant Array of Independent Disks) — несколько физических дисков, которые ОС или контроллер видит как один логический том. Идея: параллелить I/O и/или добавить избыточность без переписывания приложений.

УровеньИдеяПроизводительностьОтказоустойчивость
RAID 0Striping — полосы секторов по кругу на N дискахВысокая на больших последовательных запросахНет — отказ одного диска = потеря всего массива
RAID 1Зеркало — каждая полоса на двух дискахЧтение быстрее (параллельные копии)Выдерживает отказ одного диска
RAID 5Striping + распределённая чётность по дискамХороший балансОдин диск может выйти из строя
RAID 10RAID 1 + RAID 0 (зеркалированные пары, затем striping)Часто в productionВысокая, ценой 50% дисков

RAID 0 не даёт redundancy — это чистый striping. RAID 1 удвоение ёмкости не даёт, зато проще восстановление. На практике аппаратный RAID-контроллер или ZFS/mdadm в Linux скрывают геометрию от приложения.

RAID — это не backup

RAID защищает от отказа диска, но не от удаления файла, ransomware или пожара в ЦОД. Резервные копии — отдельный слой (NAS, object storage, лента).


Сетевое хранилище (Networked Storage)

Данные доступны по сети — нескольким серверам или рабочим станциям одновременно.

ТипУровень доступаПротоколы / примерыТипичные задачи
SAN (Storage Area Network)Блочный — сервер видит "локальный диск"Fibre Channel, iSCSI, NVMe-oFКластеры виртуализации, СУБД с высокими IOPS
NAS (Network Attached Storage)Файловый — каталоги и праваSMB/CIFS, NFSОбщие папки, backup, медиафайлы
Object StorageОбъектный — ключ + метаданные + телоS3 API, MinIO, Ceph RGWАрхивы, логи, статика, backup
Distributed File SystemФайловый, распределённый по узламHDFS, GlusterFS, CephFSBig Data, общие тома в кластере
Блочное и файловое

SAN отдаёт "сырой" том — поверх него ОС создаёт разделы и файловую систему. NAS сразу предоставляет готовые каталоги по сетевому протоколу. Выбор зависит от того, нужен ли серверу "свой диск" или "общая шара".

Подробнее про SAN, NAS и объектное хранилище в корпоративной инфраструктуре — в главе ИТ-инфраструктура.


Облачное хранилище (Cloud Storage)

Управляемые сервисы провайдеров (AWS, Azure, Google Cloud, Yandex Cloud и др.). Пользователь платит за объём, операции и исходящий трафик; масштабирование и репликация — на стороне облака.

Блочное хранилище (Block Storage)

Отдельные тома, которые монтируются к виртуальной машине как диски.

ПровайдерСервис
AWSEBS (Elastic Block Store)
AzureManaged Disks
Google CloudPersistent Disk (PD)

Подходит для системных дисков ВМ, СУБД, приложений с произвольным чтением/записью блоков.

Объектное хранилище (Object Storage)

Неограниченно масштабируемое хранилище неструктурированных данных по HTTP API.

ПровайдерСервис
AWSS3
AzureBlob Storage
Google CloudCloud Storage

Типичные сценарии — бэкапы, статика сайтов, data lake, версионирование файлов.

Файловое хранилище (File Storage)

Управляемые сетевые файловые шары.

ПровайдерСервис
AWSEFS (Elastic File System)
AzureAzure Files
Google CloudFilestore

Удобно, когда нескольким ВМ нужен общий каталог по NFS или SMB без собственного NAS.


Облачные базы данных (Cloud Databases)

Managed-сервисы — провайдер берёт на себя патчи, репликацию, backup и масштабирование. Приложение подключается по сети через драйвер или API.

Реляционные (SQL)

ПровайдерПримеры сервисов
AWSRDS (PostgreSQL, MySQL, MariaDB, SQL Server, Oracle)
AzureAzure SQL, Azure Database for PostgreSQL/MySQL
Google CloudCloud SQL

ACID-транзакции, строгая схема, JOIN — классика для учёта, заказов, профилей пользователей.

NoSQL

ПровайдерПримеры сервисов
AWSDynamoDB (ключ-значение / документы)
Google CloudBigtable (ширококолоночная)
AzureCosmos DB (мультимодельная)

Горизонтальное масштабирование, гибкая схема, высокая пропускная способность — логи, сессии, каталоги с миллионами SKU, IoT-потоки.

Storage и база данных — разные слои

Объектное хранилище (S3) держит файлы и blob'ы. Managed SQL/NoSQL — структурированные записи с индексами и запросами. В веб-приложении часто сочетают оба слоя: PostgreSQL для транзакций, S3 для вложений (архитектура веб-приложения).

Эволюция моделей данных (файлы → иерархия → SQL → NoSQL) — отдельная тема в Эволюция систем хранения данных.


Как выбирать уровень

КритерийБлиже к CPU/RAMБлиже к облаку
LatencyНаносекунды – микросекундыМиллисекунды – десятки мс (сеть)
Объём на единицу стоимостиМеньше, дороже за ГББольше, дешевле за ТБ
ДолговечностьVolatile (RAM) или локальный дискРепликация, geo-redundancy, SLA
МасштабированиеОграничено железом одной машиныГоризонтально, по запросу
ЭксплуатацияАдмин сервера / пользователь ПКManaged-сервис провайдера

Практическое правило — горячие данные — ближе к процессору (кэш, RAM, локальный NVMe); холодные архивы и shared-контент — object storage или лента; транзакционные записи — СУБД (своё железо или managed).


Краткая шпаргалка

ГруппаПримерыГлавный вопрос
ПервичноеL1–L3, DRAM, PMem"Что процессор читает прямо сейчас?"
ЛокальноеSSD, HDD, USB, SD"Где лежат файлы на этом компьютере?"
СетевоеSAN, NAS, Ceph, MinIO"Как серверы делят диски и каталоги?"
ОблачноеEBS, S3, EFS"Какой managed-том или bucket нужен ВМ?"
Облачные БДRDS, DynamoDB, Cosmos DB"Где хранятся строки с запросами и индексами?"

Рекомендую читать дальше