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

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

Cassandra: архитектура и компромиссы

средний

История Apache Cassandra, архитектура без ведущего узла, кольцо токенов, репликация, настраиваемая консистентность и LSM-подобное хранение.

Cassandra полезно понимать не как абстрактный NoSQL-класс, а как конкретную архитектурную ставку на доступность, линейный рост записи и проектирование от профиля доступа к данным.

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

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

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

Модель по запросам

Проектируйте таблицы от профиля доступа: ключ партиционирования, кластеризующие столбцы и границы партиций.

Настраиваемая консистентность

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

Операционный цикл

Планируйте компакцию, восстановление реплик, метки удаления и ёмкость как постоянный процесс, а не разовую настройку.

Нарратив на интервью

Показывайте Cassandra как выбор для нагрузок с преобладанием записи и геораспределённых систем с осознанными ограничениями чтения.

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

Фокус главы

архитектуре без ведущего узла, настраиваемой консистентности и нагрузках с преобладанием записи

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

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

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

Глава должна отвечать, почему этот движок хорош именно для операционного контура, транзакционной обработки OLTP, кэша или модели с преобладанием записи.

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

Нельзя обещать универсальность: каждая СУБД имеет цену в консистентности, миграциях, памяти, индексах или операционной дисциплине.

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

Сравнивайте с фреймворком выбора СУБД, репликацией/шардингом и соседними операционными движками.

Источник

Apache Cassandra

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

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

Apache Cassandra — распределённая ширококолоночная СУБД, которая соединяет идеи Dynamo и Bigtable: равноправные узлы, кольцо токенов, репликацию и хранение, оптимизированное под быстрые записи. Её выбирают не как универсальную базу данных, а как осознанный компромисс в пользу доступности, горизонтального роста и заранее спроектированных чтений.

На первом уровне Cassandra — это с : данные распределяются по , а число копий задаёт .

При проектировании таблиц важны , и : Cassandra позволяет выбирать и для конкретной операции.

Внутри записи проходят через , и , а долгосрочная цена эксплуатации проявляется в и .

Что делает Cassandra особенной

Ширококолонная модель

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

Архитектура без ведущего узла

Узлы равноправны — нет ведущего, отказ которого останавливает запись. Цена за это: отвечать за консистентность приходится на уровне запроса, а не схемы.

AP и настраиваемая консистентность

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

Ограничения и компромиссы

  • Сложные соединения таблиц и разовые исследовательские запросы здесь упираются в стену — под них берут другой инструмент.
  • Схему строят от будущих чтений; нормализованная модель «на все случаи» в Cassandra превращается в медленные запросы.
  • На малых объёмах и при перевесе чтений выгода теряется — Cassandra окупается на больших данных и нагрузках с преобладанием записи.

Кольцо, токены и репликация

Кольцо узлов

ABCDEFКольцо токенов0 - 100

Согласованное хеширование

Выберите ключ, чтобы увидеть его распределение по кольцу (RF=3):

Коэффициент репликации RF = 3

Каждый ключ хранится на трёх узлах: владельце диапазона и двух следующих репликах по кольцу.

Путь записи

  1. Клиент -> любой узел-координатор
  2. Координатор вычисляет токен ключа
  3. Токен выбирает владельца диапазона и RF-1 реплик
  4. Запись параллельно отправляется на нужные реплики
Владелец диапазона
Реплики
Эпидемический обмен

История: ключевые вехи

2008

Facebook открывает код

Cassandra появилась внутри Facebook и в 2008 году стала открытым проектом.

2009

Apache Incubator

Проект перешёл в Apache Incubator и начал развиваться как часть экосистемы Apache.

2010

Проект верхнего уровня Apache

Apache Cassandra получила статус top-level project и стала самостоятельной базой для крупных внедрений.

2011

1.0: первый стабильный мажорный релиз

Релиз 1.0 закрепил Cassandra как зрелую распределённую СУБД для промышленной эксплуатации.

2013

2.0: легковесные транзакции и CQL

Появились легковесные транзакции на базе Paxos и заметные улучшения языка запросов CQL.

2015

3.0: крупное обновление хранения

Внутренний слой хранения был серьёзно переработан, а поведение чтения и записи стало предсказуемее.

2021

4.0: упор на стабильность

Релиз с фокусом на надёжность, предсказуемость и эксплуатационную зрелость.

2024

5.0: индексы хранения и векторные сценарии

Новый мажорный релиз добавил индексы, привязанные к хранению, и возможности для поисковых и AI-нагрузок.

2025

IBM и DataStax

IBM объявила о покупке DataStax, усилив корпоративный контур вокруг экосистемы Cassandra.

Архитектура Cassandra по слоям

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

Клиенты и CQL
CQLДрайверыПротокол
Связь слоёв
Маршрутизация и партиционирование
Партиционированные строкиГибкие колонкиПространство ключей / таблица
Связь слоёв
Репликация и консистентность
AP-системаНастраиваемая консистентностьБез ведущего узлаНесколько ДЦ
Связь слоёв
Хранилище (LSM)
Журнал фиксацииТаблица в памятиSSTableКомпакцияМетки удаления
Связь слоёв
ОС и железо
ДискCPU/RAMСеть

Архитектура кластера

Все узлы равноправныНет единой точки отказаЛинейное масштабирование

Модель данных

Пространство ключей -> таблица -> строкаГибкие колонкиДенормализация

DDL и DML: как проходит запрос

DDL меняет структуру — пространства ключей и таблицы; DML работает с самими данными. Маршруты у них разные, и ниже разобраны основные шаги для каждого типа запроса.

Как запрос проходит через Cassandra

Сравнение цепочки для DDL (структура) и DML (данные)

Интерактивный прогонШаг 1/5

Активный шаг

1. Узел-координатор принимает запрос

Любой узел кластера может принять DML-запрос и стать координатором.

Работа с данными

  • DML работает с данными и индексами, не меняя схему.
  • Путь записи оптимизирован для высокой скорости добавления данных.
  • Уровень консистентности определяет, сколько реплик подтверждает операцию.
Оптимизация записиLSM-хранениеНастраиваемая консистентность

Почему Cassandra выбирают

  • Линейный рост: добавили узлы — пропорционально выросла ёмкость и пропускная способность.
  • Нет единой точки отказа, поэтому потеря узла не роняет запись.
  • Запись остаётся быстрой за счёт LSM-подобной модели хранения.
  • Уровень консистентности подбирают под критичность операции, а не фиксируют для всей базы.

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

  • Фреймворк выбора СУБД - Как определить, когда Cassandra подходит для распределённой нагрузки с преобладанием записи, а когда лучше выбрать другой класс хранилища.
  • Репликация и шардинг - Практические решения для размещения реплик, балансировки нагрузки и управления отказами в распределённом слое данных.
  • CAP теорема - Откуда берётся выбор между доступностью и консистентностью — теорема CAP объясняет, почему Cassandra встаёт на сторону AP.
  • PACELC теорема - Расширяет модель компромиссов на штатный режим: задержку, консистентность и выбор уровня консистентности.
  • Jepsen и модели консистентности - Настраиваемая консистентность — это обещание; здесь его проверяют под сетевыми сбоями и разделениями сети, чтобы понять, что Cassandra реально гарантирует.
  • Key-Value Database - Практический разбор распределённого слоя ключ-значение с партиционированием и кворумом, близкий к классу задач Cassandra.

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