Организация Apache Software Foundation представила [3] релиз распределённой БД Apache Cassandra 1.1.0 [4], относящейся к классу noSQL-систем и рассчитанной на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша. Изначально проект был разработан в недрах Facebook и в 2009 году передан под покровительство фонда Apache. Промышленные решения на базе Cassandra развернуты для обеспечения сервисов таких компаний, как Adobe, Cisco, IBM, Rackspace и Twitter. Наиболее крупный кластер серверов, обслуживающих единую БД Cassandra, размер данных в которой превышает 300 Тб, насчитывает более 400 машин.
БД Cassandra написана на языке Java и объединяет в себе полностью распределённую hash-систему Dynamo, обеспечивающую практически линейную масштабируемость при увеличении объема данных. Cassandra использует модель хранения данных на базе семейства столбцов (ColumnFamily), отличающуюся от систем подобных memcachedb, которые хранят данные только в связке ключ/значение, возможностью организовать хранение хэшей с несколькими уровнями вложенности. Cassandra относится к категории хранилищ повышенно устойчивых к сбоям: помещаемые в БД данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются по нескольким дата-центрам. При сбое узла, его функции на лету подхватываются другими узлами. Добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурирования других узлов.
Для упрощения взаимодействия с БД поддерживается язык формирования структурированных запросов CQL [5] (Cassandra Query Language), на первый взгляд напоминающий SQL, но существенно урезанный по функциональности. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию, но без поддержки сортировки и группировки. Добавление и обновление данных производится через единое выражение UPDATE, операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся). Из возможностей можно отметить поддержку пространств имён и семейств столбцов, создание индексов через выражение "CREATE INDEX". Драйверы с поддержкой CQL подготовлены для языков Python [6], Java [7] (JDBC/DBAPI2) и JavaScript [7] (Node.js).
Улучшения [8], представленные [9] в новой версии:
Ссылки:
[1] http://htfl.ru/cat-news-apache
[2] http://htfl.ru/cat-news-novosti-po
[3] /out.php?link=https://blogs.apache.org/foundation/entry/the_apache_software_foundation_announces26
[4] /out.php?link=http://cassandra.apache.org/
[5] /out.php?link=http://crlog.info/2011/03/29/cassandra-query-language-aka-cql-syntax/
[6] /out.php?link=http://www.apache.org/dist/cassandra/drivers
[7] /out.php?link=https://github.com/racker/node-cassandra-client
[8] /out.php?link=http://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob_plain;f=NEWS.txt;hb=refs/tags/cassandra-1.1.0
[9] /out.php?link=http://www.mail-archive.com/user%40cassandra.apache.org/msg21957.html
[10] /out.php?link=http://www.datastax.com/dev/blog/whats-new-in-cql-3-0
[11] /out.php?link=http://www.datastax.com/dev/blog/row-level-isolation
[12] /out.php?link=http://www.datastax.com/dev/blog/the-schema-management-renaissance
[13] /out.php?link=http://www.datastax.com/dev/blog/whats-new-in-cassandra-1-1-flexible-data-file-placement