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

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

CockroachDB: distributed SQL база данных и архитектура

mid

Distributed SQL СУБД: SQL + ACID поверх распределённого KV слоя, ranges/leaseholder, Raft replication, multi-region locality и auto-rebalancing.

Источник

Wikipedia: CockroachDB

История CockroachDB, ключевые релизы и общий технологический контекст distributed SQL платформы.

Открыть статью

Официальный сайт

CockroachDB Product Overview

Продуктовый обзор: resilience, horizontal scale, locality и позиционирование CockroachDB для mission-critical workload.

Открыть страницу

CockroachDB - distributed SQL СУБД с фокусом на сильную консистентность, отказоустойчивость и горизонтальное масштабирование. В системном дизайне CockroachDB обычно рассматривают для business-critical OLTP-сервисов, где важны multi-region deployment, автоматический failover и SQL-модель без ручного шардирования.

История и контекст

2014design draft

Формирование идеи проекта

Спенсер Кимбалл публикует первый дизайн distributed SQL системы, позже ставшей CockroachDB.

2015Cockroach Labs

Основание компании

Создаётся Cockroach Labs для развития продукта как распределённой SQL платформы для отказоустойчивых приложений.

2017v1.0.0

Первый production-ready релиз

Линейка 1.0 фиксирует зрелый контур: SQL-интерфейс, транзакционность и кластерный режим для production.

2019Business Source License

Переход на source-available лицензию

Проект меняет лицензионную модель с Apache 2.0 на Business Source License (BuSL).

2025v25.1.4

Стабильная ветка 25.1

Релизная линия 25.1 усиливает enterprise-фокус: производительность, масштабирование и эксплуатационную зрелость кластера.

Ключевые архитектурные элементы

SQL gateway + PostgreSQL-совместимость

Любая нода может принимать SQL-запросы через PostgreSQL wire protocol и выступать gateway для распределённого выполнения.

Ranges, leaseholder и Raft

Ключевое пространство делится на ranges; leaseholder координирует доступ, а репликация/consensus строятся на Raft.

ACID-транзакции и Parallel Commits

Транзакционный слой использует write intents и atomic commit протокол, что даёт сильную консистентность в distributed-среде.

Geo-locality и авто-ребаланс

Кластер поддерживает multi-region размещение, автоматический ребаланс данных и масштабирование без ручного шардирования.

Модель данных и транзакционный контур

Интерактивный блок показывает, как CockroachDB соединяет SQL-модель и распределённый KV слой: ranges, replicas, write intents, изоляцию и locality-конфигурации.

Модель данных CockroachDB: ranges, replicas, транзакции

CockroachDB строит SQL-уровень поверх распределённого KV-движка: данные разбиваются на ranges и реплицируются через Raft.

Почему CockroachDB отличается от классической single-node SQL БД

  • Таблицы и индексы маппятся в распределённый KV keyspace, который автоматически делится на ranges.
  • У каждого range есть несколько replicas; leaseholder координирует чтения/записи.
  • Транзакции используют write intents, lock table и atomic commit протокол (Parallel Commits).
  • Есть multi-region locality controls для data placement и latency-sensitive сценариев.

SQL -> KV keyspace

Строки таблиц и secondary index entries хранятся как key-value пары в едином глобальном keyspace.

Ключевые элементы

Primary index keysSecondary index keysRange boundariesAutomatic split/merge

Типичные сценарии

  • Horizontal growth
  • Hot key isolation
  • Large table partitioning

Пример

CREATE TABLE orders (
  id UUID PRIMARY KEY,
  tenant_id UUID,
  status STRING,
  created_at TIMESTAMPTZ
);

High-Level Architecture

Ниже high-level контур CockroachDB: SQL gateway, transaction layer, range distribution, Raft replication и storage/locality механики.

