Благодаря быстроте, надежности и другим достоинствам Apache Cassandra, эта распределенная NoSQL-СУБД широко применяется во многих Big Data проектах по всему миру. В этой статье мы собрали для вас несколько интересных примеров реального использования Кассандры в 5 ключевых направлениях современного ИТ.
Где используется Apache Cassandra: 5 главных приложений c примерами
Промышленные решения на базе Cassandra развёрнуты в Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace, Twitter и множестве других компаний, работающих с большими данными [1]. Например, Expedia, крупная туристическая компания США, с помощью Кассандры хранит миллиарды постоянно обновляемых цен из 140 000 отелей. Apple имеет более 100 000 узлов Cassandra в production, что подтверждает отличную масштабируемость этой СУБД [2]. Другая data-driven организация, международная компания таксо-перевозок Uber использует Кассандру в нескольких датацентрах, чтобы обеспечить информационную базу своих поездок [3].
Проанализировав информацию об использовании Кассандры в реальных Big Data проектах, мы определили 5 основных направлений практического применения этой распределенной СУБД [4]:
- каталоги продукции в интернет-магазинах или плейлисты. В частности, Кассандру использует Spotify – известный интернет-сервис потокового аудио, позволяющий легально и бесплатно прослушивать более 50 миллионов музыкальных композиций, аудиокниг и подкастов, не скачивая их на устройство. Например, эта СУБД используется для сервиса, поддерживающего набор пар ключ-значение (key-value) из двух частей:
- конвейер реального времени, который записывает данные каждый раз, когда песня передается в Spotify. Данные вводятся по анонимному идентификатору пользователя и названию записываемой функции.
- Клиент, который периодически читает все функции для анонимного идентификатора в пакете.
При этом, согласно SLA (Service Level Agreement), необходимо держать очень низкую среднюю задержку срабатывания (менее 5 миллисекунд) и максимально возможное число операций в секунду даже при пиковой нагрузке. Высокие скорости операций чтения и записи Кассандры позволили команде Spotify реализовать такой сервис [5].
Аналогичным образом, для хранения данных о пользовательских просмотрах и поддержки потокового API Cassandra используется в Netflix и Expedia [2].
- рекомендательные системы и персонализация маркетинговых предложений. Cassandra помогает отслеживать действия пользователей, храня данные о том, с каким контентом (фильмы, игры, статьи или песни) взаимодействовал потребитель и сколько времени он потратил на каждое действие. Далее Кассандра может передать эту информацию в аналитический инструмент, который порекомендует клиенту что-то аналогичное [6]. Например, платформа организации мероприятий Eventbrite использует Cassandra вместо MySQL для своих мобильных приложений, которые позволяют пользователям знать, какие события происходят вокруг них. Outbrain, платформа веб-рекламы, которая отображает ссылки на страницы сайтов в дополнение к спонсорскому контенту, принося доход от последнего, применяет Кассандру для поддержки поиска контента, помогая компаниям увеличивать потоки доходов, предоставляя соответствующие сторонние статьи, которые могут заинтересовать пользователей [4]. Также уже упомянутый стриминговый сервис Spotify построил свою рекомендательную систему на базе Apache Cassandra [7].
- Интернет вещей (Internet of Things, IoT), в том числе промышленный (Industrial Internet of Things). Благодаря своим архитектурным особенностям, Cassandra предназначена для интенсивных рабочих нагрузок и быстрой записи множества данных. Такие качества делают эту СУБД весьма полезной для IoT-датчиков и прочих smart-устройств в различных отраслях промышленности, от логистики до сельского хозяйства. Независимо от типов датчиков, Cassandra быстро и надежно обрабатывает поток поступающих данных, предоставляя возможности для их последующего анализа с помощью других инструментов Big Data [6]. В частности, главная научно-исследовательская лаборатория в США по изучению возобновляемой энергии и энергоэффективности, NREL (National Renewable Energy Laboratory) использует Cassandra для хранения данных от своих smart-датчиков, чтобы анализировать их в целях экономии воды и энергии [4]. А компания I2O Water Ltd, которая разрабатывает и устанавливает интеллектуальные решения по управлению давлением для коммунальных и водопроводных сетей, на базе Кассандры создала продукт, помогающий предприятиям-клиентам экономить более 235 миллионов литров воды в день, которые обычно расходуются впустую. Такой объем воды превышает целую сотню олимпийских плавательных бассейнов [3].
- Системы обмена сообщениями (чаты, приложения для совместной работы, мобильные мессенджеры и пр.) – это отличный use-case для Cassandra, как и данные с IoT-датчиков, поскольку в этих случаях требуется не обновление информации, а быстрая запись и оперативное чтение. Кассандра с высокой скоростью записывает новые входящие сообщения, позволяет быстро читать их и удалять устаревшие с помощью операций затирания и уплотнения данных, о которых мы рассказывали здесь.
- Обнаружение мошенничества (Fraud Detection). Несмотря на некоторые сложности с поддержкой ACID-транзакций (напомним, начиная с версии 1.1, Кассандра обеспечивает ACID только на уровне одной записи, т.е. для набора столбцов с одним ключом) [8], банки могут использовать эту нереляционную СУБД в рамках своих антифрод-систем для своевременного выявления и предупреждения мошеннических операций. Это возможно благодаря высокой скорости работы Кассандры и аналитике в реальном времени за счет бесшовной интеграции со соответствующими Big Data инструментами, которые предоставляет, например, Apache Spark с его библиотекой алгоритмов машинного обучения MLLib [6]. Также в контексте обеспечения безопасности стоит отметить опыт компании Internet Identity, которая использовала Кассандру для защиты данных своих клиентов [4]. Также Cassandra может использоваться для обнаружения спама в социальных сетях, определяя сообщения с одинаковым содержанием в реальном времени. Благодаря этому можно анализировать активность спамеров, выявляя шаблоны нежелательных публикаций и периодичность их появления. В частности, Orange, французская телекоммуникационная компания, один из ведущих мировых операторов телекоммуникаций и сотовой связи, а также интернет-провайдер, использует Кассандру вместе с уже упомянутым Apache Spark MLLib для обнаружения мошеннических операций в режиме реального времени [9].
Кассандра в медицине: пример аналитической Big Data системы с повышенной надежностью
Также интересным кейсом практического использования Кассандры в масштабном Big Data проекте является пример построения на ее основе аналитической системы для здравоохранения. Для этого случая необходимо обрабатывать потоковые данные в реальном времени, исключая проблемы несогласованности данных в среде распределенных вычислений. При этом медицинская система анализа данных работает со множеством источников информации: базы данных лекарств, электронные медицинские карты, анонимные истории болезни, результаты анализов и т.д.
Данные поступают большими объемами и высокой скоростью, включая информацию от спецоборудования (датчиков и мониторов). Для такой распределенной системы требуется среда Hadoop с нереляционной СУБД для обработки хранилища документов или пар ключ-значение. Для потоковой передачи данных в реальном времени целесообразно использовать Apache Storm, однако, он не поддерживает сохранение состояний приложения (stateful). Поэтому возникает потребность во внешнем постоянном хранилище информации, роль также может исполнять Apache Cassandra, наряду с хранением и быстрой обработкой медицинских данных.
А благодаря децентрализованной архитектуре без единой точки отказа, Кассандра позволяет гарантировать сохранность информации даже в случае отказа нескольких узлов или целого датацентра (при условии распределения данных в нескольких ЦОДах). Это свойство СУБД особенно важно в такой критической отрасли, как медицина [10].
В следующей статье мы рассмотрим другой пример практического использования Cassandra в масштабном Big Data проекте – рекомендательную систему стримингового сервиса Spotify на базе этой СУБД в сочетании с Apache Kafka, Storm, Crunch и HDFS.
Источники
- https://ru.wikipedia.org/wiki/Apache_Cassandra
- https://www.zymr.com/cassandra-use-cases/
- https://academy.datastax.com/use-cases/internet-of-things-time-series
- https://www.datastax.com/blog/2014/06/what-earth-are-people-using-cassandra-anyway
- https://labs.spotify.com/2015/09/21/cassandra-data-driven-configuration/
- https://towardsdatascience.com/when-to-use-cassandra-and-when-to-steer-clear-72b7f2cede76
- https://labs.spotify.com/2015/01/09/personalization-at-spotify-using-cassandra/
- https://ru.bmstu.wiki/Apache_Cassandra
- https://academy.datastax.com/use-cases/fraud-detection
- https://medium.com/@gp_pulipaka/apache-cassandra-for-healthcare-data-analytics-23e79fdf3134