System Design Space
Граф знанийНастройки

Обновлено: 25 марта 2026 г. в 02:00

Введение в хранение данных

easy

Краткое описание эволюции подходов к хранению состояния: от файлов и OLTP до NoSQL, NewSQL и HTAP, и их влияния на API-контракты.

Эта глава полезна тем, что показывает эволюцию хранения без магии: от файлов и простой OLTP-модели к NoSQL, NewSQL и HTAP системы обычно приходят не из моды, а из накопившихся ограничений.

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

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

Практическая польза главы

Модель состояния

Явно описывайте, где живет state: в приложении, в очереди, в БД или в object storage, и какие гарантии нужны на каждом шаге.

API и данные

Проектируйте API-контракты с учетом моделей хранения: идемпотентность, ретраи, порядок событий и дедупликация.

NewSQL и HTAP

Понимайте, когда NewSQL/HTAP упрощают архитектуру, а когда лучше разнести транзакционный и аналитический контуры.

Interview-структура

На интервью уверенно объясняйте путь эволюции данных от простого хранения к распределенной архитектуре без лишней сложности.

Источник

Essential Architecture - Data

Расшифровка лекции (4 Oct 2021) о хранении данных и влиянии на API.

Перейти на сайт

Это краткое описание эволюции подходов к хранению состояния: от файлов и классических OLTP-систем до NoSQL, NewSQL и HTAP. Данные напрямую формируют удобство API: от латентности и гарантий консистентности до ретраев, идемпотентности и границ ответственности между командами.

Начнем с принципа 12-factor приложения — принципа номер 6. Его суть в том, чтобы делать stateless приложения и не хранить состояние внутри них. Если получается так спроектировать приложение, вопросы отказоустойчивости и масштабирования решаются гораздо проще, чем в случае stateful приложений. Но тогда возникает ключевой вопрос: где хранить состояние и как это влияет на API-контракты?

Почему данные определяют API

Связанная тема

The Twelve-Factor App

Stateless как фундамент масштабирования и устойчивости.

Читать обзор

Архитектурные решения по данным превращаются в свойства интерфейсов.

  • Скорость и латентность ответов
  • Согласованность (strong vs eventual)
  • Модель ошибок и повторов
  • Ограничения на фильтрацию/поиск/пагинацию
  • Идемпотентность, ретраи и дедупликация
  • Границы ответственности между командами

Stateless как фундамент

Принцип 12-factor: приложения не хранят состояние в процессе. Масштабирование становится проще, но нужно осознанно выбрать место хранения данных.

Связанная тема: The Twelve-Factor App.

Эволюция хранения состояния

Файловые системы

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

Реляционные БД (OLTP)

SQL + транзакции дают сильные гарантии и выразительный API.

OLAP и аналитика

Кубы, модели «звезда/снежинка» и агрегаты для BI.

Big Data / Hadoop

MapReduce и экосистема для массовой обработки данных.

Object Storage

Объекты без иерархий, S3 API как де-факто стандарт.

NoSQL

Горизонтальное масштабирование ценой компромиссов.

NewSQL

SQL + ACID в распределённой архитектуре для транзакционной нагрузки на масштабе.

HTAP

Сближение OLTP и OLAP: near real-time аналитика рядом с операционными данными.

NewSQL и HTAP в архитектурных решениях

Когда нужен NewSQL

Если нужны SQL-модель, строгие транзакции и горизонтальный рост без ручного shard management.

Когда нужен HTAP

Когда продукту нужны оперативные транзакции и аналитика почти в реальном времени на тех же данных.

Ключевые риски

Рост операционной сложности, дорогие cross-region запросы, ограничения по сложным аналитическим операциям.

Как это защищать на интервью

Объясняйте, какую боль решает подход, какие trade-offs принимаются и какие guardrails закрывают риски.

Практический ориентир: NewSQL подходит для stateful core-процессов с высокой транзакционной ценой ошибки, а HTAP — для продуктовых сценариев, где аналитика должна идти почти синхронно с операционным контуром.

Связанная тема: NewSQL: TiDB, CockroachDB и YDB.

Реляционные БД: ключевые понятия

Связанная тема

Database Internals

B-Trees, LSM и транзакции внутри СУБД.

Читать обзор

Нормализация

Формы данных влияют на схему и поведение запросов.

SQL

Декларативный язык отделяет «что» от «как».

Индексы

Ускоряют чтение, но замедляют запись и обновления.

Транзакции и ACID

Атомарность, изоляция и долговечность формируют контракты.

Репликация

Failover и масштабирование чтений с trade-offs по консистентности.

Шардирование

Роутинг по shard key и распределение нагрузки.

Интеграция между системами

Связанная тема

Enterprise Integration Patterns

Файлы, RPC и messaging как паттерны интеграции.

Читать обзор

File transfer

Понятный способ обмена, но со слабой инкапсуляцией.

Shared database

Высокая связанность и замедление развития из-за общей схемы.

RPC

Сильные контракты, но требует дисциплины версионирования.

Messaging

Асинхронные сценарии и гибкость интеграций.

Shared database создаёт high coupling и ломает контракты между командами. Современные системы стремятся к shared-nothing.

Data Lake vs Data Mesh

Связанная тема

Big Data

Эволюция аналитики и архитектурные слои.

Читать обзор

Data Lake

Централизованный сбор данных из OLTP с ETL-процессами. Масштабирование усложняет связанность и качество данных.

Data Mesh

  • Доменно-ориентированная децентрализация
  • Данные как продукт
  • Self-service платформа
  • Federated computational governance

DDD и границы доменов

Связанная тема

Learning Domain-Driven Design

Bounded contexts и доменные контракты.

Читать обзор

Доменные границы и контракты между bounded contexts делают API устойчивыми. Подходы DDD помогают отделить модели данных разных команд.

Связанная тема: Learning Domain-Driven Design.

Как данные превращаются в удобный API

Мостик Data -> API

  • Предсказуемые гарантии (ACID vs BASE)
  • Ясные источники истины
  • Чёткая модель ошибок и ретраев
  • Границы доменов и контрактов
  • Идемпотентность и дедупликация
  • Изоляция от shared database

NoSQL через призму CAP/BASE

Понимание CAP и BASE помогает объяснять клиентам eventual consistency и строить корректные ретраи.

Связанная тема: CAP теорема.

Мини-чеклист удобного API

  • Понятно, какие гарантии консистентности даёт система.
  • Клиент понимает, где возможна eventual consistency.
  • Идемпотентность для операций, которые могут быть повторены.
  • Ошибки, ретраи и таймауты описаны детерминированно.
  • Нет shared database как скрытого канала интеграции.
  • Доменные границы отражены в контракте API.

Практические сценарии выбора хранилища

FinTech ledger / биллинг

Реляционная БД или NewSQL

Сильная консистентность, строгие транзакции, корректная обработка повторов и аудита.

Realtime отчётность продукта

HTAP или OLTP + streaming + OLAP

Нужны быстрые дашборды без долгого ETL-лага и без потери транзакционной части.

Телеметрия и мониторинг

TSDB + object storage

Высокий ingest, retention-политики и дешёвое долгосрочное хранение исторических метрик.

Контент + поиск + рекомендации

Polyglot persistence

Одна БД редко оптимальна для транзакций, полнотекстового поиска и векторного retrieval одновременно.

Связанные главы

Чтобы отмечать прохождение, включи трекинг в Настройки