Введение
Apache Cassandra — это высокопроизводительная, масштабируемая и отказоустойчивая NoSQL база данных, предназначенная для обработки огромных объёмов данных с минимальными задержками. Она используется такими компаниями, как Netflix, Apple, eBay и Instagram.
Для Python существует официальный драйвер — cassandra-driver, предоставляющий полный доступ к возможностям Cassandra через Python-программы. Он поддерживает синхронные и асинхронные запросы, подготовленные выражения, работу с UUID, TTL и многое другое.
Установка и подключение к кластеру
Установка драйвера
Подключение к кластеру
Подключение к конкретному keyspace:
Ключевые концепции Cassandra
-
Keyspace — аналог базы данных в SQL
-
Таблица — содержит строки и колонки, как в RDBMS, но с иным внутренним устройством
-
Partition key — определяет, на каком узле хранится запись
-
Clustering key — влияет на порядок хранения внутри партиции
Cassandra не поддерживает JOIN и агрегаты как в SQL, зато масштабируется горизонтально.
Создание Keyspace и таблиц
CRUD-операции в cassandra-driver
Вставка данных
Чтение данных
Обновление и удаление
Работа с асинхронными запросами
Можно использовать callback:
Подготовленные запросы и безопасность
Подготовленные выражения:
Они повышают производительность и защищают от инъекций.
Масштабируемость и распределённость
Cassandra автоматически реплицирует данные между узлами, обеспечивая отказоустойчивость и масштабируемость. Партиционирование данных требует продуманного выбора partition key для равномерного распределения нагрузки.
Работа с TimeUUID и TTL
-
TimeUUID сортируется по времени
-
TTL автоматически удаляет записи через заданный интервал
Обработка ошибок и отказоустойчивость
Cassandra поддерживает настройку политик повторов (retry policies) и баланса нагрузки.
Интеграция с Django, Flask и FastAPI
-
В Django и Flask Cassandra может использоваться как внешняя NoSQL база
-
В FastAPI можно создать dependency с Cassandra session
-
Также Cassandra используется для хранения логов, аналитики, сообщений и временных данных
Тестирование с cassandra-driver
-
Используйте отдельный keyspace
-
Очистка таблиц после теста:
Можно использовать Docker-образ Cassandra для изолированного тестирования.
Мониторинг и производительность
-
Используйте
nodetool
и Prometheus + Grafana для мониторинга -
Профилируйте схемы и запросы, избегайте ALLOW FILTERING
-
Минимизируйте количество запросов, структурируя таблицы под сценарии использования
Сравнение с другими СУБД и хранилищами
Хранилище | Тип | Масштабирование | Производительность | Поддержка SQL |
---|---|---|---|---|
Cassandra | NoSQL (Wide Column) | Горизонтальное | Очень высокая | Нет (CQL) |
PostgreSQL | Реляционное | Вертикальное | Средняя | Да |
MongoDB | Документное | Горизонтальное | Высокая | Частично |
Redis | Ключ-значение | Горизонтальное | Очень высокая | Нет |
Часто задаваемые вопросы (FAQ)
1. Что такое cassandra-driver?
Это официальный Python-клиент для подключения и работы с Apache Cassandra.
2. Поддерживает ли Cassandra SQL?
Нет, используется язык CQL, похожий на SQL, но без JOIN, GROUP BY и других привычных конструкций.
3. Какие типы данных поддерживает Cassandra?
UUID, text, int, float, timestamp, set, list, map и другие.
4. Есть ли асинхронность в cassandra-driver?
Да, через метод execute_async()
с callback.
5. Как реализовать TTL в Cassandra?
С помощью USING TTL
при вставке данных.
6. Подходит ли Cassandra для аналитики?
Да, особенно для распределённой и временной аналитики, но без сложных агрегатов.
Полный справочник по работе с cassandra-driver
— официальным Python-клиентом для Apache Cassandra
Установка
Подключение к кластеру
Подключение к конкретной keyspace:
Создание keyspace и таблиц
Вставка данных
Чтение данных
Фильтрация:
Обновление и удаление
Подготовленные запросы (prepared statements)
Асинхронные запросы
Работа с типами данных
Cassandra | Python |
---|---|
text |
str |
int |
int |
uuid |
uuid.UUID |
timestamp |
datetime.datetime |
boolean |
bool |
list<type> |
list |
map<key, value> |
dict |
set<type> |
set |
Модели данных (Object Mapper)
Можно использовать cassandra.cqlengine
, чтобы работать с объектами как в ORM.
Индексация и запросы
Параметры подключения
Поддержка SSL, аутентификации и балансировки нагрузки также доступна.
Когда использовать Cassandra + cassandra-driver
-
Для распределённых систем с высокой нагрузкой.
-
Когда необходима отказоустойчивость и масштабируемость.
-
Для временных рядов, логирования, IoT и аналитики.
-
Когда NoSQL-модель данных подходит лучше реляционной.
Заключение
Cassandra-driver – работа с Apache Cassandra — это мощный инструмент для Python-разработчиков, которым важно обеспечить масштабируемость, отказоустойчивость и быструю обработку больших данных. Cassandra отлично подходит для проектов с интенсивной записью, временными логами, аналитикой и интернет вещей. Благодаря cassandra-driver интеграция с Python проста, надёжна и эффективна.