Apache Cassandra
Apache Cassandra — распределённая система управления базами данных, относящаяся к классу NoSQL-систем и рассчитанная на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша.
Apache Cassandra | |
---|---|
Тип | NoSQL |
Автор | Авинаш Лакшман[d] и Прашант Малик[d] |
Разработчик | Apache Software Foundation |
Написана на | Java[1] |
Первый выпуск | 2008 и 10 апреля 2012[1] |
Последняя версия |
|
Лицензия | Apache License 2.0 |
Сайт | cassandra.apache.org |
Медиафайлы на Викискладе |
Изначально проект был разработан в недрах Facebook и в 2009 году передан под крыло фонда Apache Software Foundation, эта организация продолжает развитие проекта. Промышленные решения на базе Cassandra развёрнуты для обеспечения сервисов таких компаний, как Cisco, IBM, Cloudkick, Reddit, Digg, Rackspace, Huawei, Netflix, Apple, Instagram, GitHub, Twitter и Spotify. К 2011 году крупнейший кластер серверов, обслуживающий единую базу данных под управлением Cassandra, насчитывал более 400 машин и содержал данные размером более 300 ТБ[3].
Написана на языке 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++ с целью повышения показателей производительности.
Примечания
Ссылки
- Avinash Lakshman. Cassandra - A structured storage system on a P2P Network . Engineering @ Facebook's Notes (25 августа 2008). Дата обращения: 4 июня 2009.
- Project Website
- Project Wiki
- Adopting Apache Cassandra presented by Eben Hewitt on December 1, 2010
- Presentation on Cassandra at SIGMOD 2008
- Introduction to Cassandra at FOSDEM 2010
- LADIS 2009 WhitePaper by the original contributors Avinash Lakshman & Prashant Malik
- Cassandra Articles on NoSQLDatabases.com
- Cassandra News and Articles on myNoSQL
- Cassandra @ Twitter: an Interview with Ryan King
- Presentation on RDBMS vs. Dynamo, BigTable, and Cassandra
- RPM build for the apache cassandra project
Литература
- Карпентер Дж., Хьюитт Э. Cassandra. Полное руководство = Cassandra: The Definitive Guide. — ДМК-Пресс, 2016. — 400 с. — ISBN 978-5-97060-453-3.