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

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

Cassandra: The Definitive Guide (short summary)

сложный

Книга по Cassandra особенно полезна тогда, когда нужно перестать видеть в ней просто AP-ярлык из диаграммы теоремы CAP и начать мыслить через реальную модель записи, хранения и отказов.

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

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

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

AP-ориентированное мышление

Используйте Cassandra там, где приоритет — доступность и линейное масштабирование записи при сетевых разделениях.

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

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

Операционная дисциплина

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

Ограничения подхода

Честно обозначайте ограничения: произвольные запросы и строгая согласованность обычно требуют дополнительных решений.

Оригинал

Telegram: Книжный куб

Оригинальный пост с разбором Cassandra.

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

Cassandra: The Definitive Guide, 3rd Edition

Авторы: Jeff Carpenter, Eben Hewitt
Издательство: O'Reilly Media, Inc.
Объём: 426 страниц

Краткий разбор книги о Cassandra: ширококолоночная модель Bigtable, идеи Dynamo, архитектура без ведущего узла, кольцо токенов, настраиваемая консистентность и LSM-подобное хранение.

Оригинал

В этой главе Cassandra рассматривается как с . Данные распределяются по , а количество копий задаёт .

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

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

Apache Cassandra — одна из самых известных NoSQL-баз данных. Она соединяет ширококолоночную модель Google Bigtable с распределённой архитектурой Amazon Dynamo: равноправные узлы, репликацию и выбор уровня согласованности под конкретную операцию. Разберём, где эта архитектура сильна, а где её компромиссы становятся ограничением.

Происхождение: Bigtable и Dynamo

Google Bigtable

От Bigtable Cassandra взяла:

  • Ширококолонную модель данных
  • LSM-подобное хранение: таблицы в памяти, таблицы хранения и фоновую компакцию
  • Последовательную запись в журнал фиксации перед сбросом на диск

Amazon Dynamo

От Dynamo Cassandra унаследовала:

  • Согласованное хеширование для распределения ключей
  • Эпидемический протокол для обмена состоянием узлов
  • Настраиваемую консистентность на уровне чтения и записи

Визуализация архитектуры

Кольцо узлов

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

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

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

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

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

Путь записи

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

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

CAP теорема

Фундаментальное ограничение распределённых систем: консистентность, доступность и устойчивость к разделению сети.

Читать обзор

Cassandra и теорема CAP

AP

Доступность + устойчивость к разделению сети

Cassandra — AP система по умолчанию

При сетевом разделении Cassandra предпочитает оставаться доступной, даже если отдельное чтение может вернуть устаревшую версию данных. Это подходит системам, где отказ принять запись опаснее, чем временное расхождение реплик.

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

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

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

PACELC теорема

Расширение теоремы CAP: компромиссы в штатном режиме.

Читать обзор

Cassandra и теорема PACELC

PA/EL

Разделение сети → доступность, штатный режим → низкая задержка

Cassandra чаще выбирают как PA/EL-систему

if P (Partition)

При сетевом разделении Cassandra сохраняет доступность: запрос может принять доступная часть кластера.

else E (Normal)

В штатном режиме Cassandra обычно выбирает низкую задержку: запрос не обязан ждать ответа от всех реплик.

Поэтому модель согласованности Cassandra — не только реакция на сетевые разделения. Даже при исправной сети она позволяет обменивать часть строгих гарантий на скорость ответа и устойчивость к сбоям отдельных узлов.

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

Консистентность и идемпотентность

Практические модели согласованности, идемпотентные операции и компромиссы распределённых систем.

Читать обзор

Уровни консистентности

Cassandra предлагает спектр уровней консистентности: от максимально доступной записи до чтения и записи через большинство реплик.

ANY

Запись считается успешной, даже если временно сохранена для недоступной реплики.

Мин. задержка
ONE

Достаточно ответа от одной реплики. Быстро, но чтение может увидеть устаревшие данные.

QUORUM

Требует ответа от большинства реплик (RF/2 + 1). Практичный баланс задержки и согласованности.

Рекомендуется
ALL

Требует ответа от всех реплик. Максимальная консистентность, минимальная доступность.

SERIAL

Линеаризуемость через Paxos. Используется для легковесных транзакций и условных операций CAS.

LWT

Формула сильной консистентности: если W + R > RF, где W — уровень консистентности записи, R — уровень консистентности чтения, а RF — коэффициент репликации, то чтение должно пересечься хотя бы с одной репликой, которая подтвердила последнюю запись.

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

Репликация и шардинг

Как выбирать стратегию шардирования, держать баланс шардов и масштабировать запись/чтение.

Читать обзор

Архитектура хранения и распределения данных

LSM-хранение

1. Запись сначала фиксируется в журнале для восстановления после сбоя

2. Свежие данные накапливаются в таблице в памяти

3. После сброса на диск они становятся неизменяемыми таблицами хранения

4. Фоновая компакция объединяет таблицы и удаляет устаревшие версии

Распределение данных

• Согласованное хеширование: ключ → токен → узел

• Виртуальные узлы помогают равномернее распределять диапазоны

• NetworkTopologyStrategy размещает реплики с учётом стоек и дата-центров

• Коэффициент репликации задаёт количество копий данных

Эпидемический протокол

• Узлы обмениваются сведениями о состоянии без центрального координатора

Phi Accrual Failure Detector

• Нет единой точки отказа

• Каждый узел периодически обменивается состоянием с несколькими соседями

Отказоустойчивость

• Временное хранение записи для недоступной реплики

• Восстановление при чтении исправляет расхождения между копиями

• Антиэнтропийная синхронизация выравнивает реплики фоном

• Деревья Меркла помогают сравнивать большие диапазоны данных

Когда Cassandra подходит, а когда мешает

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

  • Временные ряды: IoT, метрики, логи
  • Большой поток записей и предсказуемые чтения по ключу
  • Географически распределённые системы
  • Когда доступность важнее консистентности
  • Ленты активности и очереди событий с заранее известными запросами

✗ Не лучший выбор

  • Транзакции ACID между несколькими записями
  • Сложные JOIN-операции и аналитика
  • Часто меняющиеся схемы данных
  • Небольшие объёмы данных (<100 ГБ)
  • Жёсткие требования к задержке чтения по сложным фильтрам

История

Подробную историю Cassandra можно посмотреть в главе «Cassandra: архитектура и компромиссы» — ссылка ведёт сразу к таймлайну.

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

Ключевые выводы

  • 1.Cassandra — AP система по теореме CAP и PA/EL по теореме PACELC: её сильная сторона — доступность и низкая задержка при осознанных ограничениях согласованности
  • 2.Настраиваемая консистентность позволяет выбирать цену задержки и согласованности отдельно для чтения и записи
  • 3.Архитектура без ведущего узла делает все узлы равноправными, а эпидемический протокол помогает им обмениваться состоянием
  • 4.LSM-подобное хранение даёт высокую пропускную способность записи за счёт последовательного ввода-вывода и фоновой компакции
  • 5.Cassandra хорошо подходит для нагрузок с преобладанием записи, временных рядов и географически распределённых систем

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

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

Где найти книгу

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