Apache Cassandra
- 1 year ago
- 0
- 0
Apache Cassandra — распределённая система управления базами данных , относящаяся к классу NoSQL -систем и расчитанная на создание высокомасштабируемых и надёжных хранилищ огромных массивов данных, представленных в виде хэша.
Изначально проект был разработан в недрах Facebook, в 2009 году передан под крыло фонда Apache Software Foundation , и теперь эта организация продолжает развитие проекта. Промышленные решения на базе Cassandra развёрнуты для обеспечения сервисов таких компаний как Cisco , IBM , , Reddit , Digg , Rackspace , Huawei , Netflix , Apple , Instagram , GitHub , Twitter и Spotify . К 2011 году крупнейший кластер серверов, обслуживающий единую базу данных под управлением Cassandra, насчитывал более 400 машин и содержал данные размером более 300 ТБ .
Apache Cassandra написана на языке Java , реализует распределённую хэш-систему, сходную с DynamoDB , что обеспечивает практически линейную масштабируемость при увеличении объёма данных. Использует модель хранения данных на базе семейства столбцов , чем отличается от систем подобных , которые хранят данные только в связке « ключ — значение »; имеет возможностью организовать хранение хэшей с несколькими уровнями вложенности. Относится к категории отказоустойчивых СУБД: помещённые в базу данные автоматически реплицируются на несколько узлов распределённой сети или даже равномерно распределяются в нескольких дата-центрах. При сбое узла его функции на лету подхватываются другими узлами, добавление новых узлов в кластер и обновление версии Cassandra производится на лету, без дополнительного ручного вмешательства и переконфигурации других узлов. Тем не менее настоятельно рекомендуется заново сгенерировать ключи (метки) для каждого узла, включая существующие, чтобы сохранить качество распределения нагрузки. Генерации ключей для существующих узлов можно избежать в случае кратного увеличения количества узлов (в 2 раза, в 3 раза и так далее).
Для упрощения взаимодействия с базой данных поддерживается язык формирования структурированных запросов
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 реализован в СУБД , которая архитектурно и лингвистически повторяет систему Cassandra, но написана на C++ с целью повышения показателей производительности.