stringtranslate.com

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

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

История

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

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

Релизы

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

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

Распределенный
Каждый узел в кластере имеет одну и ту же роль. Не существует единой точки отказа. Данные распределены по кластеру (поэтому каждый узел содержит разные данные), но нет главного узла, поскольку каждый узел может обслуживать любой запрос.
Поддерживает репликацию и репликацию в нескольких центрах обработки данных.
Стратегии репликации настраиваются. [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]

СОЗДАТЬ ПРОСТРАНСТВО КЛАВИШ MyKeySpace С РЕПЛИКАЦИЕЙ = { 'class' : 'SimpleStrategy' , 'replication_factor' : 3 } ;             ИСПОЛЬЗОВАТЬ MyKeySpace ; CREATE COLUMNFAMILY MyColumns ( текст идентификатора , текст последнего имени , текст имени , ПЕРВИЧНЫЙ КЛЮЧ ( id ));          INSERT INTO MyColumns ( id , LastName , FirstName ) ЗНАЧЕНИЯ ( '1' , 'Доу' , 'Джон' );         ВЫБРАТЬ * ИЗ MyColumns ;   

Который дает:

идентификатор | фамилия | имя----+----------+---------- 1 | Доу | Джон(1 ряд)

Известные вопросы

До 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. ^ Ошибка: невозможно правильно отобразить ссылку. Подробности смотрите в документации .
  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. ^ «Фонд программного обеспечения Apache объявляет о выпуске Apache Cassandra 0.6: Блог Фонда программного обеспечения Apache» . 13 апреля 2010 года . Проверено 5 января 2016 г.
  9. ^ «Фонд программного обеспечения Apache объявляет об Apache Cassandra 0.7: Блог Фонда программного обеспечения Apache» . 11 января 2011 года . Проверено 5 января 2016 г.
  10. ^ Эрик Эванс. «[Пользователь Cassandra] [РЕЛИЗ] 0.8.0». Архивировано из оригинала 8 июня 2015 года . Проверено 5 января 2016 г.
  11. ^ «Кассандра 1.0.0. Готова к использованию на предприятии» . ИнфоQ . Проверено 5 января 2016 г.
  12. ^ «Фонд программного обеспечения Apache объявляет об Apache Cassandra™ v1.1: Блог Фонда программного обеспечения Apache» . 24 апреля 2012 года . Проверено 5 января 2016 г.
  13. ^ «Фонд программного обеспечения Apache объявляет об Apache Cassandra™ v1.2: Блог Фонда программного обеспечения Apache» . 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. ^ ab DataStax (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 - Кассандра: согласованность на уровне строк #$@&%*! - 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. ^ "NodeTool". Кассандра Вики . Архивировано из оригинала 13 января 2016 года . Проверено 5 января 2016 г.
  33. ^ «Как отслеживать показатели производительности Cassandra» . Датадог. 3 декабря 2015 года . Проверено 5 января 2016 г.
  34. ^ «Метрики». Кассандра Вики . Архивировано из оригинала 12 ноября 2015 года . Проверено 5 января 2016 г.
  35. ^ «Мониторинг». Документация Кассандры . Проверено 1 февраля 2018 г.

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

Внешние ссылки