Apache Cassandra

редактировать
Apache Cassandra
Логотип Cassandra
Автор (ы) Авинаш Лакшман, Прашант Малик / Facebook
Разработчик (s) Apache Software Foundation
Первоначальный выпускиюль 2008 г.; 12 лет назад (2008-07)
Стабильный выпуск 3.11.8 / 31 августа 2020 г.; 49 дней назад (2020-08-31)
Репозиторий Репозиторий Cassandra
Написано наJava
Операционная система Кросс-платформенная
Доступно вАнглийский
Тип NoSQL База данных, хранилище данных
Лицензия Лицензия Apache 2.0
Веб-сайтcassandra.apache.org

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

Содержание
  • 1 История
    • 1.1 Релизы
  • 2 Основные функции
    • 2.1 Язык запросов Cassandra
    • 2.2 Известные проблемы
      • 2.2.1 Надгробные камни
    • 2.3 Модель данных
  • 3 Управление и мониторинг
  • 4 Известные приложения
  • 5 См. Также
  • 6 Ссылки
  • 7 Библиография
  • 8 Внешние ссылки
История

Авинаш Лакшман, один из авторов Dynamo из Amazon и Прашант Малик первоначально разработали Cassandra в Facebook для поддержки функции поиска в папке входящих сообщений Facebook. Facebook выпустил Cassandra как проект с открытым исходным кодом на код Google в июле 2008 года. В марте 2009 года он стал проектом Apache Incubator. 17 февраля 2010 года он перешел в проект верхнего уровня.

Разработчики Facebook назвали свою базу данных в честь троянского мифологического пророка Кассандра с классическими намёками на проклятие на оракуле..

Релизы

Релизы после выпуска включают

  • 0.6, выпущенный 12 апреля 2010 г., добавленную поддержку интегрированного кэширования, и Apache Hadoop MapReduce
  • 0.7, выпущенный в январе 08 2011, добавлены вторичные индексы и изменения онлайн-схемы
  • 0.8, выпущен 2 июня 2011 г., добавлен язык запросов Cassandra (CQL), самонастраивающиеся таблицы memtables и поддержка обновлений с нулевым временем простоя
  • 1.0, выпущенный 17 октября 2011 г., добавлено интегрированное сжатие, выравнивание сжатия и улучшенная производительность чтения
  • 1.1, выпущенный 23 апреля 2012 г., добавлены самонастраивающиеся кеши, изоляция на уровне строк и поддержка смешанного SSD / спиннинга дисковые развертывания
  • 1.2, выпущенные 2 января 2013 г., добавлены кластеризация виртуальных узлов, межузловая связь, атомарные пакеты и трассировка запросов
  • 2.0, выпущенный 4 сентября 2013 г., добавлены облегченные транзакции (на основе консенсусного протокола Paxos ), триггеры, улучшенное сжатие
  • 2.1 выпущено 10 сентября 2014 г.
  • 2.2 выпущено июль 20, 2015
  • 3.0 выпущен 11 ноября 2015
  • Выпуски 3.1–3.10 были ежемесячными с использованием модели выпуска tick-tock с четными номерами выпусков как новые функции, так и исправления ошибок, в то время как выпуски с нечетными номерами будут включать только исправления ошибок.
  • 3.11 выпущена 23 июня 2017 г. как стабильная серия выпусков 3.11 и исправление ошибок из последнего выпуска функции Tick-tock.
