Организация Apache Software Foundation представила релиз распределённой СУБД Apache Cassandra 3.0, относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, хранимых в форме ассоциативного массива (хэша). Код проекта написан на языке Java и распространяется в рамках лицензии Apache 2.0. Изначально СУБД Cassandra была разработана в недрах компании Facebook и в 2009 году передана под покровительство фонда Apache. Промышленные решения на базе Cassandra, хранящие сотни терабайт данных, охватывающие сотни серверов и способные обрабатывать тысячи запросов в секунду, развернуты для обеспечения сервисов таких компаний и организаций, как Adobe, CERN, Cisco, IBM, HP, Comcast, Disney, eBay, Netflix, Sony, Rackspace, Reddit и Twitter.

Основные новшества:

  • Поддержка материализованных представлений, позволяющих сформировать виртуальную таблицу на основе произвольного CQL-запроса, содержимое которой не генерируется на лету как в обычных представлениях, а кэшируется между запросами в форме индекса. Материализованное представление может применяться в качестве более эффективной альтернативы вторичным индексам для запросов по непервичным ключам, денормализация данных с разных узлов в которой выполняется на стороне сервера;
  • Полностью переработан механизм хранения информации о репликах для сбойных узлов ("hinted handoff"), вместо одного файла system.hints хинты теперь записываются в отдельные файлы, что значительно увеличивает эффективность диспетчеризации;
  • Поддержка режима EACH_QUORUM для обеспечения заданного уровня согласованности для запросов на чтение;
  • Поддержка ограничения выборки любых компонентов ключей раздела или кластера через выражение "IN" в директивах UPDATE и DELETE;
  • В директиву DELETE добавлена поддержка отсеивания одно- или многостолбцовых слайсов при помощи операторов ">", ">=", "<=" и "<";
  • В команде "nodetool rebuild_index" теперь можно указывать индекс, без необходимости указания связанной с ним таблицы;
  • Повышена эффективность хранения данных, что привело к экономии места в хранилище в среднем на 50%;
  • Обеспечен вывод предупреждений в лог, если операция сборки мусора выполняется дольше 1000мс.

СУБД Cassandra объединяет в себе полностью распределённую hash-систему Dynamo, обеспечивающую практически линейную масштабируемость при увеличении объема данных. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности. Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language), напоминающий SQL, но урезанный по функциональности. Из возможностей можно отметить поддержку пространств имён и семейств столбцов, создание индексов через выражение "CREATE INDEX".

СУБД позволяет создавать устойчивые к сбоям хранилища: помещаемые в БД данные автоматически реплицируются на несколько узлов распределённой сети, которая может охватывать разные центры обработки данных. При сбое узла, его функции на лету подхватываются другими узлами. Добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурирования других узлов. Драйверы с поддержкой CQL подготовлены для языков Python, Java (JDBC/DBAPI2), Ruby, PHP, C++ и JavaScript (Node.js).

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