Sobes.tech
Назад к вопросам
Senior
3

Расскажите про Cassandra: консистентность, гарантии, особенности

Компании, где спрашивали
РТК ИТ

Ответ от нейросети

sobes.tech AI

Apache Cassandra — это распределённая NoSQL база данных, ориентированная на высокую доступность и масштабируемость.

Консистентность: Cassandra использует модель консистентности с настраиваемым уровнем (tunable consistency). Можно выбрать уровень консистентности для операций чтения и записи: от одного узла (ONE) до всех узлов (ALL). Это позволяет балансировать между скоростью и строгой консистентностью.

Гарантии:

  • Eventual consistency по умолчанию, но можно добиться сильной консистентности, настроив уровни чтения и записи.
  • Записи идемпотентны, поддерживается механизм разрешения конфликтов по времени (timestamp).
  • Поддержка репликации данных с возможностью выбора стратегии (SimpleStrategy, NetworkTopologyStrategy).

Особенности:

  • Колонко-ориентированная модель данных с динамическими колонками.
  • Отсутствие схемы жесткой структуры, что даёт гибкость.
  • Высокая отказоустойчивость за счёт репликации и автоматического восстановления.
  • Использует протокол Gossip для обмена состоянием между узлами.
  • Поддержка CQL (Cassandra Query Language), похожего на SQL.

Пример настройки уровня консистентности при записи в Java драйвере:

session.execute(
  new SimpleStatement("INSERT INTO users (id, name) VALUES (?, ?)", id, name)
    .setConsistencyLevel(ConsistencyLevel.QUORUM));

Здесь QUORUM означает, что запись должна быть подтверждена большинством реплик.