Cassandra

Материал из Энциклопедия интернет-маркетинга MarketWiki

Cassandra (Apache Cassandra) - это распределённая система управления базами данных, относящаяся к классу NoSQL-хранилищ. Cassandra разрабатывается как проект с открытым исходным кодом под эгидой Apache Software Foundation и предназначена для хранения и обработки огромных объёмов данных в распределённой инфраструктуре.

В интернет-маркетинге и аналитике Cassandra используется для хранения поведенческих данных пользователей, событийной аналитики, работы в CDP-системах и других сценариях, требующих высокой производительности записи и отказоустойчивости.

История и происхождение

[править]

Cassandra была создана в Facebook как инициатива для решения проблем с поиском по входящим сообщениям. В ней используются некоторые функции из BigTable (разработка Google) и Amazon Dynamo. В 2008 году проект был передан Apache Software Foundation и выпущен в свободный доступ.

Ключевые особенности Cassandra

[править]

Архитектура

[править]

Cassandra работает по схеме «активный-активный», где каждый узел (node) отвечает на запросы чтения и записи. Даже если на узле нет запрошенных данных, он получает их от других узлов по протоколу gossip, который обеспечивает одноранговое взаимодействие.

Ключевые компоненты архитектуры:

  • Memtable. Структура в памяти для временного хранения данных.
  • Журнал подтверждённых транзакций (commit log). Обеспечивает надёжность хранения.
  • SSTable. Неизменяемые файлы на диске для постоянного хранения.

Модель данных

[править]

Cassandra организует данные по группам, строкам и столбцам. Столбцы связанных данных хранятся в строках в более широкой категории, называемой пространством ключей (keyspace):

Ключевое пространство: CustomerOrders
  Семейство колонок: Client
    ID, FirstName, LastName
  Семейство колонок: Orders
    ID, Item, Price

Семейство столбцов Client расположено в иерархии выше семейства столбцов Orders. В реальных приложениях каждое пространство ключей объединяет несколько семейств столбцов.

Теорема CAP

[править]

Cassandra гарантирует высокий уровень доступности (Availability) и устойчивость к разделению (Partition tolerance) благодаря архитектуре одноранговых узлов. Это означает, что система продолжает работать даже при выходе из строя отдельных узлов, но в некоторые моменты может жертвовать строгой согласованностью данных.

Язык запросов

[править]

Cassandra позволяет управлять данными с помощью языка запросов CQL (Cassandra Query Language). CQL использует описательные инструкции, аналогичные SQL, для добавления, удаления или обновления записей, что облегчает освоение для разработчиков, знакомых с реляционными базами данных.

Производительность

[править]

Операции записи

[править]

Cassandra выполняет операции записи быстрее, чем многие другие NoSQL-решения. При работе с Cassandra можно одновременно записывать данные в журнал и в кэш, что обеспечивает высокую производительность.

Операции чтения

[править]

Для операции чтения в Cassandra требуется определить точное местоположение сохранённых данных в таблице разделов. Если для поиска используется вторичный ключ или таблица без разделов, Cassandra потребуется больше времени на поиск каждого узла кластера.

Задержки и пропускная способность

[править]

Пропускная способность Cassandra увеличивается по мере увеличения объёма считываемых или записываемых данных. При увеличении объёма данных могут наблюдаться некоторые задержки, но система хорошо масштабируется горизонтально.

Применение в маркетинге и аналитике

[править]

Cassandra широко используется в системах, требующих обработки больших объёмов данных в реальном времени:

  • Событийная аналитика. Хранение и обработка событий о поведении пользователей (клики, просмотры, конверсии).
  • CDP-системы. Хранение профилей клиентов и истории взаимодействий.
  • Рекомендательные системы. Хранение данных для алгоритмов машинного обучения.
  • Мониторинг в реальном времени. Сбор и агрегация метрик.

Примеры использования в маркетинге

[править]
  • Персонализация в реальном времени. Крупные интернет-магазины используют Cassandra для хранения истории просмотров и покупок каждого пользователя. Когда пользователь заходит на сайт, система за миллисекунды загружает его профиль и персонализирует выдачу товаров.
  • Аналитика рекламных кампаний. Рекламные сети записывают в Cassandra миллиарды событий о показах и кликах. Благодаря высокой скорости записи данные становятся доступными для аналитики практически мгновенно.
  • Мобильные приложения. Поведенческие данные из мобильных приложений (экранные события, транзакции, ошибки) стримятся в Cassandra для последующего анализа и построения воронок.

Интеграция с аналитическими системами

[править]

Cassandra легко интегрируется с современными инструментами анализа данных:

  • Apache Spark. Позволяет выполнять сложные аналитические запросы и машинное обучение на данных, хранящихся в Cassandra.
  • Kafka. Cassandra часто выступает в роли долговременного хранилища для данных, проходящих через Kafka.
  • Grafana. Визуализация метрик и дашбордов в реальном времени.

Сравнение с другими NoSQL-базами

[править]

Cassandra vs HBase

[править]
Характеристика Cassandra HBase
Теорема CAP Доступность + Устойчивость к разделению Согласованность + Устойчивость к разделению
Архитектура Одноранговая («активный-активный») «Первичный-вторичный»
Задержки Увеличиваются при росте объёма данных Меньшая задержка при увеличении операций
Скорость записи Выше (параллельная запись) Ниже (последовательная запись)
Скорость чтения Ниже (требуется поиск по таблице разделов) Выше (кэширование блоков)
Язык запросов CQL (близок к SQL) Команды оболочки

Cassandra vs традиционные SQL-базы

[править]

В отличие от реляционных СУБД, Cassandra не поддерживает сложные JOIN-запросы и транзакции ACID в полном объёме. Однако она обеспечивает гораздо более высокую производительность при работе с огромными объёмами данных и практически линейную масштабируемость.

Связанные термины

[править]