Clients and SQL access
PostgreSQL wire protocolDrivers + ORMSQL shellCloud/self-hosted
Layer transition
SQL and transaction layer
Cost-based optimizerDistributed tx coordinatorSerializable / Read CommittedParallel Commits
Layer transition
Ranges and replicas
KV keyspaceRange splits/mergesLeaseholderAuto-rebalancing
Layer transition
Consensus and replication
Raft per rangeMajority commit3 replicas by defaultQuorum reads/writes
Layer transition
Storage and locality
MVCC valuesWrite intentsZone/region placementMulti-AZ resilience
Layer transition
Operations
Online schema changesNode add/removeBackupsObservability

System view

Distributed SQLStrong consistency focusCloud-native resilience

Workload profile

Transactional OLTPGeo-distributed servicesOperational analytics (limited)

Operational trade-offs

Cross-range tx overheadSchema/key design criticalHigher complexity than single-node SQL

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

Диаграмма объединяет write/read path с описанием: как запрос проходит через gateway, маршрутизацию по ranges, leaseholder, Raft consensus и transaction commit/response.

Read/Write Path Explorer

Интерактивный разбор прохождения CockroachDB-запросов через gateway, leaseholder, Raft и transaction layer.

1
Client Tx
INSERT UPDATE UPSERT
2
Range Routing
meta lookup
3
Write Intents
provisional values
4
Raft Replication
majority quorum
5
Commit + Resolve
txn record
Write path: транзакция создаёт write intents на leaseholder, реплицируется через Raft quorum и коммитится через transaction record/Parallel Commits.

Write path

  1. Таблицы и индексы разбиваются на ranges; ключи транзакции определяют, одно- или multi-range выполнение потребуется.
  2. Записи сначала оформляются как write intents (провизорные значения + lock semantics).
  3. Коммит требует Raft majority для каждого затронутого range и координации в transaction layer.
  4. При contention возникают retryable ошибки; приложение должно уметь повторять транзакции.

Когда выбирать CockroachDB

Хорошо подходит

  • Критичные OLTP-системы, где нужны strong consistency, ACID и отказоустойчивость между зонами/регионами.
  • Продукты с ростом нагрузки, где важно масштабировать reads/writes добавлением нод без ручного sharding.
  • Global SaaS и финтех-сценарии с требованиями к locality, survivability и непрерывной доступности.
  • Команды, готовые инвестировать в schema/index/key design и эксплуатацию distributed SQL кластера.

Стоит избегать

  • Простые single-node приложения, где дешевле и проще классическая локальная SQL СУБД.
  • Нагрузки с тяжёлыми аналитическими сканами, где нужен специализированный OLAP-движок.
  • Сценарии без tolerance к retry-паттерну транзакций при contention.
  • Команды без ресурсов на эксплуатацию multi-node инфраструктуры и observability distributed слоя.

Практика: DDL и DML

Ниже примеры SQL-операций для CockroachDB: DDL для схемы/индексов и multi-region настроек, DML для транзакций, UPSERT и конкурентного доступа к данным.

Примеры DDL и DML в CockroachDB

DDL управляет схемой и индексами, DML — транзакциями и распределёнными read/write запросами.

CockroachDB поддерживает online schema changes и PostgreSQL-совместимый SQL DDL, но проектирование ключей/индексов критично для distributed path.

Создание таблицы и primary key

CREATE TABLE

Первичный ключ определяет распределение записей по keyspace/ranges.

CREATE TABLE accounts (
  id UUID PRIMARY KEY,
  tenant_id UUID NOT NULL,
  balance DECIMAL(18,2) NOT NULL,
  status STRING NOT NULL,
  created_at TIMESTAMPTZ NOT NULL DEFAULT now()
);

Покрывающий secondary index

CREATE INDEX ... STORING

Снижает необходимость лишних lookup для hot read endpoint.

CREATE INDEX idx_accounts_tenant_status
ON accounts (tenant_id, status)
STORING (balance, created_at);

Региональная настройка БД

ALTER DATABASE ... REGION

Multi-region SQL помогает управлять locality и survivability.

ALTER DATABASE appdb PRIMARY REGION "us-east1";
ALTER DATABASE appdb ADD REGION "eu-west1";
ALTER DATABASE appdb ADD REGION "ap-southeast1";

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

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

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

System Design Space

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