Apache Cassandra — распределённая колонко-ориентированная система управления базами данных с открытым исходным кодом, разработанная для хранения и обработки больших объёмов данных на множестве серверов с высокой доступностью и отсутствием единой точки отказа. Система реализует модель данных, ориентированную на широкие строки и семейства колонок, предоставляет гибкую схему и рассчитана на горизонтальное масштабирование путём добавления узлов в кластер. Cassandra сочетает в себе идеи из колонко-ориентированных хранилищ, распределённых журналов и распределённых хэш-таблиц для достижения предсказуемой производительности в распределённых средах.
Проект поддерживает репликацию данных между узлами с настраиваемыми стратегиями репликации, что позволяет строить отказоустойчивые кластеры в нескольких дата‑центрах. Для согласованности данных Cassandra использует алгоритмы, обеспечивающие окончательную согласованность (eventual consistency) с возможностью выбора желаемого уровня согласованности для отдельных операций чтения и записи. Администрирование кластера, добавление и удаление узлов, балансировка данных и обслуживание выполняются без остановки работы базы, что делает систему подходящей для непрерывно доступных приложений и аналитических нагрузок в реальном времени.
- Архитектура без мастера: все узлы равноправны, отсутствует единый координатор, что повышает отказоустойчивость.
- Горизонтальное масштабирование: добавление узлов увеличивает ёмкость хранения и пропускную способность без простоев.
- Репликация и устойчивость к сбоям: настраиваемые схемы репликации и автоматическое перераспределение данных при изменении кластера.
- Модель согласованности: окончательная согласованность с настраиваемыми уровнями согласованности для операций.
- Производительность при записи: оптимизирована под высокую скорость последовательных и массовых записей благодаря архитектуре журналирования и компактному хранению.
- Колонко-ориентированная модель данных: поддержка широких строк, компактных колонок и коллекций для гибкого моделирования данных.
- Запросный язык: собственный декларативный язык запросов, ориентированный на работу с таблицами и колонками (предназначен для операций чтения/записи, не всегда поддерживает сложные транзакции и соединения).
- Мультидатацентровая поддержка: встроенные механизмы репликации и маршрутизации запросов между дата‑центрами для геораспределённых развёртываний.
- Обслуживание и наблюдаемость: инструменты мониторинга, резервного копирования и управления состоянием кластера, а также возможности интеграции с системами наблюдения.
- Экосистема и расширяемость: поддержка расширений, интеграций с системами очередей и аналитики, а также наличие клиентских драйверов для нескольких языков программирования.