Материал из РУВИКИ — свободной энциклопедии

Apache Cassandra

Apache Cassandra
Логотип программы Apache Cassandra
Скриншот программы Apache Cassandra
Тип NoSQL
Автор Авинаш Лакшман[d] и Прашант Малик[d]
Разработчик Apache Software Foundation
Написана на Java[3]
Операционные системы Linux и Unix-подобная операционная система
Первый выпуск июль 2008[1]
Последняя версия
Репозиторий gitbox.apache.org/repos/…
github.com/apache/cassan…
git-wip-us.apache.org/re…
Лицензия Apache License 2.0[4]
Сайт cassandra.apache.org (англ.)
Логотип РУВИКИ.Медиа Медиафайлы на РУВИКИ.Медиа

Apache Cassandra — распределённая система управления базами данных, относящаяся к классу NoSQL-систем и расчитанная на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша.

Изначально проект был разработан в недрах Facebook, в 2009 году передан под крыло фонда Apache Software Foundation, и теперь эта организация продолжает развитие проекта. Промышленные решения на базе Cassandra развёрнуты для обеспечения сервисов таких компаний как Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace, Huawei, Netflix, Apple, Instagram, GitHub, Twitter и Spotify. К 2011 году крупнейший кластер серверов, обслуживающий единую базу данных под управлением Cassandra, насчитывал более 400 машин и содержал данные размером более 300 ТБ[5].

Apache Cassandra написана на языке Java, реализует распределённую хэш-систему, сходную с DynamoDB, что обеспечивает практически линейную масштабируемость при увеличении объёма данных. Использует модель хранения данных на базе семейства столбцов, чем отличается от систем подобных MemcacheDB, которые хранят данные только в связке «ключ — значение»; имеет возможностью организовать хранение хэшей с несколькими уровнями вложенности. Относится к категории отказоустойчивых СУБД: помещённые в базу данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются в нескольких дата-центрах. При сбое узла его функции на лету подхватываются другими узлами, добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурации других узлов. Тем не менее настоятельно рекомендуется заново сгенерировать ключи (метки) для каждого узла, включая существующие, чтобы сохранить качество распределения нагрузки. Генерации ключей для существующих узлов можно избежать в случае кратного увеличения количества узлов (в 2 раза, в 3 раза и так далее).

CQL[править | править код]

Для упрощения взаимодействия с базой данных поддерживается язык формирования структурированных запросов CQL (Cassandra Query Language), который в какой-то степени сходен с SQL, но существенно урезан по функциональным возможностям. Например, можно выполнять только простейшие запросы SELECT с выборкой по определённому условию. Добавление и обновление осуществляется через единое выражение UPDATE, операция INSERT отсутствует (если записи нет, при выполнении UPDATE она создаётся — используется семантика SQL-оператора MERGE). Из отличительных возможностей — поддержка пространств имён и семейств столбцов, создание индексов через выражение «CREATE INDEX». Драйверы с поддержкой CQL реализованы для языков Python (DBAPI2), Java (JDBC), Ruby (gem cassandra-cql), PHP (Thrift, cassandra-pdo, Cassandra-PHP-Client-Library), JavaScript (Node.js) и Perl (DBD::Cassandra).

Кроме того, CQL реализован в СУБД Scylla, которая архитектурно и лингвистически повторяет систему Cassandra, но написана на C++ с целью повышения показателей производительности.

Примечания[править | править код]

Ссылки[править | править код]

Литература[править | править код]

  • Карпентер Дж., Хьюитт Э. Cassandra. Полное руководство = Cassandra: The Definitive Guide. — ДМК-Пресс, 2016. — 400 с. — ISBN 978-5-97060-453-3.