System Design Space

    Глава 110

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

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

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

    История Apache Cassandra, masterless архитектура, tunable consistency и LSM-подобное хранение.

    Источник

    Apache Cassandra

    История, архитектура и особенности Apache Cassandra.

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

    Apache Cassandra - распределенная wide-column база данных, сочетающая идеи Dynamo и Bigtable. Она создана для масштабирования и высокой доступности, а консистентность настраивается под требования системы.

    Специфика Cassandra

    Wide-column store

    Данные организованы в keyspace и таблицы, оптимизированные под известные паттерны запросов.

    Masterless архитектура

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

    AP + tunable consistency

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

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

    • Ограниченная поддержка сложных join и ad-hoc запросов.
    • Модель запросов требует заранее продуманной схемы под чтение.
    • Оптимально работает с большими объемами и высокими write-нагрузками.

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

    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

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

    2008

    Facebook -> open source

    Cassandra была создана в Facebook и открыта для сообщества в 2008 году.

    2009

    Apache Incubator

    Проект перешел в Apache Incubator и стал развиваться как open-source инициатива.

    2010

    Top-level project

    Apache Cassandra стала проектом верхнего уровня.

    2011

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

    Закреплён production-ready статус Cassandra как самостоятельной distributed СУБД.

    2013

    2.0: LWT и развитие CQL

    Появляются lightweight transactions (CAS/Paxos) и заметные улучшения модели запросов.

    2015

    3.0: серьёзный апдейт хранения

    Крупные внутренние изменения storage-слоя и улучшения производительности.

    2021

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

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

    2024

    5.0: SAI и векторные сценарии

    Новый мажорный релиз с Storage-Attached Indexes и возможностями для современных поисковых/AI-нагрузок.

    2025

    IBM и DataStax

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

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

    Архитектура показывает координатор, репликацию и LSM-подобное хранение с commit log, memtable и SSTable.

    Клиенты и CQL
    CQLDriversProtocol
    Переход между слоями
    Маршрутизация и партиционирование
    Partitioned row storeDynamic columnsKeyspace / table
    Переход между слоями
    Репликация и консистентность
    AP systemTunable consistencyMasterlessMulti-DC
    Переход между слоями
    Хранилище (LSM)
    Commit logMemtableSSTableCompactionTombstones
    Переход между слоями
    OS + железо
    DiskCPU/RAMNetwork

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

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

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

    Keyspace -> Table -> RowГибкие колонкиДенормализация

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

    DDL работает со схемой keyspace и таблиц, DML - с данными. Ниже показаны основные шаги для обоих типов запросов.

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

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

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

    Активный шаг

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

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

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

    • DML работает с данными и индексами, не меняя схему.
    • Write path оптимизирован для высокой скорости записи.
    • Consistency level определяет подтверждение записи.
    Write-optimized pathLSM storageTunable consistency

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

    • Линейное масштабирование при добавлении узлов.
    • Высокая доступность без единой точки отказа.
    • Хорошая производительность записи благодаря LSM-подобному хранению.
    • Гибкая настройка консистентности для разных сценариев.