Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Общий конспект по Технологии анализа и обработ...docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
2.66 Mб
Скачать
  1. Субд Cassandra

Сassandra — децентрализованная, отказоустойчивая и надёжная база данных “ключ-значение”. Хранилище само позаботится о проблемах наличия единой точки отказа (single point of failure), отказа серверов и о распределении данных между узлами кластера (cluster node). При чем, как в случае размещения серверов в одном центре обработки данных(data center), так и в конфигурации со многими центрами обработки данных, разделенных расстояниями и, соответственно, сетевыми задержками. Под надёжностью понимается итоговая согласованность(eventual consistency) данных с возможностью установки уровня согласования данных (tune consistency) каждого запроса.

В терминологии кассандры приложение работает с пространством ключей (keyspace), что соответствует понятию схемы базы данных (database schema) в реляционной модели. В этом пространстве ключей могут находиться несколько колоночных семейств (column family), что соответствует понятию реляционной таблицы. В свою очередь, колоночные семейства содержат колонки (column), которые объединяются при помощи ключа (row key) в записи (row). Колонка состоит из трех частей: имени (column name), метки времени (timestamp) и значения (value). Колонки в пределах записи упорядочены. В отличие от реляционной БД, никаких ограничений на то, чтобы записи (а в терминах БД это строки) содержали колонки с такими же именами как и в других записях — нет. Колоночные семейства могут быть нескольких видов, но в этой статье мы будем опускать эту детализацию. Также в последних версиях кассандры появилась возможность выполнять запросы определения и изменения данных (DDLDML) при помощи языкаCQL, а также создавать вторичные индексы (secondary indices).

Конкретное значение, хранимое в кассандре идентифицируется:

пространством ключей — это привязка к приложению (предметной области). Позволяет на одном кластере размещать данные разных приложений;

колоночным семейством — это привязка к запросу;

ключом — это привязка к узлу кластера. От ключа зависит на какие узлы попадут сохранённые колонки;

именем колонки — это привязка к атрибуту в записи. Позволяет в одной записи хранить несколько значений.

Преимущества СУБД Cassandra 0.7:

поддержка так называемых вторичных индексов, которые имеют более оптимальный механизм взаимодействия клиента и сервера в момент обращения к данным;

возможность создания до 2 млрд столбцов в ряду;

автоматическое изменение данных (на уровне API) без перезапуска всего кластера;

максимальный кластер Cassandra включает 400 машин.

Данную СУБД уже активно используют на своих мега-произодительных супер-серверах такие всемирно-известные компании, как Cisco, Cloudkick, Digg, Facebook, Rackspace, Reddit и Twitter.

Применение на данном этапе:

Apache Cassandra является неотъемлемой компонентой проектирования и создания облачных систем, а также других приложений, обрабатывающих большие наборы данных. Дальнейшая перспектива просматривается в применении СУБД для высокопроизводительных web-сайтов, в частности соц. сетей с большой  базой пользователей. Apache Cassandra, как и следовало ожидать, имеет лицензию Apache Software Licencse 2.0.

Организация Apache Software Foundation представила релиз распределённой БД Apache Cassandra 1.1.0, относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша. Изначально проект был разработан в недрах Facebook и в 2009 году передан под покровительство фонда Apache. Промышленные решения на базе Cassandra развернуты для обеспечения сервисов таких компаний, как Adobe, Cisco, IBM, Rackspace и Twitter. Наиболее крупный кластер серверов, обслуживающих единую БД Cassandra, размер данных в которой превышает 300 Тб, насчитывает более 400 машин.

БД Cassandra написана на языке Java и объединяет в себе полностью распределённую hash-систему Dynamo, обеспечивающую практически линейную масштабируемость при увеличении объема данных. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности. Cassandra относится к категории хранилищ повышенно устойчивых к сбоям: помещаемые в БД данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются по нескольким дата-центрам. При сбое узла, его функции на лету подхватываются другими узлами. Добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурирования других узлов.

Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language), на первый взгляд напоминающий SQL, но существенно урезанный по функциональности. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию, но без поддержки сортировки и группировки. Добавление и обновление данных производится через единое выражение UPDATE, операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся). Из возможностей можно отметить поддержку пространств имён и семейств столбцов, создание индексов через выражение "CREATE INDEX". Драйверы с поддержкой CQL подготовлены для языков PythonJava (JDBC/DBAPI2) и JavaScript (Node.js).

В наи­боль­шей сте­пе­ни пре­иму­ще­ства Cassandra про­явят­ся при ис­поль­зо­ва­нии в ос­но­ве круп­ных сай­тов, ха­рак­те­ри­зу­ю­щих­ся вы­со­ки­ми тем­па­ми роста посещаемости».

