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

Обновлено: 4 мая 2026 г. в 20:57

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

средний

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

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

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

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

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

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

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

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

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

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

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

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

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

Источник

Apache Cassandra

История, архитектура и основные инженерные компромиссы Apache Cassandra.

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

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

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

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

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

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

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

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

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

Все узлы равноправны, что устраняет единую точку отказа и повышает доступность.

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

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

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

  • Сложные соединения таблиц и разовые исследовательские запросы обычно требуют другого инструмента.
  • Таблицы нужно проектировать от будущих чтений, а не от универсальной нормализованной модели.
  • Лучше всего 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 теорема - Базовый контекст про компромиссы доступности и консистентности, на которых строится архитектура Cassandra.
  • PACELC теорема - Расширяет модель компромиссов на штатный режим: задержку, консистентность и выбор уровня консистентности.
  • Jepsen и модели консистентности - Как проверять реальные гарантии распределённых баз данных под сетевыми сбоями и разделениями сети.
  • Key-Value Database - Практический разбор распределённого слоя ключ-значение с партиционированием и кворумом, близкий к классу задач Cassandra.

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