ВерсияИсходная дата выпускаПоследняя версияДата выпускаСтатус
Старая версия, больше не поддерживается: 0.62010-04-120.6.132011-04-18Больше не поддерживается
Старая версия, больше не поддерживается: 0.72011-01-100.7.102011-10-31Больше не поддерживается
Старая версия, нет lon ger поддерживается: 0.82011-06-030.8.102012-02-13Больше не поддерживается
Старая версия, больше не поддерживается: 1.02011-10-181.0.122012-10-04Больше не поддерживается
Старая версия, больше не поддерживается: 1.12012-04-241.1.122013-05-27Больше не поддерживается
Старый версия, больше не поддерживается: 1.22013-01-021.2.192014-09-18Больше не поддерживается
Старая версия, больше не поддерживается: 2.02013-09-032.0.172015-09-21Больше не поддерживается
Более старая версия, но все еще поддерживается: 2.12014-09-162.1.222020-08-31Все еще поддерживается, критично исправляет только
Старая версия, но все еще поддерживается: 2.22015-07-202.2.182020-08-31По-прежнему поддерживается
Старая версия, но поддерживается: 3.009.11.20153.0.222020-08-31По-прежнему поддерживается
Текущая стабильная версия: 3.112017-06-233.11. 82020-08-31Последний выпуск
Последняя предварительная версия будущего выпуска: 4.0н / д4.0-beta22020-08-31Предварительный просмотр бета
Условные обозначения: Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия версия Будущий выпуск
Основные функции
Распределенный
Каждый узел в кластере имеет одинаковую роль. Нет единой точки отказа. Данные распределяются по кластеру (так что каждый узел содержит разные данные), но нет главного, поскольку каждый узел может обслуживать любой запрос.
Поддерживает репликацию и репликацию нескольких центров обработки данных
Стратегии репликации настраиваются. Cassandra разработана как распределенная система для развертывания большого количества узлов в нескольких центрах обработки данных. Ключевые особенности распределенной архитектуры Cassandra специально адаптированы для развертывания с несколькими центрами обработки данных, для обеспечения избыточности, аварийного переключения и аварийного восстановления.
Масштабируемость
Обеспечивает линейное увеличение пропускной способности чтения и записи по мере добавления новых машин, с целью предотвращения простоев или прерывания работы приложений.
Отказоустойчивый
Данные автоматически реплицируются на несколько узлов для отказоустойчивости. Поддерживается репликация в нескольких центрах обработки данных. Отказавшие узлы могут быть заменены без простоев.
Настраиваемая согласованность
Cassandra обычно классифицируется как AP-система, что означает, что доступность и устойчивость к разделам обычно считаются более важными, чем согласованность в Cassandra операции записи и чтения предлагают настраиваемый уровень согласованности, от «запись никогда не сбой» до «блокировка всех реплик для чтения», с уровнем кворума в посередине.
Поддержка MapReduce
Cassandra имеет интеграцию с Hadoop с поддержкой MapReduce. Также имеется поддержка Apache Pig и Apache Hive.
Язык запросов
. Cassandra представила язык запросов Cassandra Query Language (CQL). CQL - это простой интерфейс для доступа к Cassandra в качестве альтернативы традиционному Язык структурированных запросов (SQL).
Конечная согласованность
Cassandra управляет конечной согласованностью чтений, upserts и удаляет с помощью Tombstones.

Cassandra Query Language

Cassandra представила язык запросов Cassandra Query Language (CQL). CQL - это простой интерфейс для доступа к Cassandra в качестве альтернативы традиционному Язык структурированных запросов (SQL). CQL добавляет уровень абстракции, который скрывает детали реализации этой структуры и предоставляет собственный синтаксис для коллекций и других распространенных кодировок. Доступны языковые драйверы для Java (JDBC), Python (DBAPI2), Node.JS (Datastax), Go (gocql) и C ++.

Ниже приведен пример создания пространства ключей, включая семейство столбцов в CQL 3.0:

СОЗДАТЬ KEYSPACE MyKeySpace С REPLICATION = {'class': 'SimpleStrategy', 'replication_factor': 3}; ИСПОЛЬЗУЙТЕ MyKeySpace; СОЗДАТЬ COLUMNFAMILY MyColumns (текст идентификатора, последний текст, первый текст, ПЕРВИЧНЫЙ КЛЮЧ (идентификатор)); ВСТАВИТЬ В MyColumns (id, Last, First) VALUES ('1', 'Doe', 'John'); ВЫБРАТЬ * ИЗ MyColumns;

Что дает:

id | Последний | Первый ---- + ------ + ------ 1 | Доу | John (1 строка)

Известные проблемы

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

на уровне строк

Маркеры удаления, называемые «Tombstones», как известно, вызывают серьезное снижение производительности.

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

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

Таблицы можно создавать, отбрасывать и изменять во время выполнения без блокировки обновлений и запросов.

Кассандра не может выполнять объединений или подзапросы. Скорее, Кассандра подчеркивает денормализацию с помощью таких функций, как коллекции.

A семейство столбцов (называемое «таблицей» начиная с CQL 3) напоминает таблицу в РСУБД (системе управления реляционными базами данных). Семейства столбцов содержат строки и столбцы. Каждая строка однозначно идентифицируется ключом строки. Каждая строка состоит из нескольких столбцов, каждый из которых имеет имя, значение и отметку времени. В отличие от таблицы в СУБД, разные строки в одном семействе столбцов не обязательно должны иметь один и тот же набор столбцов, и столбец можно добавить в одну или несколько строк в любое время.

Каждый ключ в Cassandra соответствует значению, которое является объектом. Каждый ключ имеет значения в виде столбцов, а столбцы сгруппированы в наборы, называемые семействами столбцов. Таким образом, каждый ключ идентифицирует строку с переменным количеством элементов. Эти семейства столбцов можно рассматривать как таблицы. Таблица в Cassandra - это распределенная многомерная карта, индексируемая ключом. Кроме того, приложения могут указывать порядок сортировки столбцов в семействе Super Column или Simple Column.

