Apache Cassandra: распределенное управление большими базами данных

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

Что такое Apache Cassandra?

Apache Cassandra — это система управления базами данных (СУБД) с открытым исходным кодом для очень больших, но структурированных баз данных. Благодаря легкой масштабируемости эти базы данных могут быть распределены по различным кластерам, поэтому Cassandra не привязана к одному серверу.

Cassandra — это база данных NoSQL, ориентированная на столбцы. В данном случае NoSQL означает «не только SQL», а не «нет SQL». Когда речь идет об обработке больших объемов данных, структуры NoSQL обладают значительными преимуществами перед типичными базами данных SQL, поскольку они не связаны ограничениями языка запросов SQL (Structured Query Language). Apache Cassandra имеет свой собственный язык запросов под названием Cassandra Query Language (CQL), который похож на SQL, но гораздо более предпочтителен для разработчиков, поскольку адаптирован к особенностям Cassandra.

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

Факт

Первоначально Cassandra была разработана Авинашем Лакшманом и Прашантом Маликом в Facebook и впервые выпущена в 2008 году. В 2009 году Apache Software Foundation, одно из самых важных сообществ разработчиков открытого кода, включило проект в качестве подпроекта в Apache Incubator. В феврале 2011 года Apache Cassandra стал проектом высшего уровня в Apache Software Foundation, наряду с другими популярными проектами, такими как Apache HTTP Server, поисковый сервер Solr, платформа обмена сообщениями Kafka или OpenOffice, который является самым известным проектом Apache.

Наряду с первоначальными разработчиками, свой вклад в развитие Cassandra вносят и другие крупные компании, такие как IBM, Twitter и Rackspace, один из крупнейших поставщиков ИТ-услуг в США. Одним из основных спонсоров проекта является компания DataStax, специализирующаяся на поддержке по подписке, помощи в установке и учебных курсах по базе данных Cassandra. DataStax участвует в создании 80% релизов Cassandra с открытым исходным кодом, а также предлагает DataStax Enterprise, коммерческое решение для баз данных, построенное на базе свободно распространяемой системы Cassandra.

По данным DB-EnginesRanking, Apache Cassandra в настоящее время является самой популярной колоночно-ориентированной базой данных и опережает таких крупных конкурентов, как Microsoft Azure Cosmos DB или Google Cloud Bigtable.

Cassandra: основные функции

Будучи по-настоящему распределенной системой, Cassandra не использует мастера. Все кластеры имеют равные полномочия и могут обрабатывать каждый запрос к базе данных, что значительно повышает производительность. Данные распределяются по узлам. Система также легко масштабируется простым добавлением новых узлов. После установки Cassandra все, что вам нужно сделать, это распространить конфигурационные файлы на новые узлы. Cassandra предоставляет инструменты для этого.

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

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

Базы данных Cassandra поддерживают модель программирования MapReduce, разработанную компанией Google для вычислений с использованием больших объемов данных в распределенных системах. Собственный язык запросов CQL (Cassandra Query Language) разработан специально для структур данных Cassandra.

Каковы преимущества Apache Cassandra?

Одним из основных преимуществ Cassandra является то, что она обеспечивает легкую масштабируемость с очень высокой отказоустойчивостью — два фундаментальных требования для приложений больших данных. Cassandra является горизонтально масштабируемой, что означает, что вы можете увеличить емкость и производительность системы, добавляя больше узлов. Это противоположно вертикальному масштабированию, когда вы добавляете более мощные процессоры и большие жесткие диски к одному серверу базы данных, когда вам нужно увеличить производительность или емкость. Горизонтальное масштабирование в большинстве случаев является более дешевым решением, поскольку вы можете использовать имеющееся в продаже серверное оборудование.

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

Где используется Apache Cassandra?

Одной из основных целей при разработке Cassandra было помочь пользователям Facebook более легко осуществлять поиск в своих почтовых ящиках. Для реализации этой функции корпоративный гигант использовал кластер из более чем 150 отдельных узлов. Не случайно Cassandra, которая по своей структуре напоминает Amazon Dynamo и Google Bigtable, сегодня очень популярна среди провайдеров крупных социальных сетей, в которых огромные объемы данных передаются между пользователями. Наряду с Twitter, Instagram и Spotify, среди других известных клиентов — сайт социальных закладок Digg и агрегатор социальных новостей Reddit.

Примечание:

В настоящее время Facebook перешел с Cassandra на собственное решение, объединяющее системы баз данных HBase и HDFS, которые являются компонентами фреймворка Apache Hadoop.

Многие другие сети, обрабатывающие большие объемы данных, используют Cassandra как в качестве основной базы данных, так и в качестве вторичного компонента для выполнения конкретных задач. В качестве примеров можно привести eBay, GitHub, Netflix, The Weather Channel и Большой адронный коллайдер в CERN, Европейской организации ядерных исследований (около 30 000 терабайт данных в год). Apple имеет одну из самых больших инсталляций Cassandra, насчитывающую 75 000 узлов.

Начало работы с Apache Cassandra

Apache Cassandra работает на UNIX-подобных системах, предпочтительно на серверах Linux. Также требуется Java Runtime Environment, поскольку Cassandra программируется на языке Java. Установочные пакеты хранятся на серверах Apache в виде пакетов Debian или RPM. Чтобы установить Cassandra, вы добавляете соответствующий репозиторий. После установки вы создаете обычные каталоги data, cache и protocol и настраиваете файл cassandra.yaml.

Cassandra имеет собственные инструменты командной строки для задач администратора. Наиболее важной утилитой является оболочка Cassandra Query Language shell (cqlsh).

Вы можете использовать следующую команду для просмотра списка всех доступных команд:

cqlsh --help

В следующем видеоролике YouTube дается наглядное введение в Apache Cassandra:

В целях защиты вашей конфиденциальности видео не будет загружаться, пока вы не нажмете на него.

Совет

DataStax предлагает OpsCenter, веб-инструмент для визуального управления и мониторинга систем Cassandra.

Оцените статью
cdelat.ru
Добавить комментарий