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

Обновлено: 24 июня 2026 г. в 16:23

Класс NewSQL СУБД: TiDB, CockroachDB и YDB

средний

Обзор класса NewSQL СУБД: распределённый SQL, модель ACID, автоматическое шардирование, TiDB, CockroachDB, YDB, межрегиональные транзакции и операционная цена.

Этот класс СУБД появляется там, где команда уже не хочет выбирать между удобством SQL, строгими транзакционными гарантиями и болью ручного шардирования. Эта глава именно про этот промежуточный, но дорогой этап роста.

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

В интервью и инженерных обсуждениях эта глава особенно полезна, когда нужно сравнить этот подход не с рекламных слайдов, а с PostgreSQL плюс шардирование и NoSQL-подходами под конкретные требования продукта.

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

Глобальные транзакционные гарантии

Определяйте, где распределённая SQL-СУБД позволяет сохранить строгую транзакционность при горизонтальном масштабировании без ручного шардирования.

Регионально-ориентированный дизайн

Учитывайте локальность данных и межрегиональную задержку, чтобы не платить лишней ценой за каждый транзакционный шаг.

Стоимость консистентности

Сравнивайте выгоду строгой консистентности с ценой в задержке, пропускной способности и инфраструктуре.

Сравнение подходов

Сравнивайте распределённый SQL с PostgreSQL плюс шардирование и NoSQL через бизнес-требования, а не через маркетинговые тезисы.

Рамка выбора и редакторский фокус

Фокус главы

классе распределённых SQL-СУБД и цене строгой транзакционности

Профиль нагрузки

Фокус — транзакционный SQL на горизонтальном и часто региональном масштабе, где один классический узел уже не даёт нужной формы роста.

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

Распределённый SQL оправдан, когда строгие гарантии важнее простоты и команда готова платить задержкой, координацией и эксплуатацией.

Граница и риск

Главные риски — горячие ключи, межрегиональные транзакции, стоимость консенсуса, ребаланс и ложное ощущение бесплатного шардирования.

Связать дальше

Всегда проверяйте решение через базовый вариант PostgreSQL/MySQL, распределённые транзакции и мультирегиональную архитектуру.

Источник

NewSQL (Wikipedia)

Короткий исторический контекст класса NewSQL СУБД: попытка совместить SQL, модель ACID и горизонтальное масштабирование.

Открыть материал

Документация TiDB

TiDB Architecture

Официальный архитектурный обзор TiDB: TiKV, PD, SQL-слой и компоненты гибридной транзакционно-аналитической обработки HTAP.

Открыть документацию

В этой главе под понимаем системы, которые сохраняют SQL и , но добавляют и для горизонтального роста.

Главная цена такого выбора — не синтаксис SQL, а , , и их влияние на и .

обычно выбирают в тот момент, когда команда хочет сохранить SQL и , но нагрузка уже выходит за комфорт одного -узла. В этой главе мы сравним три практические реализации: TiDB, CockroachDB и YDB.

Универсального победителя здесь нет. Полезнее научиться быстро сопоставлять профиль нагрузки, транзакционные требования и операционный контур с конкретным движком — и видеть, где распределённый слой не окупает свою сложность.

Что обычно означает класс NewSQL СУБД

SQL и без ручного шардирования

Система берёт на себя транзакционную координацию, размещение данных и балансировку нагрузки.

Строгая консистентность по умолчанию

Базовый сценарий ставит во главу корректность и предсказуемость записи даже под отказами; максимум пропускной способности здесь вторичен.

Цена выше классического

Распределённый SQL требует дисциплины в проектировании ключей, наблюдаемости и планировании ёмкости.

Общий архитектурный паттерн

Архитектурная карта NewSQL

SQL-слой отдельно от KV-хранилища

Одна рамка сравнения для трёх подходов: где живёт SQL-слой, как распределяются данные и где появляется цена консистентности.

MySQL-совместимый путь к распределённому SQL

TiDB разделяет вычисление, метаданные и хранение: SQL-узлы принимают запросы, PD управляет размещением, TiKV хранит данные, а TiFlash добавляет аналитический контур.

SQL-слой TiDB
SQL-узлыMySQL wireпланировщикузлы без состояния
переход между слоями
PD
метаданные кластерарасписание регионовлидеры Raft
переход между слоями
TiKV
распределённый KVрегионытранзакции
переход между слоями
Raft-группы
репликациябольшинствоперебалансировка
переход между слоями
TiFlash/HTAP
колоночные репликианалитика рядом с OLTP
переход между слоями
Эксплуатация и миграция
совместимость с MySQLгорячие регионыплан миграции

