Источник
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-модель без ручного шардирования.
История и контекст
Формирование идеи проекта
Спенсер Кимбалл публикует первый дизайн distributed SQL системы, позже ставшей CockroachDB.
Основание компании
Создаётся Cockroach Labs для развития продукта как распределённой SQL платформы для отказоустойчивых приложений.
Первый production-ready релиз
Линейка 1.0 фиксирует зрелый контур: SQL-интерфейс, транзакционность и кластерный режим для production.
Переход на source-available лицензию
Проект меняет лицензионную модель с Apache 2.0 на Business Source License (BuSL).
Стабильная ветка 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.
Ключевые элементы
Типичные сценарии
- 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 механики.
System view
Workload profile
Operational trade-offs
Read / Write Path через компоненты
Диаграмма объединяет write/read path с описанием: как запрос проходит через gateway, маршрутизацию по ranges, leaseholder, Raft consensus и transaction commit/response.
Read/Write Path Explorer
Интерактивный разбор прохождения CockroachDB-запросов через gateway, leaseholder, Raft и transaction layer.
Write path
- Таблицы и индексы разбиваются на ranges; ключи транзакции определяют, одно- или multi-range выполнение потребуется.
- Записи сначала оформляются как write intents (провизорные значения + lock semantics).
- Коммит требует Raft majority для каждого затронутого range и координации в transaction layer.
- При 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 ... REGIONMulti-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";