Jump to content

Апач Кассандра

Апач Кассандра
Оригинальный автор(ы) Авинаш Лакшман, Прашант Малик / Facebook
Разработчик(и) Фонд программного обеспечения Apache
Первоначальный выпуск июль 2008 г .; 16 лет назад ( 2008-07 )
Стабильная версия
5.0-rc1 [1]  Отредактируйте это в Викиданных / 18 июля 2024 г .; 9 дней назад ( 18 июля 2024 г. )
Репозиторий
Написано в Ява
Операционная система Кросс-платформенный
Доступно в Английский
Тип NoSQL База данных , хранилище данных
Лицензия Лицензия Апач 2.0
Веб-сайт Кассандра .apache .org  Edit this on Wikidata

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

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

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

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

  • 0.6, выпущенная 12 апреля 2010 г., добавлена ​​поддержка встроенного кэширования и Apache Hadoop MapReduce. [8]
  • 0.7, выпущенная 8 января 2011 г., добавлены вторичные индексы и изменения онлайн-схемы. [9]
  • В версию 0.8, выпущенную 2 июня 2011 г., добавлен язык запросов Cassandra (CQL), самонастраивающиеся таблицы памяти и поддержка обновлений без простоев. [10]
  • В версии 1.0, выпущенной 17 октября 2011 г., добавлено интегрированное сжатие, уровневое сжатие и улучшена производительность чтения. [11]
  • В версии 1.1, выпущенной 23 апреля 2012 г., добавлены самонастраивающиеся кэши, изоляция на уровне строк и поддержка смешанного развертывания SSD/вращающихся дисков. [12]
  • В версии 1.2, выпущенной 2 января 2013 г., добавлена ​​кластеризация виртуальных узлов, связь между узлами, атомарные пакеты и отслеживание запросов. [13]
  • 2.0, выпущенная 4 сентября 2013 г., добавлены облегченные транзакции (на основе консенсусного протокола Paxos ), триггеры, улучшено сжатие.
  • Версия 2.1 выпущена 10 сентября 2014 г. [14]
  • 2.2 выпущена 20 июля 2015 г.
  • 3.0 выпущена 11 ноября 2015 г.
  • Выпуски с 3.1 по 3.10 представляли собой ежемесячные выпуски с использованием модели выпуска, напоминающей тик-так : выпуски с четными номерами содержали как новые функции, так и исправления ошибок, а выпуски с нечетными номерами включали только исправления ошибок. [15]
  • Версия 3.11 выпущена 23 июня 2017 г. в виде стабильной серии выпусков 3.11 и исправлена ​​ошибка из последнего выпуска функции тик-так.
  • 4.0 выпущена 26 июля 2021 г.
  • 4.1 выпущена 13 декабря 2022 г.
  • Версия 4.1.4 выпущена 14 февраля 2024 г.
Версия Исходная дата выпуска Последняя версия Дата выпуска Статус [16]
Старая версия, больше не поддерживается: 0.6. 2010-04-12 0.6.13 2011-04-18 Больше не поддерживается
Старая версия, больше не поддерживается: 0.7. 2011-01-10 0.7.10 2011-10-31 Больше не поддерживается
Старая версия, больше не поддерживается: 0.8. 2011-06-03 0.8.10 2012-02-13 Больше не поддерживается
Старая версия, больше не поддерживается: 1.0. 2011-10-18 1.0.12 2012-10-04 Больше не поддерживается
Старая версия, больше не поддерживается: 1.1. 2012-04-24 1.1.12 2013-05-27 Больше не поддерживается
Старая версия, больше не поддерживается: 1.2. 2013-01-02 1.2.19 2014-09-18 Больше не поддерживается
Старая версия, больше не поддерживается: 2.0. 2013-09-03 2.0.17 2015-09-21 Больше не поддерживается
Старая версия, больше не поддерживается: 2.1. 2014-09-16 2.1.22 2020-08-31 Больше не поддерживается
Старая версия, больше не поддерживается: 2.2. 2015-07-20 2.2.19 2020-11-04 Больше не поддерживается
Старая версия, но все еще поддерживается: 3.0. 2015-11-09 3.0.29 2023-05-15 Поддерживается до выпуска версии 5.0.0 (ноябрь–декабрь 2023 г.).
Старая версия, но все еще поддерживается: 3.11. 2017-06-23 3.11.15 2023-05-05 Поддерживается до выпуска версии 5.0.0 (ноябрь–декабрь 2023 г.).
Старая версия, но все еще поддерживается: 4.0. 2021-07-26 4.0.9 2023-04-14 Поддерживается до выпуска 5.1.0 (~июль 2024 г.)
Текущая стабильная версия: 4.1. 2022-06-17 4.1.4 2024-02-14 Последний выпуск
Легенда:
Старая версия
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Future release

Основные особенности