Что проверить

Когда подходит

миграция из MySQLрост транзакционной нагрузкиHTAP без отдельной DWH-схемы

Где риск

горячие ключицена аналитических репликдизайн первичных ключей

Что измерять

задержку p95/p99перебалансировку регионовповедение при отказе зоны

TiDB vs CockroachDB vs YDB

Базовая архитектура

  • TiDB: SQL-узлы TiDB + TiKV на Raft + PD; контур гибридной транзакционно-аналитической обработки (HTAP) через TiFlash.
  • CockroachDB: Единый бинарник: SQL, KV-слой и диапазоны Raft в одном кластере.
  • YDB: Таблетки и акторы, архитектура без общего состояния, вычисление и хранение разнесены по слоям.

Межрегиональная модель

  • TiDB: Есть политики размещения, но региональная и зональная топология требуют явной настройки.
  • CockroachDB: Сильный фокус на географическом разбиении и политиках локальности данных.
  • YDB: Сценарии на несколько зон или регионов зависят от конфигурации кластера и топологии доменов.

Совместимость и экосистема

  • TiDB: Совместимость с сетевым протоколом MySQL (wire protocol) и DDL; удобен для миграций из MySQL.
  • CockroachDB: Совместимость с сетевым протоколом PostgreSQL (wire protocol) и PostgreSQL-подобный SQL.
  • YDB: Собственный SQL-диалект и API; сильная интеграция в экосистему YDB/Yandex Cloud.

Сильные стороны

  • TiDB: Хороший баланс транзакционной обработки OLTP и близкой к операционным данным гибридной аналитической обработки HTAP, плюс миграционный путь из MySQL.
  • CockroachDB: Сильная история для глобальной транзакционной обработки OLTP и автоматического переключения при отказе региона.
  • YDB: Высоконагруженный транзакционный контур, автоматическое шардирование, строковые и колоночные таблицы в одной платформе.

Операционные риски

  • TiDB: Нужен контроль горячих регионов и проектирования ключей; контуры гибридной транзакционно-аналитической обработки HTAP добавляют операционную сложность.
  • CockroachDB: Межрегиональные транзакции увеличивают задержку, а схема и ключи сильно влияют на стоимость записи.
  • YDB: Требуется зрелая эксплуатация распределённой системы и дисциплина партиционирования.

Быстрый выбор по сценариям

Глобальный SaaS с активной записью в нескольких регионах

Чаще CockroachDB

Критичны политики локальности данных, выживание при отказе региона и предсказуемое переключение на резерв с SQL-интерфейсом — здесь геораспределение встроено в модель.

Рост из MySQL к распределённому SQL без полного переписывания решения

Чаще TiDB

Совместимость с сетевым протоколом MySQL (wire protocol) позволяет мигрировать постепенно, а транзакционную обработку OLTP — держать рядом со сценариями гибридной транзакционно-аналитической обработки HTAP.

Высоконагруженные транзакционные сервисы в экосистеме Yandex Cloud

Чаще YDB

Управляемый или нативный контур YDB даёт автоматическое шардирование и тесную интеграцию с облачной инфраструктурой — ценой привязки к экосистеме.

Региональная транзакционная обработка OLTP без жёстких требований к горизонтальному росту

Часто не нужен класс NewSQL СУБД

Если профиль нагрузки закрывается классическим PostgreSQL/MySQL, распределённый слой может быть избыточной сложностью.

Рекомендации

Начинайте с документа по проектированию ключей: ключ партиционирования, границы транзакций и ожидаемые горячие ключи.

Измеряйте задержку на перцентилях p95/p99 при отказах узлов, зон и сетевых разделениях, а не только пропускную способность в спокойном режиме — именно хвосты задержки бьют по пользователю первыми.

Явно разделяйте локальные и межрегиональные транзакции, чтобы контролировать задержки и стоимость.

Закладывайте наблюдаемость по шардам, диапазонам и таблеткам: перекос нагрузки, перебалансировка, повторные попытки и конкуренция блокировок.

Частые ошибки

Считать класс NewSQL СУБД серебряной пулей и переносить существующую схему без пересмотра ключей.

Игнорировать границы транзакций и допускать частые межшардовые или межрегиональные записи.

Сравнивать движки только по искусственному тесту производительности без отказов, перебалансировок и реальных запросов.

Выбирать распределённый SQL там, где один узел PostgreSQL/MySQL уже закрывает нагрузку и соглашение об уровне сервиса (SLA).

Источники

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

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