stringtranslate.com

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

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

История

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

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

Функции

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

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

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

Cassandra классифицируется как система AP (доступность и устойчивость к разделам), которая делает акцент на доступности и устойчивости к разделам, а не на согласованности. Она также предлагает настраиваемые уровни согласованности для операций чтения и записи. Кроме того, Cassandra интегрируется с Hadoop , поддерживая MapReduce , Apache Pig и Apache Hive , и предлагает язык запросов Cassandra (CQL) для упрощенного доступа к данным. Окончательная согласованность управляется с помощью надгробий для чтения, обновления, вставки и удаления.

Язык запросов Cassandra

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

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

СОЗДАТЬ ПРОСТРАНСТВО КЛЮЧЕЙ MyKeySpace С РЕПЛИКАЦИЕЙ = { 'class' : 'SimpleStrategy' , 'replication_factor' : 3 } ;             ИСПОЛЬЗОВАТЬ MyKeySpace ; СОЗДАТЬ COLUMNFAMILY MyColumns ( id текст , lastName текст , firstName текст , PRIMARY KEY ( id ));          ВСТАВИТЬ В MyColumns ( id , lastName , firstName ) ЗНАЧЕНИЯ ( '1' , 'Doe' , 'John' );         ВЫБРАТЬ * ИЗ МоиКолонки ;   

Что дает:

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

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

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

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

Надгробия

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

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

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

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

Cassandra не может выполнять соединения или подзапросы . Вместо этого Cassandra делает акцент на денормализации с помощью таких функций, как коллекции. [18]

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

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

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

Cassandra — это система на основе Java, которую можно контролировать и управлять ею с помощью Java Management Extensions (JMX). Например, совместимая с JMX утилита Nodetool может использоваться для управления кластером Cassandra. [20] Nodetool также предлагает ряд команд для возврата метрик Cassandra, относящихся к использованию диска, задержке, сжатию, сборке мусора и т. д. [21]

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

Релизы

После окончания обучения в вузе будут выпущены:

Смотрите также

Ссылки

  1. ^ https://github.com/apache/cassandra/releases/tag/cassandra-5.0.2. {{cite web}}: Отсутствует или пусто |title=( помощь )
  2. ^ Casares, Joaquin (5 ноября 2012 г.). "Multi-datacenter Replication in Cassandra". DataStax . Получено 25 июля 2013 г. Врожденные концепции центров обработки данных Cassandra важны, поскольку они позволяют запускать несколько рабочих нагрузок в нескольких центрах обработки данных...
  3. ^ "Обзор документации Apache Cassandra" . Получено 21 января 2021 г. .
  4. Гамильтон, Джеймс (12 июля 2008 г.). «Facebook выпускает Cassandra как Open Source» . Получено 4 июня 2009 г.
  5. ^ "Это теперь в тренде?". Mail-archive.com. 2 марта 2009 г. Архивировано из оригинала 25 апреля 2010 г. Получено 29 марта 2010 г.
  6. ^ "Cassandra is an Apache top level project". Mail-archive.com. 18 февраля 2010 г. Архивировано из оригинала 28 марта 2010 г. Получено 29 марта 2010 г.
  7. ^ "Значение имени Apache Cassandra". Архивировано из оригинала 1 ноября 2016 г. Получено 19 июля 2016 г. Apache Cassandra названа в честь греческой мифологической пророчицы Кассандры. [...] Из-за ее красоты Аполлон даровал ей способность пророчества. [...] Когда Кассандра из Трои отказала Аполлону, он наложил на нее проклятие, чтобы все ее предсказания и предсказания ее потомков не были приняты во внимание. [...] Кассандра — проклятый Оракул[.]
  8. ^ "DataStax C/C++ Driver for Apache Cassandra". DataStax . Получено 15 декабря 2014 г. .
  9. ^ "CQL". Архивировано из оригинала 13 января 2016 года . Получено 5 января 2016 года .
  10. ^ "WAT - Cassandra: Согласованность на уровне строк #$@&%*! - datanerds.io". datanerds.io . Архивировано из оригинала 26 ноября 2016 г. Получено 28 ноября 2016 г.
  11. ^ Лебрен, Сильвен (21 февраля 2012 г.). «В Cassandra 1.1 появится: изоляция на уровне строк». DataStax: постоянно доступная платформа данных | NoSQL | Apache Cassandra . Получено 18 июля 2018 г.
  12. ^ "Удалить скрипты Windows". Cassandra issue tracker . 4 апреля 2023 г. Получено 4 апреля 2023 г.
  13. ^ Родригес, Ален (27 июля 2016 г.). «О удалениях и надгробиях в Кассандре».
  14. ^ DataStax (15 января 2013 г.). "О согласованности данных". Архивировано из оригинала 26 июля 2013 г. Получено 25 июля 2013 г.
  15. ^ Эллис, Джонатан (15 февраля 2012 г.). "Schema in Cassandra 1.1". DataStax . Получено 25 июля 2013 г. .
  16. ^ Эллис, Джонатан (3 декабря 2010 г.). "Что нового в Cassandra 0.7: Вторичные индексы". DataStax . Получено 25 июля 2013 г. .
  17. ^ Эллис, Джонатан (2 марта 2012 г.). «Возрождение управления схемами в Cassandra 1.1». DataStax . Получено 25 июля 2013 г.
  18. ^ Lebresne, Sylvain (5 августа 2012 г.). "Coming in 1.2: Collections support in CQL3". DataStax . Получено 25 июля 2013 г. .
  19. ^ DataStax. "Apache Cassandra 0.7 Documentation - Column Families". Apache Cassandra 0.7 Documentation . Получено 29 октября 2012 г. .
  20. ^ "NodeTool". Cassandra Wiki . Архивировано из оригинала 13 января 2016 года . Получено 5 января 2016 года .
  21. ^ "Как отслеживать показатели производительности Cassandra". Datadog. 3 декабря 2015 г. Получено 5 января 2016 г.
  22. ^ "Метрики". Cassandra Wiki . Архивировано из оригинала 12 ноября 2015 г. Получено 5 января 2016 г.
  23. ^ "Мониторинг". Документация Cassandra . Получено 1 февраля 2018 г.
  24. ^ "Cassandra Server Releases". cassandra.apache.org . Получено 15 декабря 2015 г. .

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

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