[ редактировать ]
Распределенный
Каждый узел в кластере имеет одну и ту же роль. Не существует единой точки отказа. Данные распределены по кластеру (поэтому каждый узел содержит разные данные), но нет главного узла, поскольку каждый узел может обслуживать любой запрос.
Поддерживает репликацию и репликацию в нескольких центрах обработки данных.
Стратегии репликации настраиваются. [17] Cassandra спроектирована как распределенная система для развертывания большого количества узлов в нескольких центрах обработки данных. Ключевые функции распределенной архитектуры Cassandra специально разработаны для развертывания в нескольких центрах обработки данных, обеспечения резервирования, аварийного переключения и аварийного восстановления.
Масштабируемость
Разработанный таким образом, чтобы пропускная способность чтения и записи увеличивалась линейно по мере добавления новых машин, чтобы не было простоев или перерывов в работе приложений.
Отказоустойчивый
Данные автоматически реплицируются на несколько узлов для обеспечения отказоустойчивости . репликация Поддерживается между несколькими центрами обработки данных. Неисправные узлы можно заменить без простоя.
Настраиваемая согласованность
Cassandra обычно классифицируется как система AP , а это означает, что доступность и устойчивость к разделам обычно считаются более важными, чем согласованность в Cassandra. [18] Операции записи и чтения обеспечивают настраиваемый уровень согласованности : от «запись никогда не дает сбоев» до «блокировать чтение всех реплик», при этом уровень кворума находится посередине. [19]
Поддержка MapReduce
Cassandra имеет интеграцию с Hadoop и поддержку MapReduce . Также имеется поддержка Apache Pig и Apache Hive . [20]
Язык запросов
Cassandra представила язык запросов Cassandra (CQL). CQL — это простой интерфейс для доступа к Cassandra в качестве альтернативы традиционному языку структурированных запросов (SQL).
Окончательная согласованность
Cassandra управляет конечным согласованием операций чтения, добавления и удаления с помощью Tombstones .

Язык запросов Кассандра

[ редактировать ]

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

Пространство ключей в Cassandra — это пространство имен, которое определяет репликацию данных между узлами. Таким образом, репликация определяется на уровне пространства ключей. Ниже приведен пример создания пространства ключей, включая семейство столбцов в CQL 3.0: [22]

CREATE KEYSPACE MyKeySpace
  WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 };

USE MyKeySpace;

CREATE COLUMNFAMILY MyColumns (id text, lastName text, firstName text, PRIMARY KEY(id));

INSERT INTO MyColumns (id, lastName, firstName) VALUES ('1', 'Doe', 'John');

SELECT * FROM MyColumns;

Что дает:

 id | lastName | firstName
----+----------+----------
  1 | Doe      | John

(1 rows)

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

[ редактировать ]

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

Cassandra не поддерживается в Windows, начиная с версии 4, см. проблему CASSANDRA-16171. [25]

Надгробия

[ редактировать ]

Известно, что маркеры удаления, называемые «надгробиями», вызывают серьезное снижение производительности. [26]

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

[ редактировать ]

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

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

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

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

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

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

[ редактировать ]

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

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

См. также

