Apache Cassandra
Apache Cassandra — распределённая система управления базами данных, относящаяся к классу NoSQL-систем и расчитанная на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша.
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 (англ.) |
Медиафайлы на Викискладе |
Изначально проект был разработан в недрах 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[en], которые хранят данные только в связке «ключ — значение»; имеет возможностью организовать хранение хэшей с несколькими уровнями вложенности. Относится к категории отказоустойчивых СУБД: помещённые в базу данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются в нескольких дата-центрах. При сбое узла его функции на лету подхватываются другими узлами, добавление новых узлов в кластер и обновление версии 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[en], которая архитектурно и лингвистически повторяет систему Cassandra, но написана на C++ с целью повышения показателей производительности.
ПримечанияПравить
- ↑ https://cwiki.apache.org/confluence/display/INCUBATOR/March2009
- ↑ https://github.com/apache/cassandra/releases/tag/cassandra-4.1.0
- ↑ https://projects.apache.org/json/projects/cassandra.json
- ↑ https://cassandra.apache.org/_/download.html
- ↑ Релиз БД Apache Cassandra 1.0 (неопр.). Дата обращения: 14 января 2012. Архивировано 23 октября 2011 года.
СсылкиПравить
- 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.