Cassandra ис­поль­зу­ет­ся в ряде по­пу­ляр­ных веб-сер­висов, таких как Digg, Twitter и Facebook (ком­па­ния Facebook яв­ля­ет­ся од­но­вре­мен­но раз­ра­бот­чи­ком тех­но­ло­гии, по­ло­жен­ной в ос­но­ву СУБД). Как утвер­жда­ют ав­то­ры про­ек­та, самый круп­ный на се­год­ня кла­стер с Cassandra со­сто­ит более чем из 400 серверов.

В преды­ду­щих вер­си­ях СУБД огра­ни­че­ния на ко­ли­че­ство столб­цов в стро­ке не было, од­на­ко пре­дель­ный раз­мер каж­дой стро­ки со­став­лял около 2 Гбайт. В Cassandra 0.7 это огра­ни­че­ние устранено.

Бла­го­да­ря под­держ­ке боль­ших строк си­сте­мы поль­зо­ва­те­ли Cassandra смо­гут «на лету» со­зда­вать прак­ти­че­ски неогра­ни­чен­ное ко­ли­че­ство столб­цов, утвер­жда­ет Эллис.

По­сколь­ку Cassandra не под­дер­жи­ва­ет об­ра­бот­ку SQL-за­про­сов, до­пол­ни­тель­ные столб­цы необ­хо­ди­мы для ана­ли­за дан­ных внут­ри кон­крет­ной стро­ки, от­ме­тил в блоге Мак­сим Гри­нев, на­уч­ный со­труд­ник Выс­шей тех­ни­че­ской школы Цюриха.

В числе дру­гих новых осо­бен­но­стей Cassandra 0.7 — под­держ­ка вто­рич­ных ин­дек­сов, бла­го­да­ря ко­то­рой обес­пе­чи­ва­ет­ся про­стой спо­соб опро­са дан­ных на ло­каль­ных ма­ши­нах, и воз­мож­ность вно­сить из­ме­не­ния в схему базы дан­ных без пе­ре­за­пус­ка всего кластера.

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

Ис­ход­ный ва­ри­ант Cassandra был раз­ра­бо­тан про­грам­ми­ста­ми Facebook для ис­поль­зу­е­мо­го в со­ци­аль­ной сети ме­ха­низ­ма по­ис­ка по вхо­дя­щим со­об­ще­ни­ям. Ввиду по­треб­но­сти в управ­ле­нии боль­ши­ми объ­е­ма­ми дан­ных в Facebook ре­ши­ли вос­поль­зо­вать­ся ар­хи­тек­ту­рой Google Big Table, по­сколь­ку на ее ос­но­ве можно было со­здать строч­но-столб­цо­вую СУБД, спо­соб­ную ра­бо­тать на мно­же­стве узлов.

Недо­ста­ток ме­ха­низ­ма Big Table со­сто­ял в том, что эта ар­хи­тек­ту­ра опи­ра­ет­ся на ма­стер-узел, объ­яс­нил Эллис в ин­тер­вью Служ­бе но­во­стей IDG на кон­фе­рен­ции ApacheCon в но­яб­ре про­шло­го года. Вся ра­бо­та Big Table за­ви­сит от един­ствен­но­го узла, ко­то­рый ко­ор­ди­ни­ру­ет опе­ра­ции чте­ния и за­пи­си, вы­пол­ня­е­мые всеми осталь­ны­ми уз­ла­ми. Если он дает сбой, вся си­сте­ма ста­но­вит­ся нера­бо­то­спо­соб­ной, ука­зал Эллис.

По­это­му в ос­но­ве Cassandra ис­поль­зу­ет­ся ги­брид из Big Table и раз­ра­бо­тан­ной в Amazon ар­хи­тек­ту­ры Dynamo. Бла­го­да­ря по­след­ней уда­лось устра­нить уяз­ви­мое звено в виде го­лов­но­го узла, обес­пе­чив при этом про­сто­ту мас­шта­би­ро­ва­ния си­сте­мы. Ар­хи­тек­ту­ра Dynamo не пред­по­ла­га­ет на­ли­чия го­лов­но­го узла. Любой узел может при­ни­мать дан­ные для всей си­сте­мы и от­ве­чать на за­про­сы. Дан­ные при этом ти­ра­жи­ру­ют­ся между мно­же­ством хостов.

Cassandra — не един­ствен­ная кла­сте­ри­зо­ван­ная СУБД, со­здан­ная с ис­поль­зо­ва­ни­ем идей Big Table и Dynamo. На­чи­на­ю­щая ком­па­ния Cloudant на ос­но­ве ана­ло­гич­ных тех­но­ло­гий раз­ра­бо­та­ла кла­сте­ри­зо­ван­ную вер­сию СУБД с от­кры­тым кодом CouchDB — BigCouch. Со­всем недав­но ком­па­ния объ­яви­ла, что ко­ли­че­ство поль­зо­ва­те­лей раз­ме­ща­е­мой вер­сии BigCouch до­стиг­ло 2,5 тыс.