Почему Apache Cassandra может не подходить для проекта?

«Почему Apache Cassandra может не подходить для проекта?» — вопрос из категории Базы данных, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Apache Cassandra — распределенная NoSQL БД, но её использование не всегда оправдано из-за следующих ограничений:

Основные причины отказа:

  1. Сложность операций — требует глубокой экспертизы для настройки, поддержки кластера и тонкой настройки производительности.
  2. Архитектурная избыточность — для проектов без требований к линейному горизонтальному масштабированию и отказоустойчивости на нескольких дата-центрах проще использовать реляционные БД (PostgreSQL, MySQL).
  3. Ограниченная модель данных — отсутствие полноценных JOIN и поддержки ACID-транзакций. Данные требуют денормализации под модель запросов.
  4. Высокий порог входа — команде необходимо время на освоение специфичной модели данных и инструментов.

Пример денормализации в Cassandra (Java):

@Table(keyspace = "ecommerce", name = "user_orders")
public class UserOrder {
    @PartitionKey
    private UUID userId;          // Ключ партиции
    @ClusteringColumn
    private UUID orderId;         // Ключ сортировки в партиции
    private String productName;
    private BigDecimal price;
    // Данные пользователя и заказа дублируются в эту таблицу
}

Вывод: Cassandra выбирают для специфичных workload с высокой записью и глобальной репликацией. Для типичных CRUD-приложений её сложность не окупается.