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

Обновлено: 2 марта 2026 г. в 15:08

Key-Value Database

mid

Классическая задача: partitioning, replication, quorum read/write, anti-entropy и hot partition mitigation.

Key-Value Database - это фундаментальный building block для распределённых систем. Он лежит под кэшами, сессиями, фича-флагами, event state и многими сервисами платформы. На собеседовании этот кейс проверяет умение балансировать latency, consistency, durability и стоимость эксплуатации.

Источник

Acing the System Design Interview

Глава 8: Design Key-Value Database с фокусом на partitioning, quorum и fault tolerance.

Читать обзор

Примеры Key-Value систем

  • Amazon DynamoDB: managed KV with partitioning и global tables
  • Redis: in-memory KV, sub-ms latency, rich data structures
  • Cassandra: wide-column KV c tunable consistency
  • Riak: AP-ориентированная архитектура с vector clocks
  • etcd/Consul: strongly-consistent KV для service discovery и config

Функциональные требования

Core API

  • PUT /kv/:key - записать значение
  • GET /kv/:key - получить значение
  • DELETE /kv/:key - удалить ключ
  • BATCH /kv - пакетные операции

Расширенные функции

  • TTL и фоновая очистка expired ключей
  • Conditional writes (CAS/version check)
  • Idempotency для write path
  • API наблюдаемости: health, metrics, lag

Нефункциональные требования

ТребованиеЦелевое значениеОбоснование
Read latency (p95)< 20msИспользование как online serving storage
Write latency (p95)< 40msСтабильный ingest при пиковых нагрузках
Availability99.99%Критичный инфраструктурный компонент
ScalabilityЛинейный рост по partitionРост без полного re-architecture
DurabilityПереживать отказ узлов/AZПотеря данных недопустима для core state

High-Level Architecture

Теория

Репликация и шардинг

Практический разбор partitioning, rebalancing и consistency в распределённых хранилищах.

Читать обзор

Ниже базовый контур key-value платформы: request plane, routing через consistent hash ring, shard groups с репликацией и storage maintenance слой.

Architecture Map

partitioning + replication + quorum

Схема разделяет request plane, shard groups и фоновые процессы восстановления/поддержки.

Client
service/api caller
Router + Hash Ring
route + partition mapping
Shard Groups
A/B/C leader + replicas
WAL + Compaction + Repair
durability + maintenance

Data Model Map

Логическая запись и её физическое размещение в распределённом KV-кластере.

Logical Record

key

user:123:session

value

opaque blob / json / bytes

metadata

version: 42ttl: 24hchecksum

Physical Placement

partitioning

hash(key) -> partition_id: 17

replica set

A-leader, A-r1, A-r2

lifecycle

active -> ttl-expired -> background sweep

Identity

Ключ определяет место хранения и маршрутизацию.

Consistency

`version` нужен для CAS/update race и safe merge.

Reliability

`checksum` и реплики помогают обнаруживать и чинить битые данные.

Read / Write Path через компоненты

Интерактивная схема показывает путь запроса от клиента до shard-ов и обратно: как запись фиксируется через WAL и quorum ACK, и как чтение проходит через replica selection и version check.

Key-Value Read/Write Path Explorer

Интерактивный разбор прохождения запросов через ключевые компоненты KV-хранилища.

1
Client Write
PUT / DELETE / CAS
2
Coordinator
hash + route
3
Leader Shard
WAL append
4
Replica ACKs
quorum W
5
Write Response
version + ts
Write path: coordinator маршрутизирует ключ в shard group, фиксирует запись через WAL и ждёт quorum ACK.

Write path

  1. Ключ определяет shard group через consistent hashing, что обеспечивает горизонтальное масштабирование.
  2. WAL закрывает риск потери данных при сбое между приёмом запроса и flush в storage engine.
  3. Quorum W контролирует баланс между latency и durability.
  4. Idempotency/CAS защищают систему от дублей и lost update при ретраях.

Storage Engine: B-Tree vs LSM-Tree

B-Tree vs LSM-Tree: выбор структуры данных

Архитектура B-Tree

[10 | 20 | 30]
[3|5|8]
[12|15|18]
[22|25|28]
Листья содержат указатели на данные
✓ Преимущества
  • Быстрое чтение: O(log N)
  • Эффективные range-запросы
  • In-place updates
✗ Недостатки
  • Write amplification
  • Random I/O при записи
Где используется:
PostgreSQLMySQL InnoDBOracleSQL ServerSQLite

Консистентность и отказоустойчивость

Глубже

Designing Data-Intensive Applications

Консистентность, replication lag, anti-entropy, quorum и CAP/PACELC trade-offs.

Читать обзор

Quorum model

Для replica factor N выбираются параметры чтения R и записи W. Базовое правило для сильнейшей tunable consistency:

R + W > N
  • W↑, R↓ - дороже запись, быстрее чтение
  • W↓, R↑ - быстрее запись, дороже чтение
  • R=1, W=1 - максимум latency/perf, минимум гарантий

Repair и recovery

  • Hinted handoff: временное хранение writes для недоступной реплики.
  • Read repair: исправление stale данных во время чтения.
  • Anti-entropy: периодическая сверка (например, Merkle trees).
  • Rebalancing: перенос partitions при добавлении/удалении узлов.

Риски и типовые ошибки

  • Hot partitions: плохой key design создаёт uneven load и latency spikes.
  • Write amplification: агрессивная compaction бьёт по tail latency.
  • Stale reads: при слабой консистентности пользователь видит старое состояние.
  • Blind retries: без idempotency может сломаться корректность состояния.
  • Split-brain: неверная конфигурация leader election/coordination.

Что важно проговорить на интервью

  • Почему выбран конкретный consistency mode и где бизнес допускает eventual consistency.
  • Как система ведёт себя при отказе узла, AZ, сети и при волне повторных запросов.
  • Как предотвращаются hot keys/partitions и как работает online rebalancing.
  • Какие SLO мониторятся: p95/p99 latency, error rate, replica lag, repair backlog.

Связанные материалы

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

System Design Space

© 2026 Александр Поломодов