Организация 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 подготовлены для языков Python, Java (JDBC/DBAPI2) и JavaScript (Node.js).

Улучшения, представленные в новой версии:

  • Переработан процесс обновления схемы данных и реализована поддержка автоматического разрешения конфликтов при возникновении одновременных обновлений;
  • Значительно расширен язык формирования запросов CQL (Cassandra Query Language), осуществлён переход на обратно не совместимую версию CQL 3.0, но оставлена поддержка и старой версии CQL 2.0, которая пока используется по умолчанию (для включения CQL 3.0 следует использовать опцию "--cql3"). Основные изменения в CQL 3.0 касаются поддержки использования составных ключей для упрощения денормализации;
  • Изоляция выполнения обновлений на уровне строк. Многостолбцовые обновления теперь выполняются не только атомарно, но и изолированно на уровне отдельных строк, т.е. теперь пользователь увидит сразу все изменения, а не как раньше, имеет шанс прочитать смесь старых и новых данных;
  • Реализованы средства для гибкого управления размещением данных по директориям, которые позволяют вынести хранение семейства столбцов (ColumnFamily) на отдельных раздел, например, на более быстрый SSD-накопитель;
  • Упрощена конфигурация кэшей столбцов и ключей, которые отныне являются глобальными .


Источник: http://www.opennet.ru/opennews/art.shtml?num=33676