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

- Лакшман, Авинаш (25 августа 2008 г.). «Кассандра — структурированная система хранения данных в P2P-сети» . Инженерное дело @ Заметки Facebook . Проверено 17 июня 2014 г.
- «Проект Апачи Кассандра» . Форест-Хилл, Мэриленд, США: Фонд программного обеспечения Apache . Проверено 17 июня 2014 г.
- «Проект Вики» . Форест-Хилл, Мэриленд, США: Фонд программного обеспечения Apache . Архивировано из оригинала 14 июня 2014 г. Проверено 17 июня 2014 г.
- Хьюитт, Эбен (1 декабря 2010 г.). «Принятие Apache Cassandra» . infoq.com . ИнфоКью, C4Media Inc. Проверено 17 июня 2014 г.
- Лакшман, Авинаш; Малик, Прашант (15 августа 2009 г.). «Кассандра — децентрализованная структурированная система хранения» (PDF) . cs.cornell.edu . Авторы из Facebook . Проверено 17 июня 2014 г.
- Эллис, Джонатан (29 июля 2009 г.). «Что должен знать каждый разработчик о масштабируемости базы данных» . SlideShare.net . Проверено 17 июня 2014 г. Из доклада OSCON 2009 о СУРБД против Dynamo, Bigtable и Cassandra.
- «Cassandra-RPM — сборка менеджера пакетов Red Hat (RPM) для проекта Apache Cassandra» . code.google.com . Менло-Парк, Калифорния, США: Хостинг проектов Google . Проверено 17 июня 2014 г.
- Рот, Грегор (14 октября 2012 г.). «Кассандра на примере — путь запросов на чтение и запись» . SlideShare.net . Проверено 17 июня 2014 г.
- Мансур, Умер (4 ноября 2012 г.). «Сборник обучающих программ по Кассандре» . Проверено 8 февраля 2015 г.
- Бушик, Сергей (22 октября 2012 г.). «Независимое от поставщика сравнение баз данных NoSQL: Cassandra, HBase, MongoDB, Riak» . Сетевой Мир . Фрамингем, Массачусетс, США и Стейнс, Миддлсекс, Великобритания: IDG . Архивировано из оригинала 28 мая 2014 г. Проверено 17 июня 2014 г.
- программное обеспечение 2008 года
- Фонд программного обеспечения Apache
- Проекты Apache Software Foundation
- Продукты больших данных
- Реализации Bigtable
- Программное обеспечение столбцово-ориентированной СУБД для Linux
- Распределенные хранилища данных
- программное обеспечение Facebook
- Бесплатные системы управления базами данных
- NoSQL
- Структурированное хранилище