Управление и мониторинг

Cassandra - это система на основе Java, которой можно управлять и контролировать с помощью Java Management Extensions (JMX). Например, JMX-совместимая утилита может использоваться для управления кластером Cassandra (добавление узлов в кольцо, осушение узлов, вывод узлов из эксплуатации и т. Д.). Nodetool также предлагает ряд команд для возврата метрик Cassandra, касающихся использования диска, задержки, сжатия, сборки мусора и т. Д.

Начиная с Cassandra 2.0.2 в 2013 году, измерения нескольких метрик производятся с помощью метрик Dropwizard. framework, и их можно запрашивать через JMX с помощью таких инструментов, как JConsole, или передавать во внешние системы мониторинга через плагины репортеров, совместимые с Dropwizard.

Известные приложения

Согласно DB-Engines в рейтинге, Cassandra является самым популярным хранилищем широких столбцов, а в сентябре 2014 года занял 9-е место по популярности.

  • Apple использует 100 000 узлов Cassandra, как показано на Cassandra Summit San Francisco 2015, хотя на нем не уточняется, какие продукты, услуги или функции.
  • AppScale использует Cassandra в качестве серверной части для приложений Google App Engine.
  • BlackRock использует Cassandra в своих Aladdin платформа управления инвестициями
  • CERN использовала прототип на базе Cassandra для своего AT Эксперимент LAS для архивирования информации мониторинга онлайн-системы DAQ
  • Cisco WebEx использует Cassandra для хранения пользовательской ленты и активности почти в реальном времени.
  • Постоянный контакт использует Cassandra в своих маркетинговых приложениях для электронной почты и социальных сетей. Развернуто более 200 узлов.
  • Digg, социальный новостной сайт, объявил 9 сентября 2009 г. о развертывании использования Cassandra и подтвердил это 8 марта 2010 г. TechCrunch с тех пор связал Cassandra с критикой надежности Digg v4 и недавними проблемами компании. Позже ведущие инженеры Digg упрекали эту критику как отвлекающий маневр и обвинили в отсутствии нагрузочного тестирования.
  • Discord переключился на Cassandra для хранения миллиардов сообщений от MongoDB в ноябре 2015 года
  • Formspring использует Cassandra для подсчета ответов, а также для хранения данных социальных сетей (подписчиков, подписчиков, блокировщиков, блокировок) для 26 миллионов аккаунтов с 10 миллионами ответов в день
  • Globo.com использует Cassandra в качестве обратной связи. конечная база данных для своих потоковых сервисов
  • Grubhub использует Cassandra в качестве основного постоянного хранилища данных для своих внутренних сервисов.
  • Mahalo.com использовал Cassandra для записи журналов активности пользователей и тем для своего сайта вопросов и ответов
  • Netflix использует Cassandra в качестве внутренней базы данных для своих потоковых сервисов.
  • Nutanix устройства используют Cassandra для хранения метаданных и статистики.
  • Ooyala построил аналитический движок в реальном времени с помощью Cassandra
  • Openwave использует Cassandra как распределенную базу данных и как механизм распределенного хранения f или их платформа обмена сообщениями
  • OpenX использует более 130 узлов на Cassandra для своего продукта OpenX Enterprise для хранения и репликации рекламы и данных таргетинга для доставки рекламы
  • Rackspace использует Cassandra для внутренних целей.
  • Reddit переключился на Cassandra с memcacheDB 12 марта 2010 г. и столкнулся с некоторыми проблемами в мае того же года из-за недостаточного количества узлов в их кластере.
  • RockYou использует Cassandra для записи каждого щелчка для 50 миллионов активных пользователей в месяц в реальном времени для своих онлайн-игр
  • SoundCloud использует Cassandra для хранения панели управления своих пользователей
  • Uber использует Cassandra для хранения около 10 000 функций в их ежедневно обновляемых в масштабах компании Магазин функций для доступа с малой задержкой во время прогнозирования моделей в реальном времени
  • Urban Airship использует Cassandra с хостингом мобильных сервисов для более 160 миллионов установок приложений на 80 миллионах уникальных устройств
См. Также
  • Бесплатно и с открытым исходным кодом программный портал
Ссылки
Библиография
Внешние ссылки
Викискладе есть медиафайлы, связанные с Apache Cassandra.
Викиверситет содержит учебные ресурсы по Big Data / Cassandra
Последняя правка сделана 2021-06-11 20:10:14
Содержание доступно по лицензии CC BY-SA 3.0 (если не указано иное).
Обратная связь: support@alphapedia.ru
Соглашение
О проекте