[ редактировать ]
  1. ^ https://github.com/apache/cassandra/releases/tag/cassandra-5.0-rc1 . {{cite web}}: Отсутствует или пусто |title= ( помощь )
  2. ^ Касарес, Хоакин (5 ноября 2012 г.). «Репликация из нескольких центров обработки данных в Cassandra» . ДатаСтакс . Проверено 25 июля 2013 г. Врожденные концепции центров обработки данных Cassandra важны, поскольку они позволяют выполнять несколько рабочих нагрузок в нескольких центрах обработки данных…
  3. ^ «Обзор документации Apache Cassandra» . Проверено 21 января 2021 г.
  4. ^ Гамильтон, Джеймс (12 июля 2008 г.). «Facebook выпускает Cassandra с открытым исходным кодом» . Проверено 4 июня 2009 г.
  5. ^ «Это теперь новая страсть?» . Mail-archive.com. 2 марта 2009 г. Архивировано из оригинала 25 апреля 2010 года . Проверено 29 марта 2010 г.
  6. ^ «Кассандра — это проект верхнего уровня Apache» . Mail-archive.com. 18 февраля 2010 г. Архивировано из оригинала 28 марта 2010 года . Проверено 29 марта 2010 г.
  7. ^ «Смысл имени апачей Кассандры» . Архивировано из оригинала 1 ноября 2016 г. Проверено 19 июля 2016 г. Апачи Кассандра названы в честь греческой мифологической пророчицы Кассандры. [...] Из-за ее красоты Аполлон даровал ей способность пророчества. [...] Когда Кассандра Троянская отказала Аполлону, он наложил на нее проклятие, чтобы не поверили всем предсказаниям ее и ее потомков. [...] Кассандра - проклятый Оракул[.]
  8. ^ «The Apache Software Foundation объявляет о выпуске Apache Cassandra Release 0.6: Блог Apache Software Foundation» . 13 апреля 2010 года . Проверено 5 января 2016 г.
  9. ^ «The Apache Software Foundation объявляет о выпуске Apache Cassandra 0.7: Блог Apache Software Foundation» . 11 января 2011 года . Проверено 5 января 2016 г.
  10. ^ Эрик Эванс. «[Пользователь Cassandra] [РЕЛИЗ] 0.8.0» . Архивировано из оригинала 8 июня 2015 года . Проверено 5 января 2016 г.
  11. ^ «Кассандра 1.0.0. Готова к использованию на предприятиях» . ИнфоQ . Проверено 5 января 2016 г.
  12. ^ «The Apache Software Foundation объявляет о выпуске Apache Cassandra™ v1.1: Блог Apache Software Foundation» . 24 апреля 2012 года . Проверено 5 января 2016 г.
  13. ^ «The Apache Software Foundation объявляет о выпуске Apache Cassandra™ v1.2: Блог Apache Software Foundation» . apache.org . 2 января 2013 года . Проверено 11 декабря 2014 г.
  14. ^ Сильвен Лебрен (10 сентября 2014 г.). «[УСПЕХ ГОЛОСОВАНИЯ] Выпуск Apache Cassandra 2.1.0» . mail-archive.com . Проверено 11 декабря 2014 г.
  15. ^ «Кассандра 2.2, 3.0 и последующие версии» . 16 июня 2015 года. Архивировано из оригинала 20 апреля 2016 года . Проверено 22 апреля 2016 г.
  16. ^ «Релизы сервера Кассандра» . cassandra.apache.org . Проверено 15 декабря 2015 г.
  17. ^ «Развертывание Cassandra в нескольких центрах обработки данных» . ДатаСтакс . Проверено 11 декабря 2014 г.
  18. ^ «Теорема CAP — Изучите Кассандру» . teddyma.gitbooks.io .
  19. ^ Перейти обратно: а б ДатаСтакс (15 января 2013 г.). «О согласованности данных» . Архивировано из оригинала 26 июля 2013 г. Проверено 25 июля 2013 г.
  20. ^ «Поддержка Hadoop». Архивировано 16 ноября 2017 г. в статье Wayback Machine на вики Кассандры.
  21. ^ «Драйвер DataStax C/C++ для Apache Cassandra» . ДатаСтакс . Проверено 15 декабря 2014 г.
  22. ^ «ККЛ» . Архивировано из оригинала 13 января 2016 года . Проверено 5 января 2016 г.
  23. ^ «WAT — Cassandra: согласованность на уровне строк #$@&%*! — datanerds.io» . datanerds.io . Архивировано из оригинала 26 ноября 2016 года . Проверено 28 ноября 2016 г.
  24. ^ Лебресне, Сильвен (21 февраля 2012 г.). «В Cassandra 1.1: изоляция на уровне строк» . DataStax: постоянно действующая платформа данных | НетSQL | Апач Кассандра . Проверено 18 июля 2018 г.
  25. ^ «Удаление сценариев Windows» . Трекер проблем Кассандры . 04.04.2023 . Проверено 4 апреля 2023 г.
  26. ^ Родригес, Ален (27 июля 2016 г.). «Об удалениях и надгробиях в Кассандре» .
  27. ^ Эллис, Джонатан (15 февраля 2012 г.). «Схема в Кассандре 1.1» . ДатаСтакс . Проверено 25 июля 2013 г.
  28. ^ Эллис, Джонатан (3 декабря 2010 г.). «Что нового в Cassandra 0.7: Вторичные индексы» . ДатаСтакс . Проверено 25 июля 2013 г.
  29. ^ Эллис, Джонатан (2 марта 2012 г.). «Возрождение управления схемами в Cassandra 1.1» . ДатаСтакс . Проверено 25 июля 2013 г.
  30. ^ Лебресне, Сильвен (5 августа 2012 г.). «В версии 1.2: поддержка коллекций в CQL3» . ДатаСтакс . Проверено 25 июля 2013 г.
  31. ^ ДатаСтакс. «Документация Apache Cassandra 0.7 — семейства столбцов» . Документация Apache Cassandra 0.7 . Проверено 29 октября 2012 г.
  32. ^ «Нодеинструмент» . Кассандра Вики . Архивировано из оригинала 13 января 2016 года . Проверено 5 января 2016 г.
  33. ^ «Как отслеживать показатели производительности Cassandra» . Датадог. 3 декабря 2015 года . Проверено 5 января 2016 г.
  34. ^ «Метрики» . Кассандра Вики . Архивировано из оригинала 12 ноября 2015 года . Проверено 5 января 2016 г.
  35. ^ «Мониторинг» . Документация Кассандры . Проверено 1 февраля 2018 г.

Библиография

[ редактировать ]
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 292283bcf9018f9a84c94984941bec3a__1714391700
URL1:https://arc.ask3.ru/arc/aa/29/3a/292283bcf9018f9a84c94984941bec3a.html
Заголовок, (Title) документа по адресу, URL1:
Apache Cassandra - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)