System Design Space

    Глава 114

    Обновлено: 15 февраля 2026 г. в 08:18

    Cassandra: The Definitive Guide (short summary)

    Прогресс части0/12

    Оригинал

    Telegram: book_cube

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

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

    Cassandra: The Definitive Guide, 3rd Edition

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

    Wide Column Store: архитектура Bigtable + Dynamo, tunable consistency, LSM-Tree, Gossip Protocol. Классификация AP (CAP) и PA/EL (PACELC).

    Cassandra: The Definitive Guide, 3rd Edition — оригинальная обложкаОригинал

    Apache Cassandra — одна из самых известных NoSQL баз данных, объединившая лучшее от двух миров: модель данных Google Bigtable и распределённую архитектуру Amazon Dynamo. Разберём её архитектуру, модель консистентности и место в классификации CAP/PACELC.

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

    Google Bigtable

    От Bigtable Cassandra взяла:

    • Wide Column модель данных
    • LSM-Tree для хранения (MemTable → SSTable)
    • Append-only записи в Commit Log

    Amazon Dynamo

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

    • Consistent Hashing для распределения
    • Gossip Protocol для обнаружения узлов
    • Tunable Consistency (настраиваемая консистентность)

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

    Ring Topology

    ABCDEFToken Ring0 - 100

    Consistent Hashing

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

    Replication Factor = 3

    Каждый ключ хранится на 3 узлах: primary node (по hash) и 2 следующих узла по часовой стрелке.

    Write Path

    1. Клиент → любая нода (координатор)
    2. Координатор вычисляет hash(key) → token
    3. Token → primary node + RF-1 реплик
    4. Параллельная запись на все реплики
    Primary Node
    Replica Nodes
    Gossip Protocol

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

    CAP теорема

    Фундаментальное ограничение распределённых систем: C, A, P.

    Читать обзор

    Cassandra и CAP теорема

    AP

    Availability + Partition Tolerance

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

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

    Tunable Consistency

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

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

    PACELC теорема

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

    Читать обзор

    Cassandra и PACELC

    PA/EL

    Partition → Availability, Else → Latency

    Скорость превыше консистентности

    if P (Partition)

    Выбирает Availability — продолжает обслуживать запросы, даже если часть реплик недоступна.

    else E (Normal)

    Выбирает Low Latency — не ждёт подтверждения от всех реплик.

    Это объясняет, почему Cassandra использует eventual consistency даже когда сеть работает нормально — не из-за страха partition'ов, а ради минимальных задержек.

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

    Паттерны консистентности и идемпотентность

    Практические модели консистентности, идемпотентные операции и trade-offs.

    Читать обзор

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

    Cassandra предлагает спектр уровней консистентности — от максимальной скорости до строгой согласованности:

    ANY

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

    Мин. латентность
    ONE

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

    QUORUM

    Требует ответа от большинства реплик (RF/2 + 1). Баланс скорости и консистентности.

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

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

    SERIAL

    Linearizable consistency через Paxos. Для Lightweight Transactions (CAS операций).

    LWT

    Формула сильной консистентности: если W + R > RF, где W — consistency level записи, R — чтения, RF — replication factor, то гарантируется чтение последней записанной версии.

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

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

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

    Читать обзор

    Архитектура

    LSM-Tree Storage

    1. Записи идут в Commit Log (durability)

    2. Данные накапливаются в MemTable (in-memory)

    3. Периодически flush в SSTable (immutable on disk)

    4. Фоновый Compaction объединяет SSTables

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

    Consistent Hashing — ключ → token → node

    Virtual Nodes (vnodes) — равномерное распределение

    NetworkTopologyStrategy — rack/DC awareness

    Replication Factor — количество копий

    Gossip Protocol

    • Peer-to-peer обнаружение узлов

    Phi Accrual Failure Detector

    • Нет single point of failure

    • Каждую секунду обмен с 1-3 узлами

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

    Hinted Handoff — временное хранение для недоступных нод

    Read Repair — исправление при чтении

    Anti-Entropy Repair — фоновая синхронизация

    Merkle Trees — эффективное сравнение данных

    Когда использовать Cassandra

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

    • Time-series данные (IoT, метрики, логи)
    • Высокая пропускная способность записи
    • Географически распределённые системы
    • Когда доступность важнее консистентности
    • Messaging и activity feeds

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

    • ACID транзакции между записями
    • Сложные JOIN'ы и аналитика
    • Часто меняющиеся схемы данных
    • Малые объёмы данных (<100GB)
    • Высокие требования к read latency

    История

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

    Сегодня Cassandra используется в крупных production-системах (Netflix, Apple, Uber и др.) как база для write-heavy и геораспределённых сценариев.

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

    • 1.Cassandra — AP система по CAP и PA/EL по PACELC: приоритет доступности и низкой задержки
    • 2.Tunable consistency позволяет балансировать между скоростью и согласованностью на уровне каждого запроса
    • 3.Архитектура без master-узла: все ноды равноправны благодаря Gossip Protocol
    • 4.LSM-Tree обеспечивает высокую пропускную способность записи за счёт последовательных операций на диске
    • 5.Идеальна для write-heavy нагрузок, time-series данных и географически распределённых систем

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

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