Что такое Apache Cassandra?
Apache Cassandra — это высокомасштабируемая распределенная NoSQL база данных, предназначенная для обработки больших объемов данных на множестве серверов без единой точки отказа. Разработана в Facebook, сейчас развивается Apache Foundation.
Ключевые особенности Cassandra
- Линейная масштабируемость — производительность растет с добавлением узлов
- Высокая доступность — нет единой точки отказа
- Eventually consistent — гибкая настройка консистентности
- Децентрализованная архитектура — все узлы равноправны
- Колоночное семейство — эффективное хранение разреженных данных
Когда использовать Cassandra
Cassandra идеальна для:
- Приложений с огромными объемами данных (петабайты)
- Систем с высокими требованиями к доступности
- Временных рядов и IoT данных
- Приложений с географически распределенными пользователями
- Систем с высокой нагрузкой на запись
- Каталогов продуктов и рекомендательных систем
Модель данных Cassandra
Cassandra использует модель "колоночного семейства":
- Keyspace — аналог схемы в реляционных БД
- Column Family — аналог таблицы
- Row — строка с уникальным ключом
- Column — пара имя-значение с timestamp
Установка и использование
Для работы с Cassandra из Python:
Пример использования:
1from cassandra.cluster import Cluster
2
3# Подключение к кластеру Cassandra
4cluster = Cluster(['127.0.0.1'])
5session = cluster.connect()
6
7# Создание keyspace
8session.execute("""
9 CREATE KEYSPACE IF NOT EXISTS example
10 WITH replication = {
11 'class': 'SimpleStrategy',
12 'replication_factor': 1
13 }
14""")
15
16session.set_keyspace('example')
17
18# Создание таблицы
19session.execute("""
20 CREATE TABLE IF NOT EXISTS users (
21 user_id UUID PRIMARY KEY,
22 name TEXT,
23 email TEXT
24 )
25""")
26
27# Вставка данных
28from uuid import uuid4
29session.execute("""
30 INSERT INTO users (user_id, name, email)
31 VALUES (%s, %s, %s)
32""", (uuid4(), 'Иван Иванов', 'ivan@example.com'))
33
34# Выборка данных
35rows = session.execute('SELECT * FROM users')
36for row in rows:
37 print(row.name, row.email)
Преимущества Cassandra
- Отличная производительность при больших объемах данных
- Высокая отказоустойчивость
- Гибкая настройка консистентности
- Поддержка мультидатацентров
- Открытый исходный код
Недостатки Cassandra
- Сложность в изучении и настройке
- Ограниченные возможности запросов (нет JOIN)
- Eventually consistent по умолчанию
- Высокие требования к ресурсам
- Сложность миграции данных
Альтернативы Cassandra
- MongoDB — документная NoSQL БД
- HBase — колоночная БД на Hadoop
- Amazon DynamoDB — управляемая NoSQL в AWS
- ScyllaDB — более быстрая альтернатива Cassandra на C++
FAQ
Подходит ли Cassandra для малых проектов?
Нет, Cassandra оправдана только для больших объемов данных и высоких нагрузок. Для малых проектов лучше использовать PostgreSQL или MongoDB.
Поддерживает ли Cassandra ACID транзакции?
Cassandra поддерживает только атомарные операции на уровне строки. Для полных ACID транзакций нужно использовать реляционные БД.