Раздел описывает способы представления, хранения, изменения, передачи, поиска и восстановления данных в программных системах.

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

Основные направления

  • Моделирование и представление данных — сущности, связи, ограничения, идентификаторы, логические модели, схемы и форматы сериализации.
  • Реляционные данные и SQL — таблицы, ключи, ограничения, реляционная алгебра, запросы, нормализация и управление схемой.
  • Транзакции и конкурентный доступ — ACID, уровни изоляции, блокировки, MVCC, взаимные блокировки и гарантии изменения данных.
  • Физическое хранение и выполнение запросов — страницы, журналы изменений, индексы, статистика, планы выполнения и оптимизация запросов.
  • Нереляционные и специализированные хранилища — key-value, документные, колоночные, графовые, временные, поисковые, объектные, файловые и блочные системы.
  • Кеширование, очереди и потоки данных — стратегии кеша, инвалидация, брокеры сообщений, журналы событий и обработка непрерывных потоков.
  • Распределение и масштабирование данных — репликация, partitioning, sharding, согласованность, высокая доступность и масштабирование чтения и записи.
  • Жизненный цикл и защита данных — миграции, резервное копирование, восстановление, архивирование, retention, удаление, шифрование и управление доступом.
  • Эксплуатация хранилищ — соединения, наблюдаемость, диагностика производительности, планирование ёмкости, стоимость и восстановительные испытания.

Типы систем хранения

  • Реляционные СУБД — системы с табличной моделью, SQL и транзакционными гарантиями.
  • Нереляционные базы данных — key-value, документные, колоночные, графовые и временные хранилища.
  • Поисковые системы — движки полнотекстового поиска, агрегаций и анализа документов.
  • Объектные, файловые и блочные хранилища — системы для хранения файлов, объектов и виртуальных устройств.
  • Очереди и потоковые платформы — системы передачи, временного хранения и обработки сообщений и событий.

Основные вопросы раздела

Материалы раздела должны помогать отвечать на следующие вопросы:

  • Как выбрать модель данных и тип хранилища для конкретной задачи?
  • Чем логическая модель отличается от физического размещения данных?
  • Когда следует нормализовать или денормализовать данные?
  • Какие гарантии предоставляют транзакции и уровни изоляции?
  • Как индексы и планы выполнения влияют на стоимость запросов?
  • Когда использовать реляционное, документное, key-value, графовое или поисковое хранилище?
  • Как выбрать стратегию кеширования и избежать устаревших данных?
  • Как репликация и sharding влияют на согласованность и доступность?
  • Как безопасно изменить схему или перенести данные между системами?
  • Какие резервные копии необходимы для достижения требуемых RPO и RTO?
  • Как обнаружить медленные запросы, блокировки и нехватку ёмкости?
  • Как оценить стоимость хранения, репликации и обработки растущего объёма данных?

Границы раздела

Раздел посвящён моделям данных, устройству хранилищ и гарантиям работы с информацией.

Абстрактные структуры данных и алгоритмы рассматриваются в разделе алгоритмов и структур данных. Файловые системы конкретной операционной системы относятся к разделу операционных систем. Предметное моделирование программных компонентов рассматривается в разделе проектирования программного обеспечения. Распределённая согласованность и устойчивость к частичным отказам дополнительно рассматриваются в разделе распределённых систем и надёжности.

в этой папке